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 }