github.com/mattyw/juju@v0.0.0-20140610034352-732aecd63861/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  	jc "github.com/juju/testing/checkers"
    11  	gc "launchpad.net/gocheck"
    12  )
    13  
    14  type certFileSuite struct{}
    15  
    16  var _ = gc.Suite(&certFileSuite{})
    17  
    18  func (*certFileSuite) TestPathReturnsFullPath(c *gc.C) {
    19  	certFile := tempCertFile{tempDir: "/tmp/dir", filename: "file"}
    20  	c.Check(certFile.Path(), gc.Equals, "/tmp/dir/file")
    21  }
    22  
    23  func (*certFileSuite) TestNewTempCertFileCreatesFile(c *gc.C) {
    24  	certData := []byte("content")
    25  	certFile, err := newTempCertFile(certData)
    26  	c.Assert(err, gc.IsNil)
    27  	defer certFile.Delete()
    28  
    29  	storedData, err := ioutil.ReadFile(certFile.Path())
    30  	c.Assert(err, gc.IsNil)
    31  
    32  	c.Check(storedData, gc.DeepEquals, certData)
    33  }
    34  
    35  func (*certFileSuite) TestNewTempCertFileRestrictsAccessToFile(c *gc.C) {
    36  	certFile, err := newTempCertFile([]byte("content"))
    37  	c.Assert(err, gc.IsNil)
    38  	defer certFile.Delete()
    39  	info, err := os.Stat(certFile.Path())
    40  	c.Assert(err, gc.IsNil)
    41  	c.Check(info.Mode().Perm(), gc.Equals, os.FileMode(0600))
    42  }
    43  
    44  func (*certFileSuite) TestNewTempCertFileRestrictsAccessToDir(c *gc.C) {
    45  	certFile, err := newTempCertFile([]byte("content"))
    46  	c.Assert(err, gc.IsNil)
    47  	defer certFile.Delete()
    48  	info, err := os.Stat(certFile.tempDir)
    49  	c.Assert(err, gc.IsNil)
    50  	c.Check(info.Mode().Perm(), gc.Equals, os.FileMode(0700))
    51  }
    52  
    53  func (*certFileSuite) TestDeleteRemovesFile(c *gc.C) {
    54  	certFile, err := newTempCertFile([]byte("content"))
    55  	c.Assert(err, gc.IsNil)
    56  	certFile.Delete()
    57  	_, err = os.Open(certFile.Path())
    58  	c.Assert(err, jc.Satisfies, os.IsNotExist)
    59  }
    60  
    61  func (*certFileSuite) TestDeleteIsIdempotent(c *gc.C) {
    62  	certFile, err := newTempCertFile([]byte("content"))
    63  	c.Assert(err, gc.IsNil)
    64  	certFile.Delete()
    65  	certFile.Delete()
    66  	_, err = os.Open(certFile.Path())
    67  	c.Assert(err, jc.Satisfies, os.IsNotExist)
    68  }