github.com/devcamcar/cli@v0.0.0-20181107134215-706a05759d18/config/context_file_test.go (about) 1 package config 2 3 import ( 4 "os" 5 "path" 6 "testing" 7 ) 8 9 type testCase struct { 10 name string 11 file string 12 contents string 13 expected *ContextFile 14 } 15 16 func TestContextFile(t *testing.T) { 17 folder := path.Join(os.TempDir(), "fn-tests") 18 err := os.Mkdir(folder, 0755) 19 if err != nil { 20 t.Fatalf("failed to create test folder %s: %v", folder, err) 21 } 22 defer cleanup(folder) 23 24 tests, err := prepareTestFiles(folder) 25 if err != nil { 26 t.Fatalf("failed to prepare test files in %s", folder) 27 } 28 29 for _, tst := range tests { 30 t.Run(tst.name, func(t *testing.T) { 31 actual, err := NewContextFile(tst.file) 32 if err != nil { 33 t.Fatalf("failed to create a context file: %v", err) 34 } 35 36 if actual.ContextProvider != tst.expected.ContextProvider { 37 t.Fatalf("ContextProvider: expected '%s', but got '%s'", tst.expected.ContextProvider, actual.ContextProvider) 38 } 39 40 if actual.EnvFnAPIURL != tst.expected.EnvFnAPIURL { 41 t.Fatalf("EnvFnAPIURL: expected '%s', but got '%s'", tst.expected.EnvFnAPIURL, actual.EnvFnAPIURL) 42 } 43 44 if actual.EnvFnRegistry != tst.expected.EnvFnRegistry { 45 t.Fatalf("EnvFnRegistry: expected '%s', but got '%s'", tst.expected.EnvFnRegistry, actual.EnvFnRegistry) 46 } 47 }) 48 } 49 } 50 51 // prepareTestFiles creates YAML files in a temporary test folder 52 func prepareTestFiles(folder string) ([]testCase, error) { 53 var tests = []testCase{ 54 { 55 name: "Simple context file", 56 file: path.Join(folder, "default.yaml"), 57 contents: ` 58 api-url: http://localhost:8080 59 provider: default 60 registry: "someregistry"`, 61 expected: &ContextFile{ 62 ContextProvider: "default", 63 EnvFnAPIURL: "http://localhost:8080", 64 EnvFnRegistry: "someregistry", 65 }, 66 }, 67 } 68 69 for _, tf := range tests { 70 f, err := os.Create(tf.file) 71 if err != nil { 72 return nil, err 73 } 74 defer f.Close() 75 f.WriteString(tf.contents) 76 } 77 return tests, nil 78 } 79 80 // cleanup removes the temporary folder 81 func cleanup(folder string) error { 82 return os.RemoveAll(folder) 83 }