From 47f2b1e51ebe514b3322cf47dd1eb6fbbf091c19 Mon Sep 17 00:00:00 2001 From: bl4ko Date: Tue, 19 Mar 2024 15:05:59 +0100 Subject: [PATCH] test: adding 100% test coverage for parser --- internal/parser/parser.go | 20 +- internal/parser/parser_invalid_test.go | 92 --------- internal/parser/parser_test.go | 174 ++++++++++++++++++ internal/parser/parser_valid_test.go | 92 --------- .../parser/testdata/invalid_config10.yaml | 8 + .../parser/testdata/invalid_config11.yaml | 7 + .../parser/testdata/invalid_config12.yaml | 8 + .../parser/testdata/invalid_config13.yaml | 8 + .../parser/testdata/invalid_config14.yaml | 38 ++++ .../parser/testdata/invalid_config15.yaml | 38 ++++ .../parser/testdata/invalid_config16.yaml | 38 ++++ .../parser/testdata/invalid_config17.yaml | 38 ++++ .../parser/testdata/invalid_config18.yaml | 16 ++ .../parser/testdata/invalid_config19.yaml | 16 ++ .../parser/testdata/invalid_config20.yaml | 20 ++ .../parser/testdata/invalid_config21.yaml | 17 ++ .../parser/testdata/invalid_config22.yaml | 18 ++ .../parser/testdata/invalid_config23.yaml | 18 ++ .../parser/testdata/invalid_config24.yaml | 18 ++ .../parser/testdata/invalid_config25.yaml | 18 ++ .../parser/testdata/invalid_config26.yaml | 18 ++ .../parser/testdata/invalid_config27.yaml | 18 ++ .../parser/testdata/invalid_config28.yaml | 18 ++ .../parser/testdata/invalid_config29.yaml | 9 + internal/parser/testdata/invalid_config8.yaml | 16 ++ internal/parser/testdata/invalid_config9.yaml | 8 + .../{valid_config.yaml => valid_config1.yaml} | 0 internal/parser/testdata/valid_config2.yaml | 23 +++ 28 files changed, 618 insertions(+), 194 deletions(-) delete mode 100644 internal/parser/parser_invalid_test.go create mode 100644 internal/parser/parser_test.go delete mode 100644 internal/parser/parser_valid_test.go create mode 100644 internal/parser/testdata/invalid_config10.yaml create mode 100644 internal/parser/testdata/invalid_config11.yaml create mode 100644 internal/parser/testdata/invalid_config12.yaml create mode 100644 internal/parser/testdata/invalid_config13.yaml create mode 100644 internal/parser/testdata/invalid_config14.yaml create mode 100644 internal/parser/testdata/invalid_config15.yaml create mode 100644 internal/parser/testdata/invalid_config16.yaml create mode 100644 internal/parser/testdata/invalid_config17.yaml create mode 100644 internal/parser/testdata/invalid_config18.yaml create mode 100644 internal/parser/testdata/invalid_config19.yaml create mode 100644 internal/parser/testdata/invalid_config20.yaml create mode 100644 internal/parser/testdata/invalid_config21.yaml create mode 100644 internal/parser/testdata/invalid_config22.yaml create mode 100644 internal/parser/testdata/invalid_config23.yaml create mode 100644 internal/parser/testdata/invalid_config24.yaml create mode 100644 internal/parser/testdata/invalid_config25.yaml create mode 100644 internal/parser/testdata/invalid_config26.yaml create mode 100644 internal/parser/testdata/invalid_config27.yaml create mode 100644 internal/parser/testdata/invalid_config28.yaml create mode 100644 internal/parser/testdata/invalid_config29.yaml create mode 100644 internal/parser/testdata/invalid_config8.yaml create mode 100644 internal/parser/testdata/invalid_config9.yaml rename internal/parser/testdata/{valid_config.yaml => valid_config1.yaml} (100%) create mode 100644 internal/parser/testdata/valid_config2.yaml diff --git a/internal/parser/parser.go b/internal/parser/parser.go index f6c6485e..ae032fd9 100644 --- a/internal/parser/parser.go +++ b/internal/parser/parser.go @@ -148,7 +148,7 @@ func validateNetboxConfig(config *Config) error { } if len(config.Netbox.SourcePriority) > 0 { if len(config.Netbox.SourcePriority) != len(config.Sources) { - return fmt.Errorf("netbox.sourcePriority: len(config.Netbox.SourcePriority != len(config.Sources))") + return fmt.Errorf("netbox.sourcePriority: len(config.Netbox.SourcePriority != len(config.Sources)") } for _, sourceName := range config.Netbox.SourcePriority { contains := false @@ -159,7 +159,7 @@ func validateNetboxConfig(config *Config) error { } } if !contains { - return fmt.Errorf("netbox.sourcePriority: source[%s] doesn't exist in sources array", sourceName) + return fmt.Errorf("netbox.sourcePriority: source[%s] doesn't exist in the sources array", sourceName) } } } @@ -172,26 +172,26 @@ func validateSourceConfig(config *Config) error { externalSource := &config.Sources[i] externalSourceStr := "source[" + externalSource.Name + "]" if externalSource.Name == "" { - return fmt.Errorf("%s: name cannot be empty", externalSourceStr) + return fmt.Errorf("%s.name: cannot be empty", externalSourceStr) } if externalSource.HTTPScheme == "" { externalSource.HTTPScheme = "https" } else if externalSource.HTTPScheme != HTTP && externalSource.HTTPScheme != HTTPS { - return fmt.Errorf("%s.httpScheme must be either http or https. Is %s", externalSourceStr, string(externalSource.HTTPScheme)) + return fmt.Errorf("%s.httpScheme: must be either http or https. Is %s", externalSourceStr, string(externalSource.HTTPScheme)) } if externalSource.Hostname == "" { - return fmt.Errorf("%s: hostname cannot be empty", externalSourceStr) + return fmt.Errorf("%s.hostname: cannot be empty", externalSourceStr) } if externalSource.Port == 0 { externalSource.Port = 443 } else if externalSource.Port < 0 || externalSource.Port > 65535 { - return fmt.Errorf("%s: port must be between 0 and 65535. Is %d", externalSourceStr, externalSource.Port) + return fmt.Errorf("%s.port: must be between 0 and 65535. Is %d", externalSourceStr, externalSource.Port) } if externalSource.Username == "" { - return fmt.Errorf("%s: username cannot be empty", externalSourceStr) + return fmt.Errorf("%s.username: cannot be empty", externalSourceStr) } if externalSource.Password == "" { - return fmt.Errorf("%s: password cannot be empty", externalSourceStr) + return fmt.Errorf("%s.password: cannot be empty", externalSourceStr) } if externalSource.Tag == "" { externalSource.Tag = fmt.Sprintf("Source: %s", externalSource.Name) @@ -214,14 +214,14 @@ func validateSourceConfig(config *Config) error { if len(externalSource.IgnoredSubnets) > 0 { for _, ignoredSubnet := range externalSource.IgnoredSubnets { if !utils.VerifySubnet(ignoredSubnet) { - return fmt.Errorf("%s.ignoredSubnets wrong format: %s", externalSourceStr, ignoredSubnet) + return fmt.Errorf("%s.ignoredSubnets: wrong format: %s", externalSourceStr, ignoredSubnet) } } } // Try to compile interfaceFilter _, err = regexp.Compile(externalSource.InterfaceFilter) if err != nil { - return fmt.Errorf("%s.interfaceFilter wrong format: %s", externalSourceStr, err) + return fmt.Errorf("%s.interfaceFilter: wrong format: %s", externalSourceStr, err) } } return nil diff --git a/internal/parser/parser_invalid_test.go b/internal/parser/parser_invalid_test.go deleted file mode 100644 index b1fce01c..00000000 --- a/internal/parser/parser_invalid_test.go +++ /dev/null @@ -1,92 +0,0 @@ -package parser - -import ( - "fmt" - "path/filepath" - "testing" -) - -func TestInvalidConfig1(t *testing.T) { - filename := filepath.Join("testdata", "invalid_config1.yaml") - expectedErr := "netbox.hostname: cannot be empty" - _, err := ParseConfig(filename) - fmt.Printf("%v", err) - if err == nil || err.Error() != expectedErr { - t.Errorf("Expected error: %v, got: %v", expectedErr, err) - return - } -} - -func TestInvalidConfig2(t *testing.T) { - filename := filepath.Join("testdata", "invalid_config2.yaml") - expectedErr := "netbox.port: must be between 0 and 65535. Is 333333" - _, err := ParseConfig(filename) - fmt.Printf("%v", err) - if err == nil || err.Error() != expectedErr { - t.Errorf("Expected error: %v, got: %v", expectedErr, err) - return - } -} - -func TestInvalidConfig3(t *testing.T) { - filename := filepath.Join("testdata", "invalid_config3.yaml") - expectedErr := "source[testolvm].type is not valid" - _, err := ParseConfig(filename) - fmt.Printf("%v", err) - if err == nil || err.Error() != expectedErr { - t.Errorf("Expected error: %v, got: %v", expectedErr, err) - return - } -} - -func TestInvalidConfig4(t *testing.T) { - filename := filepath.Join("testdata", "invalid_config4.yaml") - expectedErr := "netbox.httpScheme: must be either http or https. Is httpd" - _, err := ParseConfig(filename) - fmt.Printf("%v", err) - if err == nil || err.Error() != expectedErr { - t.Errorf("Expected error: %v, got: %v", expectedErr, err) - return - } -} - -func TestInvalidConfig5(t *testing.T) { - filename := filepath.Join("testdata", "invalid_config5.yaml") - expectedErr := "source[prodovirt].httpScheme must be either http or https. Is httpd" - _, err := ParseConfig(filename) - fmt.Printf("%v", err) - if err == nil { - t.Errorf("%s", err) - return - } else if err.Error() != expectedErr { - t.Errorf("Expected error: %v, got: %v", expectedErr, err) - return - } -} - -func TestInvalidConfig6(t *testing.T) { - filename := filepath.Join("testdata", "invalid_config6.yaml") - expectedErr := "source[testolvm].hostTenantRelations: invalid regex relation: This should not work. Should be of format: regex = value" - _, err := ParseConfig(filename) - fmt.Printf("%v", err) - if err == nil { - t.Errorf("%s", err) - return - } else if err.Error() != expectedErr { - t.Errorf("Expected error: %v, got: %v", expectedErr, err) - return - } -} - -func TestInvalidConfig7(t *testing.T) { - filename := filepath.Join("testdata", "invalid_config7.yaml") - expectedErr := "source[prodolvm].hostTenantRelations: invalid regex: [a-z++, in relation: [a-z++ = Should not work" - _, err := ParseConfig(filename) - if err == nil { - t.Errorf("%s", err) - return - } else if err.Error() != expectedErr { - t.Errorf("Expected error: %v, got: %v", expectedErr, err) - return - } -} diff --git a/internal/parser/parser_test.go b/internal/parser/parser_test.go new file mode 100644 index 00000000..cb4f4926 --- /dev/null +++ b/internal/parser/parser_test.go @@ -0,0 +1,174 @@ +package parser + +import ( + "fmt" + "path/filepath" + "reflect" + "testing" + + "github.com/bl4ko/netbox-ssot/internal/constants" +) + +func TestValidonfig(t *testing.T) { + filename := filepath.Join("testdata", "valid_config1.yaml") + want := &Config{ + Logger: &LoggerConfig{ + Level: 2, + Dest: "test", + }, + Netbox: &NetboxConfig{ + APIToken: "netbox-token", + Hostname: "netbox.example.com", + HTTPScheme: "https", + Port: 666, + ValidateCert: false, // Default + Timeout: constants.DefaultAPITimeout, + Tag: constants.DefaultSourceName, // Default + TagColor: "00add8", // Default + RemoveOrphans: true, // Default + }, + Sources: []SourceConfig{ + { + Name: "testolvm", + Type: "ovirt", + HTTPScheme: "http", + Port: 443, + Hostname: "testolvm.example.com", + Username: "admin@internal", + Password: "adminpass", + IgnoredSubnets: []string{ + "172.16.0.0/12", + "192.168.0.0/16", + "fd00::/8", + }, + ValidateCert: true, + Tag: "testing", + TagColor: "ff0000", + }, + { + Name: "prodolvm", + Type: "ovirt", + Port: 80, + HTTPScheme: "https", + Hostname: "ovirt.example.com", + Username: "admin", + Password: "adminpass", + IgnoredSubnets: []string{ + "172.16.0.0/12", + }, + ValidateCert: false, + Tag: "Source: prodolvm", // Default + TagColor: "aa1409", // Default + ClusterSiteRelations: []string{ + "Cluster_NYC = New York", + "Cluster_FFM.* = Frankfurt", + "Datacenter_BERLIN/* = Berlin", + }, + HostSiteRelations: []string{ + ".* = Berlin", + }, + ClusterTenantRelations: []string{ + ".*Stark = Stark Industries", + ".* = Default", + }, + HostTenantRelations: []string{ + ".*Health = Health Department", + ".* = Default", + }, + VMTenantRelations: []string{ + ".*Health = Health Department", + ".* = Default", + }, + }, + }, + } + got, err := ParseConfig(filename) + if err != nil { + t.Errorf("ParseConfig() error = %v", err) + return + } + if !reflect.DeepEqual(got, want) { + t.Errorf("got = %v\nwant %v\n", got, want) + } + + // test string method + fmt.Printf("config: %v\n", got) +} + +func TestParseValidConfigs(t *testing.T) { + testCases := []struct { + filename string + }{ + { + filename: "valid_config1.yaml", + }, + { + filename: "valid_config2.yaml", + }, + } + for _, tc := range testCases { + t.Run(tc.filename, func(t *testing.T) { + filename := filepath.Join("testdata", tc.filename) + config, err := ParseConfig(filename) + if err != nil { + t.Errorf("error parsing config: %s", err) + } + // Verify that logger config String() method works correctly + fmt.Println(config.Logger) + }) + } +} + +// Test case struct. +type configTestCase struct { + filename string + expectedErr string +} + +// TestParseConfigInvalidConfigs runs through test cases of invalid configurations. +func TestParseConfigInvalidConfigs(t *testing.T) { + testCases := []configTestCase{ + {filename: "invalid_config1.yaml", expectedErr: "netbox.hostname: cannot be empty"}, + {filename: "invalid_config2.yaml", expectedErr: "netbox.port: must be between 0 and 65535. Is 333333"}, + {filename: "invalid_config3.yaml", expectedErr: "source[testolvm].type is not valid"}, + {filename: "invalid_config4.yaml", expectedErr: "netbox.httpScheme: must be either http or https. Is httpd"}, + {filename: "invalid_config5.yaml", expectedErr: "source[prodovirt].httpScheme: must be either http or https. Is httpd"}, + {filename: "invalid_config6.yaml", expectedErr: "source[testolvm].hostTenantRelations: invalid regex relation: This should not work. Should be of format: regex = value"}, + {filename: "invalid_config7.yaml", expectedErr: "source[prodolvm].hostTenantRelations: invalid regex: [a-z++, in relation: [a-z++ = Should not work"}, + {filename: "invalid_config8.yaml", expectedErr: "source[testolvm].port: must be between 0 and 65535. Is 1111111"}, + {filename: "invalid_config9.yaml", expectedErr: "logger.level: must be between 0 and 3"}, + {filename: "invalid_config10.yaml", expectedErr: "netbox.timeout: cannot be negative"}, + {filename: "invalid_config11.yaml", expectedErr: "netbox.apiToken: cannot be empty"}, + {filename: "invalid_config12.yaml", expectedErr: "netbox.tagColor: must be a string of 6 hexadecimal characters"}, + {filename: "invalid_config13.yaml", expectedErr: "netbox.tagColor: must be a string of 6 lowercase hexadecimal characters"}, + {filename: "invalid_config14.yaml", expectedErr: "netbox.sourcePriority: len(config.Netbox.SourcePriority != len(config.Sources)"}, + {filename: "invalid_config15.yaml", expectedErr: "netbox.sourcePriority: source[wrongone] doesn't exist in the sources array"}, + {filename: "invalid_config16.yaml", expectedErr: "source[].name: cannot be empty"}, + {filename: "invalid_config17.yaml", expectedErr: "source[wrong].hostname: cannot be empty"}, + {filename: "invalid_config18.yaml", expectedErr: "source[wrong].username: cannot be empty"}, + {filename: "invalid_config19.yaml", expectedErr: "source[wrong].password: cannot be empty"}, + {filename: "invalid_config20.yaml", expectedErr: "source[wrong].ignoredSubnets: wrong format: 172.16.0.1"}, + {filename: "invalid_config21.yaml", expectedErr: "source[wrong].interfaceFilter: wrong format: error parsing regexp: missing closing ): `($a[ba]`"}, + {filename: "invalid_config22.yaml", expectedErr: "source[wrong].hostSiteRelations: invalid regex: (wrong(), in relation: (wrong() = wwrong"}, + {filename: "invalid_config23.yaml", expectedErr: "source[wrong].clusterSiteRelations: invalid regex: (wrong(), in relation: (wrong() = wwrong"}, + {filename: "invalid_config24.yaml", expectedErr: "source[wrong].clusterTenantRelations: invalid regex: (wrong(), in relation: (wrong() = wwrong"}, + {filename: "invalid_config25.yaml", expectedErr: "source[wrong].hostTenantRelations: invalid regex: (wrong(), in relation: (wrong() = wwrong"}, + {filename: "invalid_config26.yaml", expectedErr: "source[wrong].vmTenantRelations: invalid regex: (wrong(), in relation: (wrong() = wwrong"}, + {filename: "invalid_config27.yaml", expectedErr: "source[wrong].vlanGroupRelations: invalid regex: (wrong(), in relation: (wrong() = wwrong"}, + {filename: "invalid_config28.yaml", expectedErr: "source[wrong].vlanTenantRelations: invalid regex: (wrong(), in relation: (wrong() = wwrong"}, + {filename: "invalid_config29.yaml", expectedErr: "yaml: unmarshal errors:\n line 2: cannot unmarshal !!str `2dasf` into int"}, + {filename: "invalid_config1111.yaml", expectedErr: "open testdata/invalid_config1111.yaml: no such file or directory"}, + } + + for _, tc := range testCases { + t.Run(tc.filename, func(t *testing.T) { + filename := filepath.Join("testdata", tc.filename) + _, err := ParseConfig(filename) + if err == nil { + t.Errorf("Expected error for %v, got nil", tc.filename) + } else if err.Error() != tc.expectedErr { + t.Errorf("Expected error: %v, got: %v", tc.expectedErr, err) + } + }) + } +} diff --git a/internal/parser/parser_valid_test.go b/internal/parser/parser_valid_test.go deleted file mode 100644 index 76380265..00000000 --- a/internal/parser/parser_valid_test.go +++ /dev/null @@ -1,92 +0,0 @@ -package parser - -import ( - "path/filepath" - "reflect" - "testing" - - "github.com/bl4ko/netbox-ssot/internal/constants" -) - -func TestValidonfig(t *testing.T) { - filename := filepath.Join("testdata", "valid_config.yaml") - want := &Config{ - Logger: &LoggerConfig{ - Level: 2, - Dest: "test", - }, - Netbox: &NetboxConfig{ - APIToken: "netbox-token", - Hostname: "netbox.example.com", - HTTPScheme: "https", - Port: 666, - ValidateCert: false, // Default - Timeout: constants.DefaultAPITimeout, - Tag: constants.DefaultSourceName, // Default - TagColor: "00add8", // Default - RemoveOrphans: true, // Default - }, - Sources: []SourceConfig{ - { - Name: "testolvm", - Type: "ovirt", - HTTPScheme: "http", - Port: 443, - Hostname: "testolvm.example.com", - Username: "admin@internal", - Password: "adminpass", - IgnoredSubnets: []string{ - "172.16.0.0/12", - "192.168.0.0/16", - "fd00::/8", - }, - ValidateCert: true, - Tag: "testing", - TagColor: "ff0000", - }, - { - Name: "prodolvm", - Type: "ovirt", - Port: 80, - HTTPScheme: "https", - Hostname: "ovirt.example.com", - Username: "admin", - Password: "adminpass", - IgnoredSubnets: []string{ - "172.16.0.0/12", - }, - ValidateCert: false, - Tag: "Source: prodolvm", // Default - TagColor: "aa1409", // Default - ClusterSiteRelations: []string{ - "Cluster_NYC = New York", - "Cluster_FFM.* = Frankfurt", - "Datacenter_BERLIN/* = Berlin", - }, - HostSiteRelations: []string{ - ".* = Berlin", - }, - ClusterTenantRelations: []string{ - ".*Stark = Stark Industries", - ".* = Default", - }, - HostTenantRelations: []string{ - ".*Health = Health Department", - ".* = Default", - }, - VMTenantRelations: []string{ - ".*Health = Health Department", - ".* = Default", - }, - }, - }, - } - got, err := ParseConfig(filename) - if err != nil { - t.Errorf("ParseConfig() error = %v", err) - return - } - if !reflect.DeepEqual(got, want) { - t.Errorf("got = %v\nwant %v\n", got, want) - } -} diff --git a/internal/parser/testdata/invalid_config10.yaml b/internal/parser/testdata/invalid_config10.yaml new file mode 100644 index 00000000..ff090b9e --- /dev/null +++ b/internal/parser/testdata/invalid_config10.yaml @@ -0,0 +1,8 @@ +logger: + dest: "test" + +netbox: + apiToken: "dummytoken" + port: 666 + hostname: netbox.example.com + timeout: -1 diff --git a/internal/parser/testdata/invalid_config11.yaml b/internal/parser/testdata/invalid_config11.yaml new file mode 100644 index 00000000..0cbb719c --- /dev/null +++ b/internal/parser/testdata/invalid_config11.yaml @@ -0,0 +1,7 @@ +logger: + dest: "test" + +netbox: + apiToken: "" # cannot be empty + port: 666 + hostname: netbox.example.com diff --git a/internal/parser/testdata/invalid_config12.yaml b/internal/parser/testdata/invalid_config12.yaml new file mode 100644 index 00000000..9535176f --- /dev/null +++ b/internal/parser/testdata/invalid_config12.yaml @@ -0,0 +1,8 @@ +logger: + dest: "test" + +netbox: + apiToken: dummy + port: 666 + hostname: netbox.example.com + tagColor: fffffff diff --git a/internal/parser/testdata/invalid_config13.yaml b/internal/parser/testdata/invalid_config13.yaml new file mode 100644 index 00000000..6fc06af1 --- /dev/null +++ b/internal/parser/testdata/invalid_config13.yaml @@ -0,0 +1,8 @@ +logger: + dest: "test" + +netbox: + apiToken: dummy + port: 666 + hostname: netbox.example.com + tagColor: ffFFff diff --git a/internal/parser/testdata/invalid_config14.yaml b/internal/parser/testdata/invalid_config14.yaml new file mode 100644 index 00000000..2ceb8e1b --- /dev/null +++ b/internal/parser/testdata/invalid_config14.yaml @@ -0,0 +1,38 @@ +logger: + level: 2 + dest: "test" + +netbox: + apiToken: "netbox-token" + port: 666 + hostname: netbox.example.com + httpScheme: "http" + sourcePriority: ["testolvm", "testvcenter"] # sourcePriority doesn't contain all sources + +source: + - name: testolvm + type: ovirt + hostname: testolvm.example.com + username: admin@internal + password: adminpass + permittedSubnets: + - 172.16.0.0/12 + - 192.168.0.0/16 + - fd00::/8 + validateCert: true + + - name: testvcenter + type: vmware + hostname: testvcenter.example.com + username: admin + password: adminpass + permittedSubnets: + - 172.16.0.0/12 + + - name: prodvcenter + type: vmware + hostname: prodvcenter.example.com + username: test + password: test + permittedSubnets: + - 10.0.0.0/8 diff --git a/internal/parser/testdata/invalid_config15.yaml b/internal/parser/testdata/invalid_config15.yaml new file mode 100644 index 00000000..945368dd --- /dev/null +++ b/internal/parser/testdata/invalid_config15.yaml @@ -0,0 +1,38 @@ +logger: + level: 2 + dest: "test" + +netbox: + apiToken: "netbox-token" + port: 666 + hostname: netbox.example.com + httpScheme: "http" + sourcePriority: ["testolvm", "testvcenter", "wrongone"] # sourcePriority doesn't contain all sources + +source: + - name: testolvm + type: ovirt + hostname: testolvm.example.com + username: admin@internal + password: adminpass + permittedSubnets: + - 172.16.0.0/12 + - 192.168.0.0/16 + - fd00::/8 + validateCert: true + + - name: testvcenter + type: vmware + hostname: testvcenter.example.com + username: admin + password: adminpass + permittedSubnets: + - 172.16.0.0/12 + + - name: prodvcenter + type: vmware + hostname: prodvcenter.example.com + username: test + password: test + permittedSubnets: + - 10.0.0.0/8 diff --git a/internal/parser/testdata/invalid_config16.yaml b/internal/parser/testdata/invalid_config16.yaml new file mode 100644 index 00000000..ecb9bfe8 --- /dev/null +++ b/internal/parser/testdata/invalid_config16.yaml @@ -0,0 +1,38 @@ +logger: + level: 2 + dest: "test" + +netbox: + apiToken: "netbox-token" + port: 666 + hostname: netbox.example.com + httpScheme: "http" + sourcePriority: ["testolvm", "testvcenter", ""] + +source: + - name: testolvm + type: ovirt + hostname: testolvm.example.com + username: admin@internal + password: adminpass + permittedSubnets: + - 172.16.0.0/12 + - 192.168.0.0/16 + - fd00::/8 + validateCert: true + + - name: testvcenter + type: vmware + hostname: testvcenter.example.com + username: admin + password: adminpass + permittedSubnets: + - 172.16.0.0/12 + + - name: "" # wrong: empty name + type: vmware + hostname: prodvcenter.example.com + username: test + password: test + permittedSubnets: + - 10.0.0.0/8 diff --git a/internal/parser/testdata/invalid_config17.yaml b/internal/parser/testdata/invalid_config17.yaml new file mode 100644 index 00000000..abfb6c5f --- /dev/null +++ b/internal/parser/testdata/invalid_config17.yaml @@ -0,0 +1,38 @@ +logger: + level: 2 + dest: "test" + +netbox: + apiToken: "netbox-token" + port: 666 + hostname: netbox.example.com + httpScheme: "http" + sourcePriority: ["testolvm", "testvcenter", "wrong"] + +source: + - name: testolvm + type: ovirt + hostname: testolvm.example.com + username: admin@internal + password: adminpass + permittedSubnets: + - 172.16.0.0/12 + - 192.168.0.0/16 + - fd00::/8 + validateCert: true + + - name: testvcenter + type: vmware + hostname: testvcenter.example.com + username: admin + password: adminpass + permittedSubnets: + - 172.16.0.0/12 + + - name: wrong + type: vmware + hostname: "" # cannot be empty + username: test + password: test + permittedSubnets: + - 10.0.0.0/8 diff --git a/internal/parser/testdata/invalid_config18.yaml b/internal/parser/testdata/invalid_config18.yaml new file mode 100644 index 00000000..40c5ee5b --- /dev/null +++ b/internal/parser/testdata/invalid_config18.yaml @@ -0,0 +1,16 @@ +logger: + level: 2 + dest: "test" + +netbox: + apiToken: "netbox-token" + port: 666 + hostname: netbox.example.com + httpScheme: "http" + +source: + - name: wrong + type: ovirt + hostname: testolvm.example.com + username: "" # cannot be empty + password: adminpass diff --git a/internal/parser/testdata/invalid_config19.yaml b/internal/parser/testdata/invalid_config19.yaml new file mode 100644 index 00000000..5d12147b --- /dev/null +++ b/internal/parser/testdata/invalid_config19.yaml @@ -0,0 +1,16 @@ +logger: + level: 2 + dest: "test" + +netbox: + apiToken: "netbox-token" + port: 666 + hostname: netbox.example.com + httpScheme: "http" + +source: + - name: wrong + type: ovirt + hostname: testolvm.example.com + username: "test" + password: "" # cannot be empty diff --git a/internal/parser/testdata/invalid_config20.yaml b/internal/parser/testdata/invalid_config20.yaml new file mode 100644 index 00000000..d744dba6 --- /dev/null +++ b/internal/parser/testdata/invalid_config20.yaml @@ -0,0 +1,20 @@ +logger: + level: 2 + dest: "test" + +netbox: + apiToken: "netbox-token" + port: 666 + hostname: netbox.example.com + httpScheme: "http" + +source: + - name: wrong + type: ovirt + hostname: testolvm.example.com + username: "test" + password: "test" + ignoredSubnets: + - 192.168.1.24/20 + - 172.16.0.1/16 + - 172.16.0.1 # Wrong format diff --git a/internal/parser/testdata/invalid_config21.yaml b/internal/parser/testdata/invalid_config21.yaml new file mode 100644 index 00000000..08015559 --- /dev/null +++ b/internal/parser/testdata/invalid_config21.yaml @@ -0,0 +1,17 @@ +logger: + level: 2 + dest: "test" + +netbox: + apiToken: "netbox-token" + port: 666 + hostname: netbox.example.com + httpScheme: "http" + +source: + - name: wrong + type: ovirt + hostname: testolvm.example.com + username: "test" + password: "test" + interfaceFilter: ($a[ba] # wrong regex format diff --git a/internal/parser/testdata/invalid_config22.yaml b/internal/parser/testdata/invalid_config22.yaml new file mode 100644 index 00000000..d5a40c0c --- /dev/null +++ b/internal/parser/testdata/invalid_config22.yaml @@ -0,0 +1,18 @@ +logger: + level: 2 + dest: "test" + +netbox: + apiToken: "netbox-token" + port: 666 + hostname: netbox.example.com + httpScheme: "http" + +source: + - name: wrong + type: ovirt + hostname: testolvm.example.com + username: "test" + password: "test" + hostSiteRelations: + - (wrong() = wwrong diff --git a/internal/parser/testdata/invalid_config23.yaml b/internal/parser/testdata/invalid_config23.yaml new file mode 100644 index 00000000..f2b79cb0 --- /dev/null +++ b/internal/parser/testdata/invalid_config23.yaml @@ -0,0 +1,18 @@ +logger: + level: 2 + dest: "test" + +netbox: + apiToken: "netbox-token" + port: 666 + hostname: netbox.example.com + httpScheme: "http" + +source: + - name: wrong + type: ovirt + hostname: testolvm.example.com + username: "test" + password: "test" + clusterSiteRelations: + - (wrong() = wwrong diff --git a/internal/parser/testdata/invalid_config24.yaml b/internal/parser/testdata/invalid_config24.yaml new file mode 100644 index 00000000..502fca8b --- /dev/null +++ b/internal/parser/testdata/invalid_config24.yaml @@ -0,0 +1,18 @@ +logger: + level: 2 + dest: "test" + +netbox: + apiToken: "netbox-token" + port: 666 + hostname: netbox.example.com + httpScheme: "http" + +source: + - name: wrong + type: ovirt + hostname: testolvm.example.com + username: "test" + password: "test" + clusterTenantRelations: + - (wrong() = wwrong diff --git a/internal/parser/testdata/invalid_config25.yaml b/internal/parser/testdata/invalid_config25.yaml new file mode 100644 index 00000000..820fae63 --- /dev/null +++ b/internal/parser/testdata/invalid_config25.yaml @@ -0,0 +1,18 @@ +logger: + level: 2 + dest: "test" + +netbox: + apiToken: "netbox-token" + port: 666 + hostname: netbox.example.com + httpScheme: "http" + +source: + - name: wrong + type: ovirt + hostname: testolvm.example.com + username: "test" + password: "test" + hostTenantRelations: + - (wrong() = wwrong diff --git a/internal/parser/testdata/invalid_config26.yaml b/internal/parser/testdata/invalid_config26.yaml new file mode 100644 index 00000000..92e5db87 --- /dev/null +++ b/internal/parser/testdata/invalid_config26.yaml @@ -0,0 +1,18 @@ +logger: + level: 2 + dest: "test" + +netbox: + apiToken: "netbox-token" + port: 666 + hostname: netbox.example.com + httpScheme: "http" + +source: + - name: wrong + type: ovirt + hostname: testolvm.example.com + username: "test" + password: "test" + vmTenantRelations: + - (wrong() = wwrong diff --git a/internal/parser/testdata/invalid_config27.yaml b/internal/parser/testdata/invalid_config27.yaml new file mode 100644 index 00000000..4a62a5a4 --- /dev/null +++ b/internal/parser/testdata/invalid_config27.yaml @@ -0,0 +1,18 @@ +logger: + level: 2 + dest: "test" + +netbox: + apiToken: "netbox-token" + port: 666 + hostname: netbox.example.com + httpScheme: "http" + +source: + - name: wrong + type: ovirt + hostname: testolvm.example.com + username: "test" + password: "test" + vlanGroupRelations: + - (wrong() = wwrong diff --git a/internal/parser/testdata/invalid_config28.yaml b/internal/parser/testdata/invalid_config28.yaml new file mode 100644 index 00000000..b47a88ef --- /dev/null +++ b/internal/parser/testdata/invalid_config28.yaml @@ -0,0 +1,18 @@ +logger: + level: 2 + dest: "test" + +netbox: + apiToken: "netbox-token" + port: 666 + hostname: netbox.example.com + httpScheme: "http" + +source: + - name: wrong + type: ovirt + hostname: testolvm.example.com + username: "test" + password: "test" + vlanTenantRelations: + - (wrong() = wwrong diff --git a/internal/parser/testdata/invalid_config29.yaml b/internal/parser/testdata/invalid_config29.yaml new file mode 100644 index 00000000..5c5b98c0 --- /dev/null +++ b/internal/parser/testdata/invalid_config29.yaml @@ -0,0 +1,9 @@ +logger: + level: "2dasf" # decoder error + dest: "test" + +netbox: + apiToken: "netbox-token" + port: 666 + hostname: netbox.example.com + httpScheme: "http" diff --git a/internal/parser/testdata/invalid_config8.yaml b/internal/parser/testdata/invalid_config8.yaml new file mode 100644 index 00000000..1e56f0a1 --- /dev/null +++ b/internal/parser/testdata/invalid_config8.yaml @@ -0,0 +1,16 @@ +logger: + level: 2 + dest: "test" + +netbox: + apiToken: "netbox-token" + port: 666 + hostname: netbox.example.com + +source: + - name: testolvm + type: ovirt + hostname: testolvm.example.com + username: admin@internal + password: adminpass + port: 1111111 # wrong port number diff --git a/internal/parser/testdata/invalid_config9.yaml b/internal/parser/testdata/invalid_config9.yaml new file mode 100644 index 00000000..96443632 --- /dev/null +++ b/internal/parser/testdata/invalid_config9.yaml @@ -0,0 +1,8 @@ +logger: + level: 4 # Wrong log level + dest: "test" + +netbox: + apiToken: "netbox-token" + port: 666 + hostname: netbox.example.com diff --git a/internal/parser/testdata/valid_config.yaml b/internal/parser/testdata/valid_config1.yaml similarity index 100% rename from internal/parser/testdata/valid_config.yaml rename to internal/parser/testdata/valid_config1.yaml diff --git a/internal/parser/testdata/valid_config2.yaml b/internal/parser/testdata/valid_config2.yaml new file mode 100644 index 00000000..9c5a9388 --- /dev/null +++ b/internal/parser/testdata/valid_config2.yaml @@ -0,0 +1,23 @@ +logger: + level: 2 + dest: "" + +netbox: + apiToken: "netbox-token" + port: 666 + hostname: netbox.example.com + +source: + - name: dnacenter + type: dnac + httpScheme: http + hostname: dnac.example.com + username: admin@internal + password: adminpass + + - name: prodprox + type: proxmox + hostname: proxmox.example.com + username: admin + port: 80 + password: adminpass