auth_oauth_test_helpers_test.go 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. package handler
  2. import (
  3. "net/http"
  4. "net/http/httptest"
  5. "net/url"
  6. "testing"
  7. "github.com/stretchr/testify/require"
  8. )
  9. func buildEncodedOAuthBindUserCookie(t *testing.T, userID int64, secret string) string {
  10. t.Helper()
  11. value, err := buildOAuthBindUserCookieValue(userID, secret)
  12. require.NoError(t, err)
  13. return value
  14. }
  15. func encodedCookie(name, value string) *http.Cookie {
  16. return &http.Cookie{
  17. Name: name,
  18. Value: encodeCookieValue(value),
  19. Path: "/",
  20. }
  21. }
  22. func findCookie(cookies []*http.Cookie, name string) *http.Cookie {
  23. for _, cookie := range cookies {
  24. if cookie.Name == name {
  25. return cookie
  26. }
  27. }
  28. return nil
  29. }
  30. func requireCookieCleared(t *testing.T, recorder *httptest.ResponseRecorder, name string) {
  31. t.Helper()
  32. cookie := findCookie(recorder.Result().Cookies(), name)
  33. require.NotNil(t, cookie)
  34. require.Equal(t, -1, cookie.MaxAge)
  35. }
  36. func decodeCookieValueForTest(t *testing.T, value string) string {
  37. t.Helper()
  38. decoded, err := decodeCookieValue(value)
  39. require.NoError(t, err)
  40. return decoded
  41. }
  42. func assertOAuthRedirectError(t *testing.T, location string, errorCode string, errorMessage string) {
  43. t.Helper()
  44. values := parseOAuthRedirectFragment(t, location)
  45. require.Equal(t, errorCode, values.Get("error"))
  46. require.Equal(t, errorMessage, values.Get("error_message"))
  47. }
  48. func parseOAuthRedirectFragment(t *testing.T, location string) url.Values {
  49. t.Helper()
  50. require.NotEmpty(t, location)
  51. parsed, err := url.Parse(location)
  52. require.NoError(t, err)
  53. rawValues := parsed.RawQuery
  54. if rawValues == "" {
  55. rawValues = parsed.Fragment
  56. }
  57. values, err := url.ParseQuery(rawValues)
  58. require.NoError(t, err)
  59. return values
  60. }