Files
kairos-agent/pkg/config/schemas/p2p_schema_test.go

182 lines
3.7 KiB
Go
Raw Normal View History

seedling: Kairos config validator library (#798) * Validate yaml Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * lint feedback Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Validate User name with JsonSchema Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * WIP users validation Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add multiple examples for ssh keys Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add example of complex validation with AnyOf Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Better business rule example with P2P Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Test with message for empty network_token Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Split into a file for each sub section Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add install schema validations Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add to main schema Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add more tests for p2p Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add install schema Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Validate fields between new and old schema It also adds the missing ones Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Lint Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Remove temp debugging functions Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add new fields in old schema Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add documentation for all exported Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Move schemas into a directory of their own Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add missing dot at end of comment Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Rebase master and add local_file to bundles Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> --------- Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>
2023-02-08 11:02:13 +01:00
package config_test
import (
"strings"
. "github.com/kairos-io/kairos/pkg/config/schemas"
. "github.com/onsi/ginkgo/v2"
. "github.com/onsi/gomega"
)
var _ = Describe("P2P Schema", func() {
var config *KConfig
var err error
var yaml string
JustBeforeEach(func() {
sparkles: Integrate schema validation (#853) * Change ValidationError to return the actual error Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add validate command Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Warn validation errors when scanning configs Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Lint Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add schema command to print config json schema Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add strict-validations flag Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Lint and remove focus Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Rename command schema to print-schema Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Fix issue by reading originalData Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Lint Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Remove test from removed feature Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add comments to exported functions Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Lint Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add test for validate.go Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Remove focus Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add more tests for root schema Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add more tests Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> --------- Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> Co-authored-by: Itxaka <itxaka.garcia@spectrocloud.com>
2023-02-14 16:15:13 +01:00
config, err = NewConfigFromYAML(yaml, P2PSchema{})
seedling: Kairos config validator library (#798) * Validate yaml Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * lint feedback Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Validate User name with JsonSchema Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * WIP users validation Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add multiple examples for ssh keys Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add example of complex validation with AnyOf Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Better business rule example with P2P Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Test with message for empty network_token Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Split into a file for each sub section Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add install schema validations Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add to main schema Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add more tests for p2p Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add install schema Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Validate fields between new and old schema It also adds the missing ones Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Lint Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Remove temp debugging functions Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add new fields in old schema Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add documentation for all exported Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Move schemas into a directory of their own Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add missing dot at end of comment Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Rebase master and add local_file to bundles Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> --------- Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>
2023-02-08 11:02:13 +01:00
Expect(err).ToNot(HaveOccurred())
})
Context("with role master", func() {
BeforeEach(func() {
yaml = `#cloud-config
role: master
network_token: "b3RwOgogIGRoYWdlX3NpemU6IDIwOTcxNTIwCg=="`
})
It("succeeds", func() {
Expect(config.IsValid()).To(BeTrue())
})
})
Context("with role worker", func() {
BeforeEach(func() {
yaml = `#cloud-config
role: worker
network_token: "b3RwOgogIGRoYWdlX3NpemU6IDIwOTcxNTIwCg=="`
})
It("succeeds", func() {
Expect(config.IsValid()).To(BeTrue())
})
})
Context("with role none", func() {
BeforeEach(func() {
yaml = `#cloud-config
role: none
network_token: "b3RwOgogIGRoYWdlX3NpemU6IDIwOTcxNTIwCg=="`
})
It("succeeds", func() {
Expect(config.IsValid()).To(BeTrue())
})
})
Context("with other role", func() {
BeforeEach(func() {
yaml = `#cloud-config
role: foobar
network_token: "b3RwOgogIGRoYWdlX3NpemU6IDIwOTcxNTIwCg=="`
})
It("errors", func() {
Expect(config.IsValid()).NotTo(BeTrue())
sparkles: Integrate schema validation (#853) * Change ValidationError to return the actual error Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add validate command Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Warn validation errors when scanning configs Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Lint Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add schema command to print config json schema Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add strict-validations flag Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Lint and remove focus Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Rename command schema to print-schema Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Fix issue by reading originalData Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Lint Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Remove test from removed feature Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add comments to exported functions Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Lint Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add test for validate.go Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Remove focus Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add more tests for root schema Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add more tests Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> --------- Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> Co-authored-by: Itxaka <itxaka.garcia@spectrocloud.com>
2023-02-14 16:15:13 +01:00
Expect(config.ValidationError.Error()).To(MatchRegexp(`value must be one of "master", "worker", "none"`))
seedling: Kairos config validator library (#798) * Validate yaml Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * lint feedback Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Validate User name with JsonSchema Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * WIP users validation Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add multiple examples for ssh keys Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add example of complex validation with AnyOf Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Better business rule example with P2P Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Test with message for empty network_token Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Split into a file for each sub section Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add install schema validations Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add to main schema Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add more tests for p2p Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add install schema Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Validate fields between new and old schema It also adds the missing ones Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Lint Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Remove temp debugging functions Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add new fields in old schema Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add documentation for all exported Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Move schemas into a directory of their own Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add missing dot at end of comment Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Rebase master and add local_file to bundles Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> --------- Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>
2023-02-08 11:02:13 +01:00
})
})
Context("With a network_token and p2p.auto.enable = false", func() {
BeforeEach(func() {
yaml = `#cloud-config
network_token: "b3RwOgogIGRoYWdlX3NpemU6IDIwOTcxNTIwCg=="
auto:
enable: false`
})
It("errors", func() {
Expect(config.IsValid()).NotTo(BeTrue())
Expect(
sparkles: Integrate schema validation (#853) * Change ValidationError to return the actual error Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add validate command Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Warn validation errors when scanning configs Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Lint Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add schema command to print config json schema Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add strict-validations flag Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Lint and remove focus Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Rename command schema to print-schema Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Fix issue by reading originalData Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Lint Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Remove test from removed feature Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add comments to exported functions Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Lint Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add test for validate.go Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Remove focus Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add more tests for root schema Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add more tests Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> --------- Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> Co-authored-by: Itxaka <itxaka.garcia@spectrocloud.com>
2023-02-14 16:15:13 +01:00
strings.Contains(config.ValidationError.Error(), `value must be true`),
seedling: Kairos config validator library (#798) * Validate yaml Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * lint feedback Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Validate User name with JsonSchema Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * WIP users validation Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add multiple examples for ssh keys Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add example of complex validation with AnyOf Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Better business rule example with P2P Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Test with message for empty network_token Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Split into a file for each sub section Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add install schema validations Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add to main schema Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add more tests for p2p Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add install schema Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Validate fields between new and old schema It also adds the missing ones Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Lint Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Remove temp debugging functions Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add new fields in old schema Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add documentation for all exported Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Move schemas into a directory of their own Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add missing dot at end of comment Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Rebase master and add local_file to bundles Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> --------- Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>
2023-02-08 11:02:13 +01:00
).To(BeTrue())
})
})
Context("With an empty network_token and p2p.auto.enable = true", func() {
BeforeEach(func() {
yaml = `#cloud-config
network_token: ""
auto:
enable: true`
})
It("Fails", func() {
Expect(config.IsValid()).NotTo(BeTrue())
Expect(
sparkles: Integrate schema validation (#853) * Change ValidationError to return the actual error Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add validate command Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Warn validation errors when scanning configs Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Lint Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add schema command to print config json schema Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add strict-validations flag Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Lint and remove focus Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Rename command schema to print-schema Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Fix issue by reading originalData Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Lint Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Remove test from removed feature Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add comments to exported functions Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Lint Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add test for validate.go Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Remove focus Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add more tests for root schema Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add more tests Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> --------- Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> Co-authored-by: Itxaka <itxaka.garcia@spectrocloud.com>
2023-02-14 16:15:13 +01:00
strings.Contains(config.ValidationError.Error(),
seedling: Kairos config validator library (#798) * Validate yaml Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * lint feedback Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Validate User name with JsonSchema Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * WIP users validation Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add multiple examples for ssh keys Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add example of complex validation with AnyOf Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Better business rule example with P2P Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Test with message for empty network_token Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Split into a file for each sub section Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add install schema validations Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add to main schema Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add more tests for p2p Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add install schema Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Validate fields between new and old schema It also adds the missing ones Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Lint Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Remove temp debugging functions Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add new fields in old schema Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add documentation for all exported Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Move schemas into a directory of their own Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add missing dot at end of comment Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Rebase master and add local_file to bundles Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> --------- Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>
2023-02-08 11:02:13 +01:00
"length must be >= 1, but got 0",
),
).To(BeTrue())
})
})
Context("With a network_token and p2p.auto.enable = true", func() {
BeforeEach(func() {
yaml = `#cloud-config
network_token: "b3RwOgogIGRoYWdlX3NpemU6IDIwOTcxNTIwCg=="
auto:
enable: true`
})
It("succeeds", func() {
Expect(config.IsValid()).To(BeTrue())
})
})
Context("With a p2p.auto.enable = false and ha.enable = true", func() {
BeforeEach(func() {
yaml = `#cloud-config
network_token: ""
auto:
enable: false
ha:
enable: true`
})
It("errors", func() {
Expect(config.IsValid()).NotTo(BeTrue())
sparkles: Integrate schema validation (#853) * Change ValidationError to return the actual error Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add validate command Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Warn validation errors when scanning configs Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Lint Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add schema command to print config json schema Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add strict-validations flag Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Lint and remove focus Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Rename command schema to print-schema Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Fix issue by reading originalData Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Lint Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Remove test from removed feature Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add comments to exported functions Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Lint Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add test for validate.go Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Remove focus Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add more tests for root schema Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add more tests Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> --------- Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> Co-authored-by: Itxaka <itxaka.garcia@spectrocloud.com>
2023-02-14 16:15:13 +01:00
Expect(config.ValidationError.Error()).To(MatchRegexp("(length must be >= 1, but got 0|value must be true)"))
seedling: Kairos config validator library (#798) * Validate yaml Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * lint feedback Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Validate User name with JsonSchema Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * WIP users validation Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add multiple examples for ssh keys Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add example of complex validation with AnyOf Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Better business rule example with P2P Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Test with message for empty network_token Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Split into a file for each sub section Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add install schema validations Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add to main schema Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add more tests for p2p Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add install schema Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Validate fields between new and old schema It also adds the missing ones Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Lint Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Remove temp debugging functions Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add new fields in old schema Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add documentation for all exported Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Move schemas into a directory of their own Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add missing dot at end of comment Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Rebase master and add local_file to bundles Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> --------- Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>
2023-02-08 11:02:13 +01:00
})
})
Context("HA with 0 master nodes", func() {
BeforeEach(func() {
yaml = `#cloud-config
network_token: "b3RwOgogIGRoYWdlX3NpemU6IDIwOTcxNTIwCg=="
auto:
enable: true
ha:
enable: true
master_nodes: 0`
})
It("fails", func() {
Expect(config.IsValid()).NotTo(BeTrue())
sparkles: Integrate schema validation (#853) * Change ValidationError to return the actual error Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add validate command Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Warn validation errors when scanning configs Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Lint Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add schema command to print config json schema Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add strict-validations flag Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Lint and remove focus Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Rename command schema to print-schema Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Fix issue by reading originalData Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Lint Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Remove test from removed feature Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add comments to exported functions Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Lint Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add test for validate.go Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Remove focus Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add more tests for root schema Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add more tests Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> --------- Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> Co-authored-by: Itxaka <itxaka.garcia@spectrocloud.com>
2023-02-14 16:15:13 +01:00
Expect(config.ValidationError.Error()).To(MatchRegexp("must be >= 1 but found 0"))
seedling: Kairos config validator library (#798) * Validate yaml Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * lint feedback Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Validate User name with JsonSchema Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * WIP users validation Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add multiple examples for ssh keys Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add example of complex validation with AnyOf Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Better business rule example with P2P Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Test with message for empty network_token Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Split into a file for each sub section Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add install schema validations Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add to main schema Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add more tests for p2p Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add install schema Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Validate fields between new and old schema It also adds the missing ones Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Lint Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Remove temp debugging functions Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add new fields in old schema Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add documentation for all exported Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Move schemas into a directory of their own Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add missing dot at end of comment Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Rebase master and add local_file to bundles Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> --------- Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>
2023-02-08 11:02:13 +01:00
})
})
Context("HA", func() {
BeforeEach(func() {
yaml = `#cloud-config
network_token: "b3RwOgogIGRoYWdlX3NpemU6IDIwOTcxNTIwCg=="
auto:
enable: true
ha:
enable: true
master_nodes: 2`
})
It("succeedes", func() {
Expect(config.IsValid()).To(BeTrue())
})
})
Context("kubevip", func() {
BeforeEach(func() {
yaml = `#cloud-config
network_token: "b3RwOgogIGRoYWdlX3NpemU6IDIwOTcxNTIwCg=="
auto:
enable: true
ha:
enable: true
master_nodes: 2`
})
It("succeedes", func() {
Expect(config.IsValid()).To(BeTrue())
})
})
})