Exemplo n.º 1
0
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)
	}
}