sync_test.go 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. package sync_test
  2. import (
  3. "log"
  4. "testing"
  5. "time"
  6. "github.com/remogatto/prettytest"
  7. karmen_client "gogs.carducci-dante.gov.it/karmen/client"
  8. "gogs.carducci-dante.gov.it/karmen/core/config"
  9. "gogs.carducci-dante.gov.it/karmen/core/cron/sync"
  10. "gogs.carducci-dante.gov.it/karmen/core/orm"
  11. karmen_ldap "gogs.carducci-dante.gov.it/karmen/ldap"
  12. )
  13. type testSuite struct {
  14. prettytest.Suite
  15. }
  16. var (
  17. ldap *karmen_ldap.Client
  18. karmen *karmen_client.Client
  19. conf *config.ConfigT
  20. )
  21. func TestRunner(t *testing.T) {
  22. prettytest.Run(
  23. t,
  24. new(testSuite),
  25. )
  26. }
  27. func (t *testSuite) BeforeAll() {
  28. var err error
  29. time.Sleep(time.Second * 10) // Wait for the server to go up...
  30. conf = new(config.ConfigT)
  31. err = config.ReadFile("config.yaml", conf)
  32. if err != nil {
  33. panic(err)
  34. }
  35. ldap, err = karmen_ldap.NewClient("localhost:389", conf)
  36. if err != nil {
  37. panic(err)
  38. }
  39. karmen, err = karmen_client.Dial(conf.Url, conf.Admin.Username, conf.Admin.Password)
  40. if err != nil {
  41. log.Println(err)
  42. }
  43. }
  44. func (t *testSuite) AfterAll() {
  45. ldap.Close()
  46. }
  47. func (t *testSuite) TestSyncUsers() {
  48. syncJob := sync.NewSyncJob(conf)
  49. teachers, err := karmen.GetTeachers()
  50. t.Nil(err)
  51. entries, err := ldap.Users("ou=People,dc=foo,dc=org")
  52. t.Nil(err)
  53. users := make([]orm.User, 0)
  54. for _, teacher := range teachers {
  55. users = append(users, teacher)
  56. }
  57. result, err := syncJob.SyncUsers(ldap, karmen, entries, users)
  58. t.Nil(err)
  59. t.Equal(len(result.Added), 11)
  60. t.Equal(len(result.Updated), 0)
  61. t.Equal(len(result.Removed), 1)
  62. t.Equal(result.Removed[0], "cn=John DOE,ou=People,dc=foo,dc=org")
  63. // Run sync two times should result in no updating
  64. teachers, err = karmen.GetTeachers()
  65. t.Nil(err)
  66. entries, err = ldap.Users("ou=People,dc=foo,dc=org")
  67. t.Nil(err)
  68. users = make([]orm.User, 0)
  69. for _, teacher := range teachers {
  70. users = append(users, teacher)
  71. }
  72. result, err = syncJob.SyncUsers(ldap, karmen, entries, users)
  73. t.Nil(err)
  74. if !t.Failed() {
  75. t.Equal(len(result.Added), 0)
  76. t.Equal(len(result.Updated), 0)
  77. t.Equal(len(result.Removed), 0)
  78. }
  79. // // Update user and test LDAP sync
  80. // user := teachers[0]
  81. // user.SetRegenerate(true)
  82. // err = karmen.UpdateUser(user)
  83. // t.Nil(err)
  84. // result, err = syncJob.SyncUsers(ldap, karmen, entries, users)
  85. // t.Nil(err)
  86. // if !t.Failed() {
  87. // t.Equal(len(result.Added), 0)
  88. // t.Equal(len(result.Updated), 1)
  89. // t.Equal(len(result.Removed), 0)
  90. // }
  91. }