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 }