launchpad.net/~rogpeppe/juju-core/500-errgo-fix@v0.0.0-20140213181702-000000002356/provider/azure/certfile_test.go (about)

     1  // Copyright 2013 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package azure
     5  
     6  import (
     7  	"io/ioutil"
     8  	"os"
     9  
    10  	gc "launchpad.net/gocheck"
    11  
    12  	jc "launchpad.net/juju-core/testing/checkers"
    13  )
    14  
    15  type certFileSuite struct{}
    16  
    17  var _ = gc.Suite(&certFileSuite{})
    18  
    19  func (*certFileSuite) TestPathReturnsFullPath(c *gc.C) {
    20  	certFile := tempCertFile{tempDir: "/tmp/dir", filename: "file"}
    21  	c.Check(certFile.Path(), gc.Equals, "/tmp/dir/file")
    22  }
    23  
    24  func (*certFileSuite) TestNewTempCertFileCreatesFile(c *gc.C) {
    25  	certData := []byte("content")
    26  	certFile, err := newTempCertFile(certData)
    27  	c.Assert(err, gc.IsNil)
    28  	defer certFile.Delete()
    29  
    30  	storedData, err := ioutil.ReadFile(certFile.Path())
    31  	c.Assert(err, gc.IsNil)
    32  
    33  	c.Check(storedData, gc.DeepEquals, certData)
    34  }
    35  
    36  func (*certFileSuite) TestNewTempCertFileRestrictsAccessToFile(c *gc.C) {
    37  	certFile, err := newTempCertFile([]byte("content"))
    38  	c.Assert(err, gc.IsNil)
    39  	defer certFile.Delete()
    40  	info, err := os.Stat(certFile.Path())
    41  	c.Assert(err, gc.IsNil)
    42  	c.Check(info.Mode().Perm(), gc.Equals, os.FileMode(0600))
    43  }
    44  
    45  func (*certFileSuite) TestNewTempCertFileRestrictsAccessToDir(c *gc.C) {
    46  	certFile, err := newTempCertFile([]byte("content"))
    47  	c.Assert(err, gc.IsNil)
    48  	defer certFile.Delete()
    49  	info, err := os.Stat(certFile.tempDir)
    50  	c.Assert(err, gc.IsNil)
    51  	c.Check(info.Mode().Perm(), gc.Equals, os.FileMode(0700))
    52  }
    53  
    54  func (*certFileSuite) TestDeleteRemovesFile(c *gc.C) {
    55  	certFile, err := newTempCertFile([]byte("content"))
    56  	c.Assert(err, gc.IsNil)
    57  	certFile.Delete()
    58  	_, err = os.Open(certFile.Path())
    59  	c.Assert(err, jc.Satisfies, os.IsNotExist)
    60  }
    61  
    62  func (*certFileSuite) TestDeleteIsIdempotent(c *gc.C) {
    63  	certFile, err := newTempCertFile([]byte("content"))
    64  	c.Assert(err, gc.IsNil)
    65  	certFile.Delete()
    66  	certFile.Delete()
    67  	_, err = os.Open(certFile.Path())
    68  	c.Assert(err, jc.Satisfies, os.IsNotExist)
    69  }