github.com/makyo/juju@v0.0.0-20160425123129-2608902037e9/state/backups/metadata_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  	"bytes"
     8  	"os"
     9  	"path/filepath"
    10  	"time"
    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/state/backups"
    17  	"github.com/juju/juju/testing"
    18  )
    19  
    20  type metadataSuite struct {
    21  	testing.BaseSuite
    22  }
    23  
    24  var _ = gc.Suite(&metadataSuite{}) // Register the suite.
    25  
    26  func (s *metadataSuite) TestAsJSONBuffer(c *gc.C) {
    27  	meta := backups.NewMetadata()
    28  	meta.Origin = backups.Origin{
    29  		Model:    "asdf-zxcv-qwe",
    30  		Machine:  "0",
    31  		Hostname: "myhost",
    32  		Version:  version.MustParse("1.21-alpha3"),
    33  	}
    34  	meta.Started = time.Date(2014, time.Month(9), 9, 11, 59, 34, 0, time.UTC)
    35  
    36  	meta.SetID("20140909-115934.asdf-zxcv-qwe")
    37  	err := meta.MarkComplete(10, "123af2cef")
    38  	c.Assert(err, jc.ErrorIsNil)
    39  
    40  	finished := meta.Started.Add(time.Minute)
    41  	meta.Finished = &finished
    42  
    43  	meta.CACert = "ca-cert"
    44  	meta.CAPrivateKey = "ca-private-key"
    45  
    46  	buf, err := meta.AsJSONBuffer()
    47  	c.Assert(err, jc.ErrorIsNil)
    48  
    49  	c.Check(buf.(*bytes.Buffer).String(), gc.Equals, `{`+
    50  		`"ID":"20140909-115934.asdf-zxcv-qwe",`+
    51  		`"Checksum":"123af2cef",`+
    52  		`"ChecksumFormat":"SHA-1, base64 encoded",`+
    53  		`"Size":10,`+
    54  		`"Stored":"0001-01-01T00:00:00Z",`+
    55  		`"Started":"2014-09-09T11:59:34Z",`+
    56  		`"Finished":"2014-09-09T12:00:34Z",`+
    57  		`"Notes":"",`+
    58  		`"Environment":"asdf-zxcv-qwe",`+
    59  		`"Machine":"0",`+
    60  		`"Hostname":"myhost",`+
    61  		`"Version":"1.21-alpha3",`+
    62  		`"CACert":"ca-cert",`+
    63  		`"CAPrivateKey":"ca-private-key"`+
    64  		`}`+"\n")
    65  }
    66  
    67  func (s *metadataSuite) TestNewMetadataJSONReader(c *gc.C) {
    68  	file := bytes.NewBufferString(`{` +
    69  		`"ID":"20140909-115934.asdf-zxcv-qwe",` +
    70  		`"Checksum":"123af2cef",` +
    71  		`"ChecksumFormat":"SHA-1, base64 encoded",` +
    72  		`"Size":10,` +
    73  		`"Stored":"0001-01-01T00:00:00Z",` +
    74  		`"Started":"2014-09-09T11:59:34Z",` +
    75  		`"Finished":"2014-09-09T12:00:34Z",` +
    76  		`"Notes":"",` +
    77  		`"Environment":"asdf-zxcv-qwe",` +
    78  		`"Machine":"0",` +
    79  		`"Hostname":"myhost",` +
    80  		`"Version":"1.21-alpha3"` +
    81  		`}` + "\n")
    82  	meta, err := backups.NewMetadataJSONReader(file)
    83  	c.Assert(err, jc.ErrorIsNil)
    84  
    85  	c.Check(meta.ID(), gc.Equals, "20140909-115934.asdf-zxcv-qwe")
    86  	c.Check(meta.Checksum(), gc.Equals, "123af2cef")
    87  	c.Check(meta.ChecksumFormat(), gc.Equals, "SHA-1, base64 encoded")
    88  	c.Check(meta.Size(), gc.Equals, int64(10))
    89  	c.Check(meta.Stored(), gc.IsNil)
    90  	c.Check(meta.Started.Unix(), gc.Equals, int64(1410263974))
    91  	c.Check(meta.Finished.Unix(), gc.Equals, int64(1410264034))
    92  	c.Check(meta.Notes, gc.Equals, "")
    93  	c.Check(meta.Origin.Model, gc.Equals, "asdf-zxcv-qwe")
    94  	c.Check(meta.Origin.Machine, gc.Equals, "0")
    95  	c.Check(meta.Origin.Hostname, gc.Equals, "myhost")
    96  	c.Check(meta.Origin.Version.String(), gc.Equals, "1.21-alpha3")
    97  }
    98  
    99  func (s *metadataSuite) TestBuildMetadata(c *gc.C) {
   100  	archive, err := os.Create(filepath.Join(c.MkDir(), "juju-backup.tgz"))
   101  	c.Assert(err, jc.ErrorIsNil)
   102  	_, err = archive.Write([]byte("<compressed data>"))
   103  	c.Assert(err, jc.ErrorIsNil)
   104  
   105  	fi, err := archive.Stat()
   106  	c.Assert(err, jc.ErrorIsNil)
   107  	finished := backups.FileTimestamp(fi).Unix()
   108  
   109  	meta, err := backups.BuildMetadata(archive)
   110  	c.Assert(err, jc.ErrorIsNil)
   111  
   112  	c.Check(meta.ID(), gc.Equals, "")
   113  	c.Check(meta.Checksum(), gc.Equals, "2jmj7l5rSw0yVb/vlWAYkK/YBwk=")
   114  	c.Check(meta.ChecksumFormat(), gc.Equals, "SHA-1, base64 encoded")
   115  	c.Check(meta.Size(), gc.Equals, int64(17))
   116  	c.Check(meta.Stored(), gc.IsNil)
   117  	c.Check(meta.Started.Unix(), gc.Equals, int64(time.Time{}.Unix()))
   118  	c.Check(meta.Finished.Unix(), gc.Equals, finished)
   119  	c.Check(meta.Notes, gc.Equals, "")
   120  	c.Check(meta.Origin.Model, gc.Equals, backups.UnknownString)
   121  	c.Check(meta.Origin.Machine, gc.Equals, backups.UnknownString)
   122  	c.Check(meta.Origin.Hostname, gc.Equals, backups.UnknownString)
   123  	c.Check(meta.Origin.Version.String(), gc.Equals, backups.UnknownVersion.String())
   124  }