1
2
3
4
5
6
7
8
9
10
11
12
13 package test
14
15 import (
16 "context"
17 "net/http"
18 "testing"
19
20 "github.com/go-kivik/kivik/v4"
21 "github.com/go-kivik/kivik/v4/kiviktest"
22 "github.com/go-kivik/kivik/v4/kiviktest/kt"
23 )
24
25
26 func RegisterMemoryDBSuite() {
27 kiviktest.RegisterSuite(kiviktest.SuiteKivikMemory, kt.SuiteConfig{
28
29 "Flush.skip": true,
30
31 "AllDBs.expected": []string{"_users"},
32
33 "CreateDB/RW/NoAuth.status": http.StatusUnauthorized,
34 "CreateDB/RW/Admin/Recreate.status": http.StatusPreconditionFailed,
35
36 "AllDocs.skip": true,
37
38 "DBExists/Admin.databases": []string{"chicken"},
39 "DBExists/Admin/chicken.exists": false,
40 "DBExists/RW/group/Admin.exists": true,
41
42 "AllDBsStats.expected": []*kivik.DBStats{
43 {
44 Name: "_users",
45 },
46 },
47
48 "DestroyDB/RW/Admin/NonExistantDB.status": http.StatusNotFound,
49
50 "Log.status": http.StatusNotImplemented,
51 "Log/Admin/HTTP.skip": true,
52
53 "Version.version": `^0\.0\.1$`,
54 "Version.vendor": `^Kivik Memory Adaptor$`,
55 "Version.vendor_version": `^0\.0\.1$`,
56
57
58 "GetReplications.skip": true,
59 "Replicate.skip": true,
60
61 "Get/RW/group/Admin/bogus.status": http.StatusNotFound,
62
63 "GetRev/RW/group/Admin/bogus.status": http.StatusNotFound,
64
65 "Put/RW/Admin/group/LeadingUnderscoreInID.status": http.StatusBadRequest,
66 "Put/RW/Admin/group/Conflict.status": http.StatusConflict,
67
68 "Delete/RW/Admin/group/MissingDoc.status": http.StatusNotFound,
69 "Delete/RW/Admin/group/InvalidRevFormat.status": http.StatusBadRequest,
70 "Delete/RW/Admin/group/WrongRev.status": http.StatusConflict,
71
72 "Security.databases": []string{"_users", "chicken", "_duck"},
73 "Security/Admin/chicken.status": http.StatusNotFound,
74 "Security/Admin/_duck.status": http.StatusNotFound,
75
76 "SetSecurity/RW/Admin/NotExists.status": http.StatusNotFound,
77
78 "BulkDocs/RW/NoAuth/group/Mix/Conflict.status": http.StatusConflict,
79 "BulkDocs/RW/Admin/group/Mix/Conflict.status": http.StatusConflict,
80
81 "Find.databases": []string{"chicken", "_duck"},
82 "Find/Admin/chicken.status": http.StatusNotFound,
83 "Find/Admin/_duck.status": http.StatusNotFound,
84 "Find/NoAuth/chicken.status": http.StatusNotFound,
85 "Find/NoAuth/_duck.status": http.StatusUnauthorized,
86 "Find/RW/group/Admin/Warning.warning": "no matching index found, create an index to optimize query time",
87 "Find/RW/group/NoAuth/Warning.warning": "no matching index found, create an index to optimize query time",
88
89 "Explain.skip": true,
90 "Stats.skip": true,
91 "Compact.skip": true,
92 "DBUpdates.status": http.StatusNotImplemented,
93 "Changes.skip": true,
94 "Copy.skip": true,
95 "GetAttachment.skip": true,
96 "GetAttachmentMeta.skip": true,
97 "PutAttachment.skip": true,
98 "DeleteAttachment.skip": true,
99 "Query.skip": true,
100 "CreateIndex.skip": true,
101 "GetIndexes.skip": true,
102 "DeleteIndex.skip": true,
103 "SetSecurity.skip": true,
104 "ViewCleanup.skip": true,
105 })
106 }
107
108
109 func MemoryTest(t *testing.T) {
110 t.Helper()
111 client, err := kivik.New("memory", "")
112 if err != nil {
113 t.Fatalf("Failed to connect to memory driver: %s\n", err)
114 }
115 clients := &kt.Context{
116 RW: true,
117 Admin: client,
118 T: t,
119 }
120 if err := client.CreateDB(context.Background(), "_users"); err != nil {
121 t.Fatal(err)
122 }
123 kiviktest.RunTestsInternal(clients, kiviktest.SuiteKivikMemory)
124 }
125
View as plain text