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  }