auth_test.go 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. package auth
  2. import (
  3. "testing"
  4. "github.com/stretchr/testify/assert"
  5. )
  6. // Implementing the Source interface
  7. type testAuthSource struct {
  8. user string
  9. pass string
  10. }
  11. func (tst testAuthSource) AdminUsername() string { return tst.user }
  12. func (tst testAuthSource) AdminPassword() string { return tst.pass }
  13. /*
  14. Table testing the authorize function
  15. */
  16. func TestAuthorize(t *testing.T) {
  17. type authTestCase struct {
  18. desc string
  19. inputUsername string
  20. inputPassword string
  21. realUsername string
  22. realPassword string
  23. expectError error
  24. }
  25. cache := NewCache()
  26. for _, tc := range []authTestCase{
  27. {
  28. desc: "Passing test case where auth works",
  29. inputUsername: "admin",
  30. inputPassword: "abc123",
  31. realUsername: "admin",
  32. realPassword: "abc123",
  33. expectError: nil,
  34. },
  35. {
  36. desc: "Auth fails because username is empty",
  37. inputUsername: "",
  38. inputPassword: "abc123",
  39. realUsername: "admin",
  40. realPassword: "abc123",
  41. expectError: &InvalidCredentials{},
  42. },
  43. {
  44. desc: "Auth fails because password is empty",
  45. inputUsername: "admin",
  46. inputPassword: "",
  47. realUsername: "admin",
  48. realPassword: "abc123",
  49. expectError: &InvalidCredentials{},
  50. },
  51. {
  52. desc: "Auth fails because password is wrong",
  53. inputUsername: "admin",
  54. inputPassword: "xyz987",
  55. realUsername: "admin",
  56. realPassword: "abc123",
  57. expectError: &InvalidCredentials{},
  58. },
  59. {
  60. desc: "Auth fails because username is wrong",
  61. inputUsername: "admin",
  62. inputPassword: "",
  63. realUsername: "admin",
  64. realPassword: "abc123",
  65. expectError: &InvalidCredentials{},
  66. },
  67. } {
  68. t.Run(tc.desc, func(t *testing.T) {
  69. _, err := Authorize(&Credentials{Username: tc.inputUsername,
  70. Password: tc.inputPassword},
  71. cache,
  72. testAuthSource{user: tc.realUsername, pass: tc.realPassword})
  73. assert.Equal(t, tc.expectError, err)
  74. })
  75. }
  76. }