github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/upgrades/steps_20_test.go (about) 1 // Copyright 2016 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package upgrades_test 5 6 import ( 7 "fmt" 8 "io/ioutil" 9 "os" 10 "path/filepath" 11 12 jc "github.com/juju/testing/checkers" 13 "github.com/juju/version" 14 gc "gopkg.in/check.v1" 15 16 "github.com/juju/juju/testing" 17 "github.com/juju/juju/upgrades" 18 ) 19 20 var v200 = version.MustParse("2.0.0") 21 22 type steps20Suite struct { 23 testing.BaseSuite 24 } 25 26 var _ = gc.Suite(&steps20Suite{}) 27 28 func (s *steps20Suite) TestStripLocalUserDomain(c *gc.C) { 29 step := findStateStep(c, v200, "strip @local from local user names") 30 // Logic for step itself is tested in state package. 31 c.Assert(step.Targets(), jc.DeepEquals, []upgrades.Target{upgrades.DatabaseMaster}) 32 } 33 34 func (s *steps20Suite) TestRenameAddModelPermission(c *gc.C) { 35 step := findStateStep(c, v200, "rename addmodel permission to add-model") 36 // Logic for step itself is tested in state package. 37 c.Assert(step.Targets(), jc.DeepEquals, []upgrades.Target{upgrades.DatabaseMaster}) 38 } 39 40 func (s *steps20Suite) TestCharmGetCacheDir(c *gc.C) { 41 // Create a cache directory with some stuff in it. 42 dataDir := c.MkDir() 43 cacheDir := filepath.Join(dataDir, "charm-get-cache") 44 c.Assert(os.MkdirAll(cacheDir, 0777), jc.ErrorIsNil) 45 err := ioutil.WriteFile(filepath.Join(cacheDir, "stuff"), []byte("things"), 0777) 46 c.Assert(err, jc.ErrorIsNil) 47 48 step := findStep(c, v200, "remove apiserver charm get cache") 49 50 check := func() { 51 context := &mockContext{ 52 agentConfig: &mockAgentConfig{dataDir: dataDir}, 53 } 54 err = step.Run(context) 55 c.Assert(err, jc.ErrorIsNil) 56 57 // Cache directory should be gone, but data dir should still be there. 58 c.Check(pathExists(cacheDir), jc.IsFalse) 59 c.Check(pathExists(dataDir), jc.IsTrue) 60 } 61 62 check() 63 check() // Check OK when directory not present 64 } 65 66 func pathExists(p string) bool { 67 _, err := os.Stat(p) 68 if err == nil { 69 return true 70 } else if os.IsNotExist(err) { 71 return false 72 } 73 panic(fmt.Sprintf("stat for %q failed: %v", p, err)) 74 }