func TestPutUser(t *testing.T) { key, err := auth.GeneratePrivateKey(1024) if err != nil { t.Fatal("Error generating private key:", err) } pubKeyString, err := auth.StringForPublicKey(&key.PublicKey) if err != nil { t.Fatal("Error serializing public key:", err) } user := datastore.User{ PublicKey: pubKeyString, DeviceId: "some-id", Latitude: 5.0, Longitude: 6.0, } if err := user.Create(); err != nil { t.Fatal("Error creating user:"******"updated-key", } jsonBytes, err := json.Marshal(updatedUser) if err != nil { t.Fatal("Error marshaling user:"******"Error generating API token:", err) } resp := httptest.NewRecorder() uri := fmt.Sprintf("/users/%s", user.Id) req, err := http.NewRequest("PUT", uri, bytes.NewBuffer(jsonBytes)) req.Header.Add("X-API-Token", token) http.DefaultServeMux.ServeHTTP(resp, req) if resp.Code != 200 { t.Fatal("Expected 200 on user create but got", resp.Code) } p, err := ioutil.ReadAll(resp.Body) if err != nil { t.Fatal(err) } var parsedUser datastore.User if err := json.Unmarshal(p, &parsedUser); err != nil { t.Fatal(err) } if parsedUser.Id == "" { t.Error("Error: parsed user has no ID") } if parsedUser.PublicKey != updatedUser.PublicKey { t.Error("Error: expected public key", updatedUser.PublicKey, "but got", parsedUser.PublicKey) } if err := user.Delete(); err != nil { t.Error("Error deleting user", err) } }