66 "errors"
77 "fmt"
88 "net/http/httptest"
9+ "sync"
910 "testing"
1011
1112 "github.com/gin-gonic/gin"
@@ -29,6 +30,7 @@ type PluginSuite struct {
2930 suite.Suite
3031 db * testdb.Database
3132 a * PluginAPI
33+ u * UserAPI
3234 ctx * gin.Context
3335 recorder * httptest.ResponseRecorder
3436 manager * plugin.Manager
@@ -39,19 +41,23 @@ func (s *PluginSuite) BeforeTest(suiteName, testName string) {
3941 mode .Set (mode .TestDev )
4042 s .db = testdb .NewDB (s .T ())
4143 s .resetRecorder ()
42- manager , err := plugin .NewManager (s .db , "" , nil , s )
44+ manager , err := plugin .NewManager (s .db . GormDatabase , "" , nil , s )
4345 assert .Nil (s .T (), err )
4446 s .manager = manager
4547 withURL (s .ctx , "http" , "example.com" )
4648 s .a = & PluginAPI {DB : s .db , Manager : manager , Notifier : s }
49+ s .u = & UserAPI {DB : s .db .GormDatabase , UserChangeNotifier : & UserChangeNotifier {}}
4750
4851 mockPluginCompat := new (mock.Plugin )
4952 assert .Nil (s .T (), s .manager .LoadPlugin (mockPluginCompat ))
5053
51- s .db .User (1 )
52- assert .Nil (s .T (), s .manager .InitializeForUserID (1 ))
53- s .db .User (2 )
54- assert .Nil (s .T (), s .manager .InitializeForUserID (2 ))
54+ s .db .NewUserWithNameAdmin (1 , "user1" , true )
55+ wg := & sync.WaitGroup {}
56+ assert .Nil (s .T (), s .manager .InitializeForUserID (s .db .GormDatabase , 1 , wg ))
57+ wg .Wait ()
58+ s .db .NewUserWithNameAdmin (2 , "user2" , true )
59+ assert .Nil (s .T (), s .manager .InitializeForUserID (s .db .GormDatabase , 2 , wg ))
60+ wg .Wait ()
5561
5662 s .db .CreatePluginConf (& model.PluginConf {
5763 UserID : 1 ,
@@ -97,6 +103,31 @@ func (s *PluginSuite) Test_GetPlugins() {
97103 assert .False (s .T (), pluginConfs [0 ].Enabled , "Plugins should be disabled by default" )
98104}
99105
106+ func (s * PluginSuite ) Test_DeleteUser () {
107+ test .WithUser (s .ctx , 1 )
108+
109+ s .ctx .Request = httptest .NewRequest ("POST" , "/plugin/1/enable" , nil )
110+ s .ctx .Params = gin.Params {{Key : "id" , Value : "1" }}
111+ s .a .EnablePlugin (s .ctx )
112+
113+ assert .Equal (s .T (), 200 , s .recorder .Code )
114+
115+ if pluginConf , err := s .db .GetPluginConfByUserAndPath (1 , mock .ModulePath ); assert .NoError (s .T (), err ) {
116+ assert .True (s .T (), pluginConf .Enabled )
117+ }
118+ s .resetRecorder ()
119+
120+ s .ctx .Request = httptest .NewRequest ("DELETE" , "/user/1" , nil )
121+ s .ctx .Params = gin.Params {{Key : "id" , Value : "1" }}
122+ s .u .DeleteUserByID (s .ctx )
123+
124+ assert .Equal (s .T (), 200 , s .recorder .Code )
125+
126+ user , err := s .db .GetUserByID (1 )
127+ assert .NoError (s .T (), err )
128+ assert .Nil (s .T (), user )
129+ }
130+
100131func (s * PluginSuite ) Test_EnableDisablePlugin () {
101132 {
102133 test .WithUser (s .ctx , 1 )
@@ -161,7 +192,9 @@ func (s *PluginSuite) Test_EnableDisablePlugin() {
161192
162193func (s * PluginSuite ) Test_EnableDisablePlugin_EnableReturnsError_expect500 () {
163194 s .db .User (16 )
164- assert .Nil (s .T (), s .manager .InitializeForUserID (16 ))
195+ wg := & sync.WaitGroup {}
196+ assert .Nil (s .T (), s .manager .InitializeForUserID (s .db .GormDatabase , 16 , wg ))
197+ wg .Wait ()
165198 mock .ReturnErrorOnEnableForUser (16 , errors .New ("test error" ))
166199 conf , err := s .db .GetPluginConfByUserAndPath (16 , mock .ModulePath )
167200 assert .NoError (s .T (), err )
@@ -183,7 +216,9 @@ func (s *PluginSuite) Test_EnableDisablePlugin_EnableReturnsError_expect500() {
183216
184217func (s * PluginSuite ) Test_EnableDisablePlugin_DisableReturnsError_expect500 () {
185218 s .db .User (17 )
186- assert .Nil (s .T (), s .manager .InitializeForUserID (17 ))
219+ wg := & sync.WaitGroup {}
220+ assert .Nil (s .T (), s .manager .InitializeForUserID (s .db .GormDatabase , 17 , wg ))
221+ wg .Wait ()
187222 mock .ReturnErrorOnDisableForUser (17 , errors .New ("test error" ))
188223 conf , err := s .db .GetPluginConfByUserAndPath (17 , mock .ModulePath )
189224 assert .NoError (s .T (), err )
@@ -291,7 +326,7 @@ func (s *PluginSuite) Test_GetDisplay() {
291326 assert .NoError (s .T (), err )
292327 inst , err := s .manager .Instance (conf .ID )
293328 assert .Nil (s .T (), err )
294- mockInst := inst .(* mock.PluginInstance )
329+ mockInst := inst .Instance (). (* mock.PluginInstance )
295330
296331 mockInst .DisplayString = "test string"
297332
@@ -312,7 +347,7 @@ func (s *PluginSuite) Test_GetDisplay_NotImplemented_expectEmptyString() {
312347 assert .NoError (s .T (), err )
313348 inst , err := s .manager .Instance (conf .ID )
314349 assert .Nil (s .T (), err )
315- mockInst := inst .(* mock.PluginInstance )
350+ mockInst := inst .Instance (). (* mock.PluginInstance )
316351
317352 mockInst .SetCapability (compat .Displayer , false )
318353 defer mockInst .SetCapability (compat .Displayer , true )
@@ -334,7 +369,7 @@ func (s *PluginSuite) Test_GetDisplay_incorrectUser_expectNotFound() {
334369 assert .NoError (s .T (), err )
335370 inst , err := s .manager .Instance (conf .ID )
336371 assert .Nil (s .T (), err )
337- mockInst := inst .(* mock.PluginInstance )
372+ mockInst := inst .Instance (). (* mock.PluginInstance )
338373
339374 mockInst .DisplayString = "test string"
340375
@@ -380,7 +415,7 @@ func (s *PluginSuite) Test_GetConfig() {
380415 assert .NoError (s .T (), err )
381416 inst , err := s .manager .Instance (conf .ID )
382417 assert .Nil (s .T (), err )
383- mockInst := inst .(* mock.PluginInstance )
418+ mockInst := inst .Instance (). (* mock.PluginInstance )
384419
385420 assert .Equal (s .T (), mockInst .DefaultConfig (), mockInst .Config , "Initial config should be default config" )
386421 {
@@ -402,7 +437,7 @@ func (s *PluginSuite) Test_GetConfg_notImplemeted_expect400() {
402437 assert .NoError (s .T (), err )
403438 inst , err := s .manager .Instance (conf .ID )
404439 assert .Nil (s .T (), err )
405- mockInst := inst .(* mock.PluginInstance )
440+ mockInst := inst .Instance (). (* mock.PluginInstance )
406441
407442 mockInst .SetCapability (compat .Configurer , false )
408443 defer mockInst .SetCapability (compat .Configurer , true )
@@ -464,7 +499,7 @@ func (s *PluginSuite) Test_UpdateConfig() {
464499 assert .NoError (s .T (), err )
465500 inst , err := s .manager .Instance (conf .ID )
466501 assert .Nil (s .T (), err )
467- mockInst := inst .(* mock.PluginInstance )
502+ mockInst := inst .Instance (). (* mock.PluginInstance )
468503
469504 newConfig := & mock.PluginConfig {
470505 TestKey : "test__new__config" ,
@@ -499,7 +534,7 @@ func (s *PluginSuite) Test_UpdateConfig_invalidConfig_expect400() {
499534 assert .NoError (s .T (), err )
500535 inst , err := s .manager .Instance (conf .ID )
501536 assert .Nil (s .T (), err )
502- mockInst := inst .(* mock.PluginInstance )
537+ mockInst := inst .Instance (). (* mock.PluginInstance )
503538 origConfig := mockInst .Config
504539
505540 newConfig := & mock.PluginConfig {
@@ -536,7 +571,7 @@ func (s *PluginSuite) Test_UpdateConfig_malformedYAML_expect400() {
536571 assert .NoError (s .T (), err )
537572 inst , err := s .manager .Instance (conf .ID )
538573 assert .Nil (s .T (), err )
539- mockInst := inst .(* mock.PluginInstance )
574+ mockInst := inst .Instance (). (* mock.PluginInstance )
540575 origConfig := mockInst .Config
541576
542577 newConfigYAML := []byte (`--- "rg e""` )
@@ -568,7 +603,7 @@ func (s *PluginSuite) Test_UpdateConfig_ioError_expect500() {
568603 assert .NoError (s .T (), err )
569604 inst , err := s .manager .Instance (conf .ID )
570605 assert .Nil (s .T (), err )
571- mockInst := inst .(* mock.PluginInstance )
606+ mockInst := inst .Instance (). (* mock.PluginInstance )
572607 origConfig := mockInst .Config
573608
574609 {
@@ -598,7 +633,7 @@ func (s *PluginSuite) Test_UpdateConfig_notImplemented_expect400() {
598633 assert .NoError (s .T (), err )
599634 inst , err := s .manager .Instance (conf .ID )
600635 assert .Nil (s .T (), err )
601- mockInst := inst .(* mock.PluginInstance )
636+ mockInst := inst .Instance (). (* mock.PluginInstance )
602637
603638 newConfig := & mock.PluginConfig {
604639 TestKey : "test__new__config" ,
@@ -626,7 +661,7 @@ func (s *PluginSuite) Test_UpdateConfig_incorrectUser_expectNotFound() {
626661 assert .NoError (s .T (), err )
627662 inst , err := s .manager .Instance (conf .ID )
628663 assert .Nil (s .T (), err )
629- mockInst := inst .(* mock.PluginInstance )
664+ mockInst := inst .Instance (). (* mock.PluginInstance )
630665 origConfig := mockInst .Config
631666
632667 newConfig := & mock.PluginConfig {
0 commit comments