testing.go 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. package multildap
  2. import (
  3. "github.com/grafana/grafana/pkg/models"
  4. "github.com/grafana/grafana/pkg/services/ldap"
  5. )
  6. // MockLDAP represents testing struct for ldap testing
  7. type MockLDAP struct {
  8. dialCalledTimes int
  9. loginCalledTimes int
  10. closeCalledTimes int
  11. usersCalledTimes int
  12. dialErrReturn error
  13. loginErrReturn error
  14. loginReturn *models.ExternalUserInfo
  15. usersErrReturn error
  16. usersFirstReturn []*models.ExternalUserInfo
  17. usersRestReturn []*models.ExternalUserInfo
  18. }
  19. // Login test fn
  20. func (mock *MockLDAP) Login(*models.LoginUserQuery) (*models.ExternalUserInfo, error) {
  21. mock.loginCalledTimes = mock.loginCalledTimes + 1
  22. return mock.loginReturn, mock.loginErrReturn
  23. }
  24. // Users test fn
  25. func (mock *MockLDAP) Users([]string) ([]*models.ExternalUserInfo, error) {
  26. mock.usersCalledTimes = mock.usersCalledTimes + 1
  27. if mock.usersCalledTimes == 1 {
  28. return mock.usersFirstReturn, mock.usersErrReturn
  29. }
  30. return mock.usersRestReturn, mock.usersErrReturn
  31. }
  32. // Auth test fn
  33. func (mock *MockLDAP) Auth(string, string) error {
  34. return nil
  35. }
  36. // Dial test fn
  37. func (mock *MockLDAP) Dial() error {
  38. mock.dialCalledTimes = mock.dialCalledTimes + 1
  39. return mock.dialErrReturn
  40. }
  41. // Close test fn
  42. func (mock *MockLDAP) Close() {
  43. mock.closeCalledTimes = mock.closeCalledTimes + 1
  44. }
  45. // MockMultiLDAP represents testing struct for multildap testing
  46. type MockMultiLDAP struct {
  47. LoginCalledTimes int
  48. UsersCalledTimes int
  49. UserCalledTimes int
  50. UsersResult []*models.ExternalUserInfo
  51. }
  52. // Login test fn
  53. func (mock *MockMultiLDAP) Login(query *models.LoginUserQuery) (
  54. *models.ExternalUserInfo, error,
  55. ) {
  56. mock.LoginCalledTimes = mock.LoginCalledTimes + 1
  57. return nil, nil
  58. }
  59. // Users test fn
  60. func (mock *MockMultiLDAP) Users(logins []string) (
  61. []*models.ExternalUserInfo, error,
  62. ) {
  63. mock.UsersCalledTimes = mock.UsersCalledTimes + 1
  64. return mock.UsersResult, nil
  65. }
  66. // User test fn
  67. func (mock *MockMultiLDAP) User(login string) (
  68. *models.ExternalUserInfo, error,
  69. ) {
  70. mock.UserCalledTimes = mock.UserCalledTimes + 1
  71. return nil, nil
  72. }
  73. func setup() *MockLDAP {
  74. mock := &MockLDAP{}
  75. newLDAP = func(config *ldap.ServerConfig) ldap.IServer {
  76. return mock
  77. }
  78. return mock
  79. }
  80. func teardown() {
  81. newLDAP = ldap.New
  82. }