MCPcopy Index your code
hub / github.com/CovenantSQL/CovenantSQL / TestStorage

Function TestStorage

xenomint/sqlite/sqlite_test.go:36–259  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

34)
35
36func TestStorage(t *testing.T) {
37 Convey("Given a sqlite storage implementation", t, func() {
38 const passes = 1000
39 var (
40 fl = path.Join(testingDataDir, t.Name())
41 st xi.Storage
42 err error
43 )
44 st, err = NewSqlite(fmt.Sprint("file:", fl))
45 So(err, ShouldBeNil)
46 So(st, ShouldNotBeNil)
47 Reset(func() {
48 // Clean database file after each pass
49 err = st.Close()
50 So(err, ShouldBeNil)
51 err = os.Remove(fl)
52 So(err, ShouldBeNil)
53 err = os.Remove(fmt.Sprint(fl, "-shm"))
54 So(err == nil || os.IsNotExist(err), ShouldBeTrue)
55 err = os.Remove(fmt.Sprint(fl, "-wal"))
56 So(err == nil || os.IsNotExist(err), ShouldBeTrue)
57 })
58 Convey("When a basic KV table is created", func(c C) {
59 // Create basic table for testing
60 _, err = st.Writer().Exec(`CREATE TABLE "t1" ("k" INT, "v" TEXT, PRIMARY KEY("k"))`)
61 So(err, ShouldBeNil)
62
63 _, err = st.Writer().Exec(`CREATE INDEX "a.b.c" ON "t1" ("v")`)
64 So(err, ShouldBeNil)
65
66 Convey("Test custom encrypt decrypt func", func() {
67 _, err = st.Writer().Exec(`INSERT INTO "t1" ("k", "v") VALUES (?, encrypt(?, "pass", "salt"))`, 0, "v0enc")
68 So(err, ShouldBeNil)
69 _, err = st.Writer().Exec(`INSERT INTO "t1" ("k", "v") VALUES (?, encrypt(?)`, 1, "v0enc")
70 So(err.Error(), ShouldContainSubstring, "incomplete input")
71 var destStr string
72 err = st.Reader().QueryRow(`SELECT "v" FROM "t1" WHERE "k"=?`, 0).Scan(&destStr)
73 So(err, ShouldBeNil)
74 So(destStr, ShouldNotContainSubstring, "enc")
75 err = st.Reader().QueryRow(`SELECT decrypt("v", "pass", "salt") FROM "t1" WHERE "k"=?`, 0).Scan(&destStr)
76 So(err, ShouldBeNil)
77 So(destStr, ShouldEqual, "v0enc")
78
79 var destSlice []byte
80 _, err = st.Writer().Exec(`UPDATE "t1" SET v = encrypt(@1, "pass", "salt") WHERE "k"=@2`, "", 0)
81 So(err, ShouldBeNil)
82 err = st.Reader().QueryRow(`SELECT decrypt("v", "pass", "salt") FROM "t1" WHERE "k"=?`, 0).Scan(&destSlice)
83 So(err, ShouldBeNil)
84 So(len(destSlice), ShouldEqual, 0)
85
86 largeText := strings.Repeat("s", 10000)
87 _, err = st.Writer().Exec(`UPDATE "t1" SET v = encrypt(:1, "pass", "salt") WHERE "k"=:2`, largeText, 0)
88 So(err, ShouldBeNil)
89 err = st.Reader().QueryRow(`SELECT decrypt("v", "pass", "salt") FROM "t1" WHERE "k"=?`, 0).Scan(&destStr)
90 So(err, ShouldBeNil)
91 So(destStr, ShouldEqual, largeText)
92 })
93 Convey("When storage is closed", func() {

Callers

nothing calls this directly

Calls 15

NewSqliteFunction · 0.85
PrintfFunction · 0.85
NameMethod · 0.80
ErrorMethod · 0.80
QueryRowMethod · 0.80
WaitMethod · 0.80
CloseMethod · 0.65
ExecMethod · 0.65
WriterMethod · 0.65
ReaderMethod · 0.65
DirtyReaderMethod · 0.65
CommitMethod · 0.65

Tested by

no test coverage detected