github.com/mattyw/juju@v0.0.0-20140610034352-732aecd63861/cmd/juju/expose_test.go (about)

     1  // Copyright 2012, 2013 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package main
     5  
     6  import (
     7  	gc "launchpad.net/gocheck"
     8  
     9  	"github.com/juju/juju/charm"
    10  	charmtesting "github.com/juju/juju/charm/testing"
    11  	"github.com/juju/juju/cmd/envcmd"
    12  	jujutesting "github.com/juju/juju/juju/testing"
    13  	"github.com/juju/juju/testing"
    14  )
    15  
    16  type ExposeSuite struct {
    17  	jujutesting.RepoSuite
    18  }
    19  
    20  var _ = gc.Suite(&ExposeSuite{})
    21  
    22  func runExpose(c *gc.C, args ...string) error {
    23  	_, err := testing.RunCommand(c, envcmd.Wrap(&ExposeCommand{}), args...)
    24  	return err
    25  }
    26  
    27  func (s *ExposeSuite) assertExposed(c *gc.C, service string) {
    28  	svc, err := s.State.Service(service)
    29  	c.Assert(err, gc.IsNil)
    30  	exposed := svc.IsExposed()
    31  	c.Assert(exposed, gc.Equals, true)
    32  }
    33  
    34  func (s *ExposeSuite) TestExpose(c *gc.C) {
    35  	charmtesting.Charms.BundlePath(s.SeriesPath, "dummy")
    36  	err := runDeploy(c, "local:dummy", "some-service-name")
    37  	c.Assert(err, gc.IsNil)
    38  	curl := charm.MustParseURL("local:precise/dummy-1")
    39  	s.AssertService(c, "some-service-name", curl, 1, 0)
    40  
    41  	err = runExpose(c, "some-service-name")
    42  	c.Assert(err, gc.IsNil)
    43  	s.assertExposed(c, "some-service-name")
    44  
    45  	err = runExpose(c, "nonexistent-service")
    46  	c.Assert(err, gc.ErrorMatches, `service "nonexistent-service" not found`)
    47  }