From a60ebf8710a53c14a2a31e7006112025f6c7e141 Mon Sep 17 00:00:00 2001 From: Roxie Gibson Date: Mon, 19 Jul 2021 14:36:00 +0100 Subject: [PATCH] tests: around 60% code coverage for config package --- config/env.go | 2 + config/env_test.go | 113 ++++++++++++++++++ tests/resources/test_folder/bar | 0 .../resources/test_folder/folder1/readme.txt | 5 + .../test_folder/folder2/fsociety00.dat | 0 tests/resources/test_folder/foo | 0 .../servers/evil.corp/ecloud.env | 2 + 7 files changed, 122 insertions(+) create mode 100644 config/env_test.go create mode 100644 tests/resources/test_folder/bar create mode 100644 tests/resources/test_folder/folder1/readme.txt create mode 100644 tests/resources/test_folder/folder2/fsociety00.dat create mode 100644 tests/resources/test_folder/foo create mode 100644 tests/resources/valid_abra_config/servers/evil.corp/ecloud.env diff --git a/config/env.go b/config/env.go index 21bdca65..4d9da42f 100644 --- a/config/env.go +++ b/config/env.go @@ -75,6 +75,8 @@ func GetApp(apps AppFiles, name AppName) (App, error) { return app, nil } +// TODO: maybe better names than read and get + func readAppFile(appFile AppFile, name AppName) (App, error) { env, err := readEnv(appFile.Path) if err != nil { diff --git a/config/env_test.go b/config/env_test.go new file mode 100644 index 00000000..d26503a9 --- /dev/null +++ b/config/env_test.go @@ -0,0 +1,113 @@ +package config + +import ( + "os" + "path" + "reflect" + "strings" + "testing" +) + +var testFolder = os.ExpandEnv("$PWD/../tests/resources/test_folder") +var validAbraConf = os.ExpandEnv("$PWD/../tests/resources/valid_abra_config") + +// make sure these are in alphabetical order +var tFolders = []string{"folder1", "folder2"} +var tFiles = []string{"bar", "foo"} + +var appName = "ecloud" +var serverName = "evil.corp" + +var expectedAppEnv = AppEnv{ + "DOMAIN": "ecloud.evil.corp", + "TYPE": "ecloud", +} + +var expectedApp = App{ + Name: appName, + Type: expectedAppEnv["TYPE"], + Domain: expectedAppEnv["DOMAIN"], + Env: expectedAppEnv, +} + +var expectedAppFile = AppFile{ + Path: path.Join(validAbraConf, "servers", serverName, appName+".env"), + Server: serverName, +} + +var expectedAppFiles = map[string]AppFile{ + appName: expectedAppFile, +} + +// var expectedServerNames = []string{"evil.corp"} + +func TestGetAllFoldersInDirectory(t *testing.T) { + folders, err := getAllFoldersInDirectory(testFolder) + if err != nil { + t.Fatal(err) + } + if !reflect.DeepEqual(folders, tFolders) { + t.Fatalf("did not get expected folders. Expected: (%s), Got: (%s)", strings.Join(tFolders, ","), strings.Join(folders, ",")) + } +} + +func TestGetAllFilesInDirectory(t *testing.T) { + files, err := getAllFilesInDirectory(testFolder) + if err != nil { + t.Fatal(err) + } + var fileNames []string + for _, file := range files { + fileNames = append(fileNames, file.Name()) + } + if !reflect.DeepEqual(fileNames, tFiles) { + t.Fatalf("did not get expected files. Expected: (%s), Got: (%s)", strings.Join(tFiles, ","), strings.Join(fileNames, ",")) + } +} + +func TestReadEnv(t *testing.T) { + env, err := readEnv(expectedAppFile.Path) + if err != nil { + t.Fatal(err) + } + if !reflect.DeepEqual(env, expectedAppEnv) { + t.Fatalf( + "did not get expected application settings. Expected: DOMAIN=%s TYPE=%s; Got: DOMAIN=%s TYPE=%s", + expectedAppEnv["DOMAIN"], + expectedAppEnv["TYPE"], + env["DOMAIN"], + env["TYPE"], + ) + } +} + +func TestMakeApp(t *testing.T) { + app, err := makeApp(expectedAppEnv, appName) + if err != nil { + t.Fatal(err) + } + if !reflect.DeepEqual(app, expectedApp) { + t.Fatalf("did not get expected app type. Expected: %s; Got: %s", app, expectedApp) + } +} + +func TestReadAppFile(t *testing.T) { + app, err := readAppFile(expectedAppFile, appName) + if err != nil { + t.Fatal(err) + } + if !reflect.DeepEqual(app, expectedApp) { + t.Fatalf("did not get expected app type. Expected: %s; Got: %s", app, expectedApp) + } +} + +func TestGetApp(t *testing.T) { + // TODO: Test failures as well as successes + app, err := GetApp(expectedAppFiles, appName) + if err != nil { + t.Fatal(err) + } + if !reflect.DeepEqual(app, expectedApp) { + t.Fatalf("did not get expected app type. Expected: %s; Got: %s", app, expectedApp) + } +} diff --git a/tests/resources/test_folder/bar b/tests/resources/test_folder/bar new file mode 100644 index 00000000..e69de29b diff --git a/tests/resources/test_folder/folder1/readme.txt b/tests/resources/test_folder/folder1/readme.txt new file mode 100644 index 00000000..c3a2bb68 --- /dev/null +++ b/tests/resources/test_folder/folder1/readme.txt @@ -0,0 +1,5 @@ +--------- readme.txt--------- + + LEAVE ME HERE + +----------------------------- \ No newline at end of file diff --git a/tests/resources/test_folder/folder2/fsociety00.dat b/tests/resources/test_folder/folder2/fsociety00.dat new file mode 100644 index 00000000..e69de29b diff --git a/tests/resources/test_folder/foo b/tests/resources/test_folder/foo new file mode 100644 index 00000000..e69de29b diff --git a/tests/resources/valid_abra_config/servers/evil.corp/ecloud.env b/tests/resources/valid_abra_config/servers/evil.corp/ecloud.env new file mode 100644 index 00000000..d5aa434c --- /dev/null +++ b/tests/resources/valid_abra_config/servers/evil.corp/ecloud.env @@ -0,0 +1,2 @@ +TYPE=ecloud +DOMAIN=ecloud.evil.corp \ No newline at end of file