github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/featuretests/cmd_juju_bundle_test.go (about) 1 // Copyright 2018 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 package featuretests 4 5 import ( 6 "github.com/juju/cmd/cmdtesting" 7 jc "github.com/juju/testing/checkers" 8 gc "gopkg.in/check.v1" 9 10 "github.com/juju/juju/cmd/juju/model" 11 "github.com/juju/juju/feature" 12 jujutesting "github.com/juju/juju/juju/testing" 13 "github.com/juju/juju/state" 14 "github.com/juju/juju/testing/factory" 15 ) 16 17 type CmdExportBundleSuite struct { 18 jujutesting.JujuConnSuite 19 } 20 21 func (s *CmdExportBundleSuite) setupApplications(c *gc.C) { 22 s.Factory.MakeSpace(c, &factory.SpaceParams{Name: "vlan2"}) 23 // make an application with 2 endpoints 24 application1 := s.Factory.MakeApplication(c, &factory.ApplicationParams{ 25 Charm: s.Factory.MakeCharm(c, &factory.CharmParams{ 26 Name: "wordpress", 27 Revision: "23", 28 }), 29 }) 30 endpoint1, err := application1.Endpoint("juju-info") 31 c.Assert(err, jc.ErrorIsNil) 32 endpoint2, err := application1.Endpoint("logging-dir") 33 c.Assert(err, jc.ErrorIsNil) 34 35 // make another application with 2 endpoints 36 application2 := s.Factory.MakeApplication(c, &factory.ApplicationParams{ 37 Charm: s.Factory.MakeCharm(c, &factory.CharmParams{ 38 Name: "logging", 39 Revision: "43", 40 }), 41 CharmConfig: map[string]interface{}{"foo": "bar"}, 42 EndpointBindings: map[string]string{"info": "vlan2"}, 43 }) 44 endpoint3, err := application2.Endpoint("info") 45 c.Assert(err, jc.ErrorIsNil) 46 endpoint4, err := application2.Endpoint("logging-directory") 47 c.Assert(err, jc.ErrorIsNil) 48 49 // create relation between a1:e1 and a2:e3 50 relation1 := s.Factory.MakeRelation(c, &factory.RelationParams{ 51 Endpoints: []state.Endpoint{endpoint1, endpoint3}, 52 }) 53 c.Assert(relation1, gc.NotNil) 54 55 // create relation between a1:e2 and a2:e4 56 relation2 := s.Factory.MakeRelation(c, &factory.RelationParams{ 57 Endpoints: []state.Endpoint{endpoint2, endpoint4}, 58 }) 59 c.Assert(relation2, gc.NotNil) 60 } 61 62 func (s *CmdExportBundleSuite) TestExportBundle(c *gc.C) { 63 s.SetFeatureFlags(feature.DeveloperMode) 64 65 s.setupApplications(c) 66 67 ctx, err := cmdtesting.RunCommand(c, model.NewExportBundleCommand()) 68 c.Assert(err, jc.ErrorIsNil) 69 output := cmdtesting.Stdout(ctx) 70 c.Assert(output, gc.Equals, ` 71 series: quantal 72 applications: 73 logging: 74 charm: cs:quantal/logging-43 75 options: 76 foo: bar 77 bindings: 78 info: vlan2 79 wordpress: 80 charm: cs:quantal/wordpress-23 81 relations: 82 - - wordpress:juju-info 83 - logging:info 84 - - wordpress:logging-dir 85 - logging:logging-directory 86 `[1:]) 87 }