github.com/safing/portbase@v0.19.5/modules/mgmt_test.go (about) 1 package modules 2 3 import ( 4 "testing" 5 ) 6 7 func testModuleMgmt(t *testing.T) { 8 // enable module management 9 EnableModuleManagement(nil) 10 11 registerTestModule(t, "base") 12 registerTestModule(t, "feature1", "base") 13 registerTestModule(t, "base2", "base") 14 registerTestModule(t, "feature2", "base2") 15 registerTestModule(t, "sub-feature", "base") 16 registerTestModule(t, "feature3", "sub-feature") 17 registerTestModule(t, "feature4", "sub-feature") 18 19 // enable core module 20 core := modules["base"] 21 core.Enable() 22 23 // start and check order 24 err := Start() 25 if err != nil { 26 t.Error(err) 27 } 28 if changeHistory != " on:base" { 29 t.Errorf("order mismatch, was %s", changeHistory) 30 } 31 changeHistory = "" 32 33 // enable feature1 34 feature1 := modules["feature1"] 35 feature1.Enable() 36 // manage modules and check 37 err = ManageModules() 38 if err != nil { 39 t.Fatal(err) 40 return 41 } 42 if changeHistory != " on:feature1" { 43 t.Errorf("order mismatch, was %s", changeHistory) 44 } 45 changeHistory = "" 46 47 // enable feature2 48 feature2 := modules["feature2"] 49 feature2.Enable() 50 // manage modules and check 51 err = ManageModules() 52 if err != nil { 53 t.Fatal(err) 54 return 55 } 56 if changeHistory != " on:base2 on:feature2" { 57 t.Errorf("order mismatch, was %s", changeHistory) 58 } 59 changeHistory = "" 60 61 // enable feature3 62 feature3 := modules["feature3"] 63 feature3.Enable() 64 // manage modules and check 65 err = ManageModules() 66 if err != nil { 67 t.Fatal(err) 68 return 69 } 70 if changeHistory != " on:sub-feature on:feature3" { 71 t.Errorf("order mismatch, was %s", changeHistory) 72 } 73 changeHistory = "" 74 75 // enable feature4 76 feature4 := modules["feature4"] 77 feature4.Enable() 78 // manage modules and check 79 err = ManageModules() 80 if err != nil { 81 t.Fatal(err) 82 return 83 } 84 if changeHistory != " on:feature4" { 85 t.Errorf("order mismatch, was %s", changeHistory) 86 } 87 changeHistory = "" 88 89 // disable feature1 90 feature1.Disable() 91 // manage modules and check 92 err = ManageModules() 93 if err != nil { 94 t.Fatal(err) 95 return 96 } 97 if changeHistory != " off:feature1" { 98 t.Errorf("order mismatch, was %s", changeHistory) 99 } 100 changeHistory = "" 101 102 // disable feature3 103 feature3.Disable() 104 // manage modules and check 105 err = ManageModules() 106 if err != nil { 107 t.Fatal(err) 108 return 109 } 110 // disable feature4 111 feature4.Disable() 112 // manage modules and check 113 err = ManageModules() 114 if err != nil { 115 t.Fatal(err) 116 return 117 } 118 if changeHistory != " off:feature3 off:feature4 off:sub-feature" { 119 t.Errorf("order mismatch, was %s", changeHistory) 120 } 121 changeHistory = "" 122 123 // enable feature4 124 feature4.Enable() 125 // manage modules and check 126 err = ManageModules() 127 if err != nil { 128 t.Fatal(err) 129 return 130 } 131 if changeHistory != " on:sub-feature on:feature4" { 132 t.Errorf("order mismatch, was %s", changeHistory) 133 } 134 changeHistory = "" 135 136 // disable feature4 137 feature4.Disable() 138 // manage modules and check 139 err = ManageModules() 140 if err != nil { 141 t.Fatal(err) 142 return 143 } 144 if changeHistory != " off:feature4 off:sub-feature" { 145 t.Errorf("order mismatch, was %s", changeHistory) 146 } 147 changeHistory = "" 148 149 err = Shutdown() 150 if err != nil { 151 t.Error(err) 152 } 153 if changeHistory != " off:feature2 off:base2 off:base" { 154 t.Errorf("order mismatch, was %s", changeHistory) 155 } 156 157 // reset history 158 changeHistory = "" 159 160 // disable module management 161 moduleMgmtEnabled.UnSet() 162 163 resetTestEnvironment() 164 }