package config import ( "reflect" "testing" ) func TestValidConfig(t *testing.T) { var testCase = struct { name string description string file string want Config }{ name: "Test case: A valid Config", description: "Testing the parsing of valid configuration.", file: "./testdata/config-valid.json", want: Config{ ProjectName: "forge-platform-test-config", Docker: DockerConfig{ Network: DockerNetworkConfig{ Name: "forge-platform-test-netwwork", Subnet: "172.17.1.0/24", Driver: "default", }, SharedVolume: DockerSharedVolumeConfig{ Name: "shared-volume", }, }, Services: ServicesConfig{ Traefik: TraefikConfig{ CheckNewVersion: true, ContainerIp: "172.17.1.2", Domain: "forge.test.local", LogLevel: "info", SendAnonymousUsage: false, Version: "v2.4.9", }, Gitea: GiteaConfig{ AppName: "A git hosting platform", BaseUri: "git", ContainerIp: "172.17.1.3", DataDirectory: "/helix/data/gitea", Domain: "forge.test.local", GroupId: 0, HttpPort: 3000, InternalToken: "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYmYiOjE2MjY0ODQxNjV9.Lp2v7vluALZtAng1jte5-SvF69iAUoh9pFBxf-IJ1a0", LogLevel: "info", RootUrl: "https://forge.test.local/git", RunMode: "test", SecretKey: "gBFbTiV4GTwzonAyyHNKghc9lmWvaTmFqZs5u0h14Qgx5yp1OKlrZKgw1e5LfCiE", SshDomain: "forge.test.local", SshPort: 2222, UserId: 0, Version: "1.14.4", }, }, }, } testFunc := func(t *testing.T) { t.Log(testCase.description) got, err := NewConfig(testCase.file) if err != nil { t.Fatalf("Unable to create the configuration from file: %v", err) } if !reflect.DeepEqual(got, testCase.want) { t.Errorf("Unexpected Config value created. Got %v, want %v", got, testCase.want) } else { t.Log("Test passed.") } } t.Run(testCase.name, testFunc) } func TestInvalidConfig(t *testing.T) { var testCase = struct { name string description string file string }{ name: "Test case: An invalid Config", description: "Testing the handling of invalid configuration.", file: "./testdata/config-invalid.json", } testFunc := func(t *testing.T) { t.Log(testCase.description) _, err := NewConfig(testCase.file) if err == nil { t.Error("Expected an error with this invalid configuration.") } else { t.Log("Test passed.") } } t.Run(testCase.name, testFunc) }