testing.go 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  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. PingCalledTimes int
  57. UsersResult []*models.ExternalUserInfo
  58. }
  59. func (mock *MockMultiLDAP) Ping() ([]*ServerStatus, error) {
  60. mock.PingCalledTimes = mock.PingCalledTimes + 1
  61. return nil, nil
  62. }
  63. // Login test fn
  64. func (mock *MockMultiLDAP) Login(query *models.LoginUserQuery) (
  65. *models.ExternalUserInfo, error,
  66. ) {
  67. mock.LoginCalledTimes = mock.LoginCalledTimes + 1
  68. return nil, nil
  69. }
  70. // Users test fn
  71. func (mock *MockMultiLDAP) Users(logins []string) (
  72. []*models.ExternalUserInfo, error,
  73. ) {
  74. mock.UsersCalledTimes = mock.UsersCalledTimes + 1
  75. return mock.UsersResult, nil
  76. }
  77. // User test fn
  78. func (mock *MockMultiLDAP) User(login string) (
  79. *models.ExternalUserInfo, ldap.ServerConfig, error,
  80. ) {
  81. mock.UserCalledTimes = mock.UserCalledTimes + 1
  82. return nil, ldap.ServerConfig{}, nil
  83. }
  84. func setup() *MockLDAP {
  85. mock := &MockLDAP{}
  86. newLDAP = func(config *ldap.ServerConfig) ldap.IServer {
  87. return mock
  88. }
  89. return mock
  90. }
  91. func teardown() {
  92. newLDAP = ldap.New
  93. }