github.com/dcarley/cf-cli@v6.24.1-0.20170220111324-4225ff346898+incompatible/util/configv3/plugins_test.go (about) 1 package configv3_test 2 3 import ( 4 "os" 5 "path/filepath" 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 homeDir string 16 17 BeforeEach(func() { 18 homeDir = setup() 19 }) 20 21 AfterEach(func() { 22 teardown(homeDir) 23 }) 24 25 DescribeTable("when the plugin config exists", 26 func(setup func() (string, string)) { 27 location, CFPluginHome := setup() 28 if CFPluginHome != "" { 29 os.Setenv("CF_PLUGIN_HOME", CFPluginHome) 30 defer os.Unsetenv("CF_PLUGIN_HOME") 31 } 32 33 rawConfig := ` 34 { 35 "Plugins": { 36 "Diego-Enabler": { 37 "Location": "~/.cf/plugins/diego-enabler_darwin_amd64", 38 "Version": { 39 "Major": 1, 40 "Minor": 0, 41 "Build": 1 42 }, 43 "Commands": [ 44 { 45 "Name": "enable-diego", 46 "Alias": "", 47 "HelpText": "enable Diego support for an app", 48 "UsageDetails": { 49 "Usage": "cf enable-diego APP_NAME", 50 "Options": null 51 } 52 }, 53 { 54 "Name": "disable-diego", 55 "Alias": "", 56 "HelpText": "disable Diego support for an app", 57 "UsageDetails": { 58 "Usage": "cf disable-diego APP_NAME", 59 "Options": null 60 } 61 } 62 ] 63 } 64 } 65 }` 66 setPluginConfig(location, rawConfig) 67 config, err := LoadConfig() 68 Expect(err).ToNot(HaveOccurred()) 69 Expect(config).ToNot(BeNil()) 70 71 plugins := config.Plugins() 72 Expect(plugins).ToNot(BeEmpty()) 73 74 plugin := plugins["Diego-Enabler"] 75 Expect(plugin.Location).To(Equal("~/.cf/plugins/diego-enabler_darwin_amd64")) 76 Expect(plugin.Version.Major).To(Equal(1)) 77 Expect(plugin.Commands).To(HaveLen(2)) 78 Expect(plugin.Commands).To(ContainElement( 79 PluginCommand{ 80 Name: "enable-diego", 81 Alias: "", 82 HelpText: "enable Diego support for an app", 83 UsageDetails: PluginUsageDetails{ 84 Usage: "cf enable-diego APP_NAME", 85 }, 86 }, 87 )) 88 }, 89 90 Entry("standard location", func() (string, string) { 91 return filepath.Join(homeDir, ".cf", "plugins"), "" 92 }), 93 94 Entry("non-standard location", func() (string, string) { 95 return filepath.Join(homeDir, "foo", ".cf", "plugins"), filepath.Join(homeDir, "foo") 96 }), 97 ) 98 })