github.com/loggregator/cli@v6.33.1-0.20180224010324-82334f081791+incompatible/util/configv3/env_test.go (about) 1 package configv3_test 2 3 import ( 4 "os" 5 "time" 6 7 . "code.cloudfoundry.org/cli/util/configv3" 8 9 . "github.com/onsi/ginkgo" 10 . "github.com/onsi/ginkgo/extensions/table" 11 . "github.com/onsi/gomega" 12 ) 13 14 var _ = Describe("Config", func() { 15 var ( 16 config *Config 17 homeDir string 18 ) 19 20 BeforeEach(func() { 21 homeDir = setup() 22 }) 23 24 AfterEach(func() { 25 teardown(homeDir) 26 }) 27 28 Context("when there are environment variables", func() { 29 BeforeEach(func() { 30 Expect(os.Setenv("CF_DIAL_TIMEOUT", "1234")).ToNot(HaveOccurred()) 31 Expect(os.Setenv("CF_DOCKER_PASSWORD", "banana")).ToNot(HaveOccurred()) 32 Expect(os.Setenv("CF_STAGING_TIMEOUT", "8675")).ToNot(HaveOccurred()) 33 Expect(os.Setenv("CF_STARTUP_TIMEOUT", "309")).ToNot(HaveOccurred()) 34 Expect(os.Setenv("https_proxy", "proxy.com")).ToNot(HaveOccurred()) 35 36 var err error 37 config, err = LoadConfig() 38 Expect(err).ToNot(HaveOccurred()) 39 Expect(config).ToNot(BeNil()) 40 }) 41 42 AfterEach(func() { 43 Expect(os.Unsetenv("CF_DIAL_TIMEOUT")).ToNot(HaveOccurred()) 44 Expect(os.Unsetenv("CF_DOCKER_PASSWORD")).ToNot(HaveOccurred()) 45 Expect(os.Unsetenv("CF_STAGING_TIMEOUT")).ToNot(HaveOccurred()) 46 Expect(os.Unsetenv("CF_STARTUP_TIMEOUT")).ToNot(HaveOccurred()) 47 Expect(os.Unsetenv("https_proxy")).ToNot(HaveOccurred()) 48 }) 49 50 It("overrides specific config values", func() { 51 Expect(config.DialTimeout()).To(Equal(1234 * time.Second)) 52 Expect(config.DockerPassword()).To(Equal("banana")) 53 Expect(config.HTTPSProxy()).To(Equal("proxy.com")) 54 Expect(config.StagingTimeout()).To(Equal(time.Duration(8675) * time.Minute)) 55 Expect(config.StartupTimeout()).To(Equal(time.Duration(309) * time.Minute)) 56 }) 57 }) 58 59 Describe("BinaryName", func() { 60 It("returns the name used to invoke", func() { 61 config, err := LoadConfig() 62 Expect(err).ToNot(HaveOccurred()) 63 Expect(config).ToNot(BeNil()) 64 65 // Ginkgo will uses a config file as the first test argument, so that 66 // will be considered the binary name 67 Expect(config.BinaryName()).To(Equal("configv3.test")) 68 }) 69 }) 70 71 Describe("BinaryVersion", func() { 72 It("returns back version.BinaryVersion", func() { 73 conf := Config{} 74 Expect(conf.BinaryVersion()).To(Equal("0.0.0-unknown-version")) 75 }) 76 }) 77 78 DescribeTable("Experimental", 79 func(envVal string, expected bool) { 80 setConfig(homeDir, `{}`) 81 82 defer os.Unsetenv("CF_CLI_EXPERIMENTAL") 83 Expect(os.Unsetenv("CF_CLI_EXPERIMENTAL")).ToNot(HaveOccurred()) 84 if envVal != "" { 85 Expect(os.Setenv("CF_CLI_EXPERIMENTAL", envVal)).ToNot(HaveOccurred()) 86 } 87 88 config, err := LoadConfig() 89 Expect(err).ToNot(HaveOccurred()) 90 Expect(config).ToNot(BeNil()) 91 92 Expect(config.Experimental()).To(Equal(expected)) 93 }, 94 95 Entry("uses default value of false if environment value is not set", "", false), 96 Entry("uses environment value if a valid environment value is set", "true", true), 97 Entry("uses default value of false if an invalid environment value is set", "something-invalid", false), 98 ) 99 100 DescribeTable("LogLevel", 101 func(envVal string, expectedLevel int) { 102 config := Config{ENV: EnvOverride{CFLogLevel: envVal}} 103 Expect(config.LogLevel()).To(Equal(expectedLevel)) 104 }, 105 106 Entry("Default to 0", "", 0), 107 Entry("panic returns 0", "panic", 0), 108 Entry("fatal returns 1", "fatal", 1), 109 Entry("error returns 2", "error", 2), 110 Entry("warn returns 3", "warn", 3), 111 Entry("info returns 4", "info", 4), 112 Entry("debug returns 5", "debug", 5), 113 Entry("dEbUg returns 5", "dEbUg", 5), 114 ) 115 })