123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169 |
- package whitelist
- import (
- "os"
- "testing"
- "imuslab.com/arozos/mod/database"
- )
- var dbFilePath = "../../../../test/"
- var dbFileName = "testdb.db"
- var sysdb *database.Database
- func setupSuite(t *testing.T) func(t *testing.T) {
- //t.Log("Setting up database env")
- os.Mkdir(dbFilePath, 0777)
- file, err := os.Create(dbFilePath + dbFileName)
- if err != nil {
- t.Fatalf("Failed to create file: %v", err)
- }
- file.Close()
- // Return a function to teardown the test
- return func(t *testing.T) {
- //t.Log("Cleaning up")
- sysdb.Close()
- //pp, _ := os.Getwd()
- //t.Log(pp)
- //t.Log(filepath.Dir(pp + "/" + dbFilePath + dbFileName))
- err := os.RemoveAll(dbFilePath)
- if err != nil {
- t.Fatalf("Failed to clean up: %v", err)
- }
- }
- }
- func TestWhiteList_SetWhitelistEnabled(t *testing.T) {
- teardownSuite := setupSuite(t)
- defer teardownSuite(t)
- // Create a new database
- var err error
- sysdb, err = database.NewDatabase(dbFilePath+dbFileName, false)
- if err != nil {
- t.Fatalf("Failed to create a new database: %v", err)
- }
- wl := NewWhitelistManager(sysdb)
- // Test case 1: Enable whitelist
- wl.SetWhitelistEnabled(true)
- if !wl.Enabled {
- t.Error("Expected whitelist to be enabled")
- }
- // Test case 2: Disable whitelist
- wl.SetWhitelistEnabled(false)
- if wl.Enabled {
- t.Error("Expected whitelist to be disabled")
- }
- }
- func TestWhiteList_IsWhitelisted(t *testing.T) {
- teardownSuite := setupSuite(t)
- defer teardownSuite(t)
- // Create a new database
- var err error
- sysdb, err = database.NewDatabase(dbFilePath+dbFileName, false)
- if err != nil {
- t.Fatalf("Failed to create a new database: %v", err)
- }
- wl := NewWhitelistManager(sysdb)
- // Test case 1: IP is whitelisted when whitelist is disabled
- if !wl.IsWhitelisted("192.168.1.1") {
- t.Error("Expected IP to be whitelisted when whitelist is disabled")
- }
- // Test case 2: Enable whitelist and whitelist specific IP
- wl.SetWhitelistEnabled(true)
- _ = wl.SetWhitelist("192.168.1.1")
- if !wl.IsWhitelisted("192.168.1.1") || wl.IsWhitelisted("192.168.2.1") {
- t.Error("Unexpected whitelisting behavior")
- }
- // Test case 3: Check if reserved IP addresses are always whitelisted
- if !wl.IsWhitelisted("127.0.0.1") || !wl.IsWhitelisted("localhost") {
- t.Error("Expected reserved IP addresses to be whitelisted")
- }
- }
- func TestWhiteList_ListWhitelistedIpRanges(t *testing.T) {
- teardownSuite := setupSuite(t)
- defer teardownSuite(t)
- // Create a new database
- var err error
- sysdb, err = database.NewDatabase(dbFilePath+dbFileName, false)
- if err != nil {
- t.Fatalf("Failed to create a new database: %v", err)
- }
- wl := NewWhitelistManager(sysdb)
- wl.SetWhitelistEnabled(true)
- // Test case 1: No whitelisted IP ranges
- if len(wl.ListWhitelistedIpRanges()) != 1 {
- //t.Log(wl.ListWhitelistedIpRanges())
- t.Error("Expected no whitelisted IP ranges")
- }
- // Test case 2: Whitelisted IP ranges exist
- _ = wl.SetWhitelist("192.168.1.1")
- _ = wl.SetWhitelist("192.168.2.1-192.168.2.254")
- whitelistedRanges := wl.ListWhitelistedIpRanges()
- if len(whitelistedRanges) != 3 {
- t.Error("Expected 3 whitelisted IP ranges")
- }
- }
- func TestWhiteList_SetWhitelist_UnsetWhitelist(t *testing.T) {
- teardownSuite := setupSuite(t)
- defer teardownSuite(t)
- // Create a new database
- var err error
- sysdb, err = database.NewDatabase(dbFilePath+dbFileName, false)
- if err != nil {
- t.Fatalf("Failed to create a new database: %v", err)
- }
- wl := NewWhitelistManager(sysdb)
- wl.SetWhitelistEnabled(true)
- // Test case 1: Set whitelist for a specific IP
- err = wl.SetWhitelist("192.168.1.1")
- if err != nil || !wl.IsWhitelisted("192.168.1.1") {
- t.Error("Unexpected error or IP not whitelisted")
- }
- // Test case 2: Set whitelist for an IP range
- err = wl.SetWhitelist("192.168.2.1-192.168.2.254")
- if err != nil || !wl.IsWhitelisted("192.168.2.5") {
- t.Error("Unexpected error or IP range not whitelisted")
- }
- // Test case 3: Unset whitelist for a specific IP
- err = wl.UnsetWhitelist("192.168.1.1")
- if err != nil || wl.IsWhitelisted("192.168.1.1") {
- t.Error("Unexpected error or IP still whitelisted")
- }
- // Test case 4: Unset whitelist for an IP range
- err = wl.UnsetWhitelist("192.168.2.1-192.168.2.254")
- if err != nil || wl.IsWhitelisted("192.168.2.5") {
- t.Error("Unexpected error or IP range still whitelisted")
- }
- // Test case 5: Unset whitelist for an invalid IP range
- err = wl.UnsetWhitelist("invalid-ip-range")
- if err == nil {
- t.Error("Expected error for invalid IP range")
- }
- }
|