auth_test.go 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  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. apiv1 "github.com/usememos/memos/api/v1"
  10. )
  11. func TestAuthServer(t *testing.T) {
  12. ctx := context.Background()
  13. s, err := NewTestingServer(ctx, t)
  14. require.NoError(t, err)
  15. defer s.Shutdown(ctx)
  16. signup := &apiv1.SignUp{
  17. Username: "testuser",
  18. Password: "testpassword",
  19. }
  20. user, err := s.postAuthSignUp(signup)
  21. require.NoError(t, err)
  22. require.Equal(t, signup.Username, user.Username)
  23. signin := &apiv1.SignIn{
  24. Username: "testuser",
  25. Password: "testpassword",
  26. }
  27. user, err = s.postAuthSignIn(signin)
  28. require.NoError(t, err)
  29. require.Equal(t, signup.Username, user.Username)
  30. err = s.postSignOut()
  31. require.NoError(t, err)
  32. _, err = s.getCurrentUser()
  33. require.Error(t, err)
  34. }
  35. func (s *TestingServer) postAuthSignUp(signup *apiv1.SignUp) (*apiv1.User, error) {
  36. rawData, err := json.Marshal(&signup)
  37. if err != nil {
  38. return nil, errors.Wrap(err, "failed to marshal signup")
  39. }
  40. reader := bytes.NewReader(rawData)
  41. body, err := s.post("/api/v1/auth/signup", reader, nil)
  42. if err != nil {
  43. return nil, errors.Wrap(err, "fail to post request")
  44. }
  45. buf := &bytes.Buffer{}
  46. _, err = buf.ReadFrom(body)
  47. if err != nil {
  48. return nil, errors.Wrap(err, "fail to read response body")
  49. }
  50. user := &apiv1.User{}
  51. if err = json.Unmarshal(buf.Bytes(), user); err != nil {
  52. return nil, errors.Wrap(err, "fail to unmarshal post signup response")
  53. }
  54. return user, nil
  55. }
  56. func (s *TestingServer) postAuthSignIn(signip *apiv1.SignIn) (*apiv1.User, error) {
  57. rawData, err := json.Marshal(&signip)
  58. if err != nil {
  59. return nil, errors.Wrap(err, "failed to marshal signin")
  60. }
  61. reader := bytes.NewReader(rawData)
  62. body, err := s.post("/api/v1/auth/signin", reader, nil)
  63. if err != nil {
  64. return nil, errors.Wrap(err, "fail to post request")
  65. }
  66. buf := &bytes.Buffer{}
  67. _, err = buf.ReadFrom(body)
  68. if err != nil {
  69. return nil, errors.Wrap(err, "fail to read response body")
  70. }
  71. user := &apiv1.User{}
  72. if err = json.Unmarshal(buf.Bytes(), user); err != nil {
  73. return nil, errors.Wrap(err, "fail to unmarshal post signin response")
  74. }
  75. return user, nil
  76. }
  77. func (s *TestingServer) postSignOut() error {
  78. _, err := s.post("/api/v1/auth/signout", nil, nil)
  79. if err != nil {
  80. return errors.Wrap(err, "fail to post request")
  81. }
  82. return nil
  83. }