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  }