testing.go 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  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. bindCalledTimes int
  13. dialErrReturn error
  14. loginErrReturn error
  15. loginReturn *models.ExternalUserInfo
  16. bindErrReturn error
  17. usersErrReturn error
  18. usersFirstReturn []*models.ExternalUserInfo
  19. usersRestReturn []*models.ExternalUserInfo
  20. }
  21. // Login test fn
  22. func (mock *MockLDAP) Login(*models.LoginUserQuery) (*models.ExternalUserInfo, error) {
  23. mock.loginCalledTimes = mock.loginCalledTimes + 1
  24. return mock.loginReturn, mock.loginErrReturn
  25. }
  26. // Users test fn
  27. func (mock *MockLDAP) Users([]string) ([]*models.ExternalUserInfo, error) {
  28. mock.usersCalledTimes = mock.usersCalledTimes + 1
  29. if mock.usersCalledTimes == 1 {
  30. return mock.usersFirstReturn, mock.usersErrReturn
  31. }
  32. return mock.usersRestReturn, mock.usersErrReturn
  33. }
  34. // UserBind test fn
  35. func (mock *MockLDAP) UserBind(string, string) error {
  36. return nil
  37. }
  38. // Dial test fn
  39. func (mock *MockLDAP) Dial() error {
  40. mock.dialCalledTimes = mock.dialCalledTimes + 1
  41. return mock.dialErrReturn
  42. }
  43. // Close test fn
  44. func (mock *MockLDAP) Close() {
  45. mock.closeCalledTimes = mock.closeCalledTimes + 1
  46. }
  47. func (mock *MockLDAP) Bind() error {
  48. mock.bindCalledTimes++
  49. return mock.bindErrReturn
  50. }
  51. // MockMultiLDAP represents testing struct for multildap testing
  52. type MockMultiLDAP struct {
  53. LoginCalledTimes int
  54. UsersCalledTimes int
  55. UserCalledTimes int
  56. UsersResult []*models.ExternalUserInfo
  57. }
  58. // Login test fn
  59. func (mock *MockMultiLDAP) Login(query *models.LoginUserQuery) (
  60. *models.ExternalUserInfo, error,
  61. ) {
  62. mock.LoginCalledTimes = mock.LoginCalledTimes + 1
  63. return nil, nil
  64. }
  65. // Users test fn
  66. func (mock *MockMultiLDAP) Users(logins []string) (
  67. []*models.ExternalUserInfo, error,
  68. ) {
  69. mock.UsersCalledTimes = mock.UsersCalledTimes + 1
  70. return mock.UsersResult, nil
  71. }
  72. // User test fn
  73. func (mock *MockMultiLDAP) User(login string) (
  74. *models.ExternalUserInfo, error,
  75. ) {
  76. mock.UserCalledTimes = mock.UserCalledTimes + 1
  77. return nil, nil
  78. }
  79. func setup() *MockLDAP {
  80. mock := &MockLDAP{}
  81. newLDAP = func(config *ldap.ServerConfig) ldap.IServer {
  82. return mock
  83. }
  84. return mock
  85. }
  86. func teardown() {
  87. newLDAP = ldap.New
  88. }