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  })