auth_test.go 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. package testserver
  2. import (
  3. "bytes"
  4. "context"
  5. "encoding/json"
  6. "testing"
  7. "github.com/pkg/errors"
  8. "github.com/stretchr/testify/require"
  9. "github.com/usememos/memos/api"
  10. apiv1 "github.com/usememos/memos/api/v1"
  11. )
  12. func TestAuthServer(t *testing.T) {
  13. ctx := context.Background()
  14. s, err := NewTestingServer(ctx, t)
  15. require.NoError(t, err)
  16. defer s.Shutdown(ctx)
  17. signup := &apiv1.SignUp{
  18. Username: "testuser",
  19. Password: "testpassword",
  20. }
  21. user, err := s.postAuthSignup(signup)
  22. require.NoError(t, err)
  23. require.Equal(t, signup.Username, user.Username)
  24. }
  25. func (s *TestingServer) postAuthSignup(signup *apiv1.SignUp) (*api.User, error) {
  26. rawData, err := json.Marshal(&signup)
  27. if err != nil {
  28. return nil, errors.Wrap(err, "failed to marshal signup")
  29. }
  30. reader := bytes.NewReader(rawData)
  31. body, err := s.post("/api/v1/auth/signup", reader, nil)
  32. if err != nil {
  33. return nil, errors.Wrap(err, "fail to post request")
  34. }
  35. buf := &bytes.Buffer{}
  36. _, err = buf.ReadFrom(body)
  37. if err != nil {
  38. return nil, errors.Wrap(err, "fail to read response body")
  39. }
  40. user := &api.User{}
  41. if err = json.Unmarshal(buf.Bytes(), user); err != nil {
  42. return nil, errors.Wrap(err, "fail to unmarshal post signup response")
  43. }
  44. return user, nil
  45. }