github.com/hoffie/larasync@v0.0.0-20151025221940-0384d2bddcef/repository/clientRepositoryDeleteItem_test.go (about) 1 package repository 2 3 import ( 4 "io/ioutil" 5 "os" 6 "path/filepath" 7 8 . "gopkg.in/check.v1" 9 ) 10 11 var _ = Suite(&RepositoryDeleteItemTests{}) 12 13 type RepositoryDeleteItemTests struct { 14 dir string 15 r *ClientRepository 16 } 17 18 func (t *RepositoryDeleteItemTests) SetUpTest(c *C) { 19 var err error 20 t.dir, err = filepath.EvalSymlinks(c.MkDir()) 21 c.Assert(err, IsNil) 22 t.r = NewClient(t.dir) 23 err = t.r.CreateManagementDir() 24 c.Assert(err, IsNil) 25 err = t.r.keys.CreateSigningKey() 26 c.Assert(err, IsNil) 27 28 err = t.r.keys.CreateEncryptionKey() 29 c.Assert(err, IsNil) 30 31 err = t.r.keys.CreateHashingKey() 32 c.Assert(err, IsNil) 33 } 34 35 func (t *RepositoryDeleteItemTests) TestFileDeletion(c *C) { 36 filename := "foo.txt" 37 fullpath := filepath.Join(t.dir, filename) 38 err := ioutil.WriteFile(fullpath, []byte("foo"), 0600) 39 c.Assert(err, IsNil) 40 41 err = t.r.AddItem(fullpath) 42 c.Assert(err, IsNil) 43 44 err = t.r.DeleteItem(fullpath) 45 c.Assert(err, IsNil) 46 47 _, err = os.Stat(fullpath) 48 c.Assert(os.IsNotExist(err), Equals, true) 49 50 nibID, err := t.r.pathToNIBID(filename) 51 c.Assert(err, IsNil) 52 53 nib, err := t.r.nibStore.Get(nibID) 54 c.Assert(err, IsNil) 55 56 rev, err := nib.LatestRevision() 57 c.Assert(err, IsNil) 58 59 c.Assert(rev.IsDeletion(), Equals, true) 60 } 61 62 func (t *RepositoryDeleteItemTests) TestFileDeletionModified(c *C) { 63 filename := "foo.txt" 64 fullpath := filepath.Join(t.dir, filename) 65 err := ioutil.WriteFile(fullpath, []byte("foo"), 0600) 66 c.Assert(err, IsNil) 67 68 err = t.r.AddItem(fullpath) 69 c.Assert(err, IsNil) 70 71 err = ioutil.WriteFile(fullpath, []byte("bar"), 0600) 72 c.Assert(err, IsNil) 73 74 err = t.r.DeleteItem(fullpath) 75 c.Assert(err, IsNil) 76 77 data, err := ioutil.ReadFile(fullpath) 78 c.Assert(err, IsNil) 79 80 c.Assert(data, DeepEquals, []byte("bar")) 81 } 82 83 func (t *RepositoryDeleteItemTests) TestFileAlreadyDeleted(c *C) { 84 filename := "foo.txt" 85 fullpath := filepath.Join(t.dir, filename) 86 err := ioutil.WriteFile(fullpath, []byte("foo"), 0600) 87 c.Assert(err, IsNil) 88 89 err = t.r.AddItem(fullpath) 90 c.Assert(err, IsNil) 91 92 err = os.Remove(fullpath) 93 c.Assert(err, IsNil) 94 95 err = t.r.DeleteItem(fullpath) 96 c.Assert(err, IsNil) 97 } 98 99 func (t *RepositoryDeleteItemTests) TestDirectory(c *C) { 100 filename := "foo.txt" 101 directory := "foo" 102 nestedDir := "bar" 103 dirPath := filepath.Join(t.dir, directory) 104 nestedDirPath := filepath.Join(dirPath, nestedDir) 105 fullpath := filepath.Join(nestedDirPath, filename) 106 err := os.MkdirAll(nestedDirPath, 0700) 107 c.Assert(err, IsNil) 108 err = ioutil.WriteFile(fullpath, []byte("foo"), 0600) 109 c.Assert(err, IsNil) 110 111 err = t.r.AddItem(dirPath) 112 c.Assert(err, IsNil) 113 114 err = t.r.DeleteItem(dirPath) 115 c.Assert(err, IsNil) 116 117 _, err = os.Stat(dirPath) 118 c.Assert(os.IsNotExist(err), Equals, true) 119 }