github.com/hoffie/larasync@v0.0.0-20151025221940-0384d2bddcef/repository/tracker/databaseNib_test.go (about) 1 package tracker 2 3 import ( 4 "os" 5 "path/filepath" 6 "strings" 7 8 . "gopkg.in/check.v1" 9 ) 10 11 var _ = Suite(&DatabaseNIBTrackerTests{}) 12 13 type DatabaseNIBTrackerTests struct { 14 dirName string 15 databasePath string 16 } 17 18 func (t *DatabaseNIBTrackerTests) SetUpTest(c *C) { 19 t.dirName = c.MkDir() 20 t.databasePath = filepath.Join(t.dirName, "test.db") 21 } 22 23 func (t *DatabaseNIBTrackerTests) getTracker() (NIBTracker, error) { 24 return NewDatabaseNIBTracker(t.databasePath, t.dirName) 25 } 26 27 func (t *DatabaseNIBTrackerTests) getVerifiedTracker(c *C) NIBTracker { 28 tracker, err := t.getTracker() 29 c.Assert(err, IsNil) 30 return tracker 31 } 32 33 // It should create a database if none has exists yet. 34 func (t *DatabaseNIBTrackerTests) TestDatabaseCreation(c *C) { 35 _, err := t.getTracker() 36 c.Assert(err, IsNil) 37 _, err = os.Stat(t.databasePath) 38 c.Assert(err, IsNil) 39 } 40 41 func (t *DatabaseNIBTrackerTests) TestDatabaseCreationNonDirectory(c *C) { 42 err := os.Remove(t.dirName) 43 c.Assert(err, IsNil) 44 _, err = t.getTracker() 45 c.Assert(err, NotNil) 46 } 47 48 func (t *DatabaseNIBTrackerTests) TestAdd(c *C) { 49 tracker := t.getVerifiedTracker(c) 50 err := tracker.Add("/"+strings.Repeat("5", 4095), "123") 51 c.Assert(err, IsNil) 52 } 53 54 func (t *DatabaseNIBTrackerTests) TestDoubleAdd(c *C) { 55 tracker := t.getVerifiedTracker(c) 56 err := tracker.Add("/test", "123") 57 c.Assert(err, IsNil) 58 err = tracker.Add("/test", "123") 59 c.Assert(err, IsNil) 60 61 responses, err := tracker.SearchPrefix("/test") 62 c.Assert(err, IsNil) 63 c.Assert(len(responses), Equals, 1) 64 } 65 66 func (t *DatabaseNIBTrackerTests) TestAddOverlength(c *C) { 67 tracker := t.getVerifiedTracker(c) 68 err := tracker.Add("/"+strings.Repeat("5", 8000), "123") 69 c.Assert(err, NotNil) 70 } 71 72 func (t *DatabaseNIBTrackerTests) TestAddExisting(c *C) { 73 tracker := t.getVerifiedTracker(c) 74 err := tracker.Add("/test", "123") 75 c.Assert(err, IsNil) 76 err = tracker.Add("/test", "456") 77 c.Assert(err, IsNil) 78 resp, err := tracker.Get("/test") 79 c.Assert(err, IsNil) 80 c.Assert(resp.NIBID, Equals, "456") 81 } 82 83 func (t *DatabaseNIBTrackerTests) TestGet(c *C) { 84 tracker := t.getVerifiedTracker(c) 85 err := tracker.Add("/test", "123") 86 c.Assert(err, IsNil) 87 resp, err := tracker.Get("/test") 88 c.Assert(err, IsNil) 89 c.Assert(resp.NIBID, Equals, "123") 90 } 91 92 func (t *DatabaseNIBTrackerTests) TestGetNotExists(c *C) { 93 tracker := t.getVerifiedTracker(c) 94 resp, err := tracker.Get("/test") 95 c.Assert(err, NotNil) 96 c.Assert(resp, IsNil) 97 } 98 99 func (t *DatabaseNIBTrackerTests) TestSearchPrefixEmpty(c *C) { 100 tracker := t.getVerifiedTracker(c) 101 resp, err := tracker.SearchPrefix("/test") 102 c.Assert(err, IsNil) 103 c.Assert(len(resp), Equals, 0) 104 } 105 106 func (t *DatabaseNIBTrackerTests) TestSearchPrefix(c *C) { 107 tracker := t.getVerifiedTracker(c) 108 add := func(path string, nibID string) { 109 err := tracker.Add(path, nibID) 110 c.Assert(err, IsNil) 111 } 112 113 add("/test", "123") 114 add("/test/sub", "234") 115 add("/test2/sub", "456") 116 117 resp, err := tracker.SearchPrefix("/test") 118 c.Assert(err, IsNil) 119 c.Assert(len(resp), Equals, 2) 120 121 for _, entry := range resp { 122 c.Assert(entry.Path, Not(Equals), "/test2/sub") 123 } 124 } 125 126 func (t *DatabaseNIBTrackerTests) TestRemove(c *C) { 127 tracker := t.getVerifiedTracker(c) 128 add := func(path string, nibID string) { 129 err := tracker.Add(path, nibID) 130 c.Assert(err, IsNil) 131 } 132 133 add("/test", "123") 134 err := tracker.Remove("/test") 135 c.Assert(err, IsNil) 136 137 _, err = tracker.Get("/test") 138 c.Assert(err, NotNil) 139 } 140 141 func (t *DatabaseNIBTrackerTests) TestRemoveNotExisting(c *C) { 142 tracker := t.getVerifiedTracker(c) 143 err := tracker.Remove("/test") 144 c.Assert(err, NotNil) 145 }