github.com/rogpeppe/juju@v0.0.0-20140613142852-6337964b789e/cmd/charm-admin/deletecharm_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 "fmt" 8 "os" 9 "path" 10 11 "github.com/juju/charm" 12 charmtesting "github.com/juju/charm/testing" 13 "github.com/juju/charmstore" 14 gitjujutesting "github.com/juju/testing" 15 gc "launchpad.net/gocheck" 16 17 "github.com/juju/juju/testing" 18 ) 19 20 type DeleteCharmSuite struct { 21 testing.BaseSuite 22 } 23 24 var _ = gc.Suite(&DeleteCharmSuite{}) 25 26 const testDeleteCharm = ` 27 mongo-url: localhost:23456 28 ` 29 30 func (s *DeleteCharmSuite) SetUpSuite(c *gc.C) { 31 s.BaseSuite.SetUpSuite(c) 32 } 33 34 func (s *DeleteCharmSuite) TearDownSuite(c *gc.C) { 35 s.BaseSuite.TearDownSuite(c) 36 } 37 38 func (s *DeleteCharmSuite) TestInit(c *gc.C) { 39 config := &DeleteCharmCommand{} 40 err := testing.InitCommand(config, []string{"--config", "/etc/charmd.conf", "--url", "cs:go"}) 41 c.Assert(err, gc.IsNil) 42 c.Assert(config.ConfigPath, gc.Equals, "/etc/charmd.conf") 43 c.Assert(config.Url, gc.Equals, "cs:go") 44 } 45 46 func (s *DeleteCharmSuite) TestRun(c *gc.C) { 47 // Derive config file from test mongo port 48 confDir := c.MkDir() 49 f, err := os.Create(path.Join(confDir, "charmd.conf")) 50 c.Assert(err, gc.IsNil) 51 configPath := f.Name() 52 { 53 defer f.Close() 54 fmt.Fprintf(f, "mongo-url: %s\n", gitjujutesting.MgoServer.Addr()) 55 } 56 // Delete charm that does not exist, not found error. 57 config := &DeleteCharmCommand{} 58 out, err := testing.RunCommand(c, config, "--config", configPath, "--url", "cs:unreleased/foo") 59 fmt.Println(out) 60 c.Assert(err, gc.NotNil) 61 // Publish that charm now 62 url := charm.MustParseURL("cs:unreleased/foo") 63 { 64 s, err := charmstore.Open(gitjujutesting.MgoServer.Addr()) 65 defer s.Close() 66 c.Assert(err, gc.IsNil) 67 pub, err := s.CharmPublisher([]*charm.URL{url}, "such-digest-much-unique") 68 c.Assert(err, gc.IsNil) 69 err = pub.Publish(charmtesting.Charms.ClonedDir(c.MkDir(), "dummy")) 70 c.Assert(err, gc.IsNil) 71 } 72 // Delete charm, should now succeed 73 _, err = testing.RunCommand(c, config, "--config", configPath, "--url", "cs:unreleased/foo") 74 c.Assert(err, gc.IsNil) 75 c.Assert(config.Config, gc.NotNil) 76 // Confirm that the charm is gone 77 { 78 s, err := charmstore.Open(gitjujutesting.MgoServer.Addr()) 79 defer s.Close() 80 c.Assert(err, gc.IsNil) 81 _, err = s.CharmInfo(url) 82 c.Assert(err, gc.NotNil) 83 } 84 }