github.com/juju/juju@v0.0.0-20240430160146-1752b71fcf00/state/backups/archive_workspace_test.go (about) 1 // Copyright 2014 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package backups_test 5 6 import ( 7 "io" 8 "os" 9 10 "github.com/juju/testing" 11 jc "github.com/juju/testing/checkers" 12 gc "gopkg.in/check.v1" 13 14 "github.com/juju/juju/state/backups" 15 ) 16 17 type workspaceSuiteV0 struct { 18 testing.IsolationSuite 19 baseArchiveDataSuite 20 } 21 22 var _ = gc.Suite(&workspaceSuiteV0{}) 23 var _ = gc.Suite(&workspaceSuiteV1{}) 24 25 func (s *workspaceSuiteV0) SetUpTest(c *gc.C) { 26 s.IsolationSuite.SetUpTest(c) 27 s.baseArchiveDataSuite.setupMetadata(c, testMetadataV0) 28 } 29 30 func (s *workspaceSuiteV0) TestNewArchiveWorkspaceReader(c *gc.C) { 31 ws, err := backups.NewArchiveWorkspaceReader(s.archiveFile) 32 c.Assert(err, jc.ErrorIsNil) 33 defer ws.Close() 34 35 c.Check(ws.RootDir, gc.Not(gc.Equals), "") 36 } 37 38 func (s *workspaceSuiteV0) TestClose(c *gc.C) { 39 ws, err := backups.NewArchiveWorkspaceReader(s.archiveFile) 40 c.Assert(err, jc.ErrorIsNil) 41 42 err = ws.Close() 43 c.Assert(err, jc.ErrorIsNil) 44 45 _, err = os.Stat(ws.RootDir) 46 c.Check(err, jc.Satisfies, os.IsNotExist) 47 } 48 49 func (s *workspaceSuiteV0) TestUnpackFilesBundle(c *gc.C) { 50 ws, err := backups.NewArchiveWorkspaceReader(s.archiveFile) 51 c.Assert(err, jc.ErrorIsNil) 52 defer ws.Close() 53 54 targetDir := c.MkDir() 55 err = ws.UnpackFilesBundle(targetDir) 56 c.Assert(err, jc.ErrorIsNil) 57 58 _, err = os.Stat(targetDir + "/var/lib/juju/tools/1.21-alpha2.1-trusty-amd64/jujud") 59 c.Assert(err, jc.ErrorIsNil) 60 _, err = os.Stat(targetDir + "/var/lib/juju/system-identity") 61 c.Assert(err, jc.ErrorIsNil) 62 } 63 64 func (s *workspaceSuiteV0) TestOpenBundledFile(c *gc.C) { 65 ws, err := backups.NewArchiveWorkspaceReader(s.archiveFile) 66 c.Assert(err, jc.ErrorIsNil) 67 defer ws.Close() 68 69 file, err := ws.OpenBundledFile("var/lib/juju/system-identity") 70 c.Assert(err, jc.ErrorIsNil) 71 72 data, err := io.ReadAll(file) 73 c.Assert(err, jc.ErrorIsNil) 74 c.Check(string(data), gc.Equals, "<an ssh key goes here>") 75 } 76 77 func (s *workspaceSuiteV0) TestMetadata(c *gc.C) { 78 ws, err := backups.NewArchiveWorkspaceReader(s.archiveFile) 79 c.Assert(err, jc.ErrorIsNil) 80 defer ws.Close() 81 82 meta, err := ws.Metadata() 83 c.Assert(err, jc.ErrorIsNil) 84 85 c.Check(meta, jc.DeepEquals, s.meta) 86 } 87 88 type workspaceSuiteV1 struct { 89 testing.IsolationSuite 90 baseArchiveDataSuite 91 } 92 93 func (s *workspaceSuiteV1) SetUpTest(c *gc.C) { 94 s.IsolationSuite.SetUpTest(c) 95 s.baseArchiveDataSuite.setupMetadata(c, testMetadataV1) 96 }