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  }