Skip to content

Commit 04d9c94

Browse files
committed
[test] Add couchbase database model tests
1 parent 19147ee commit 04d9c94

File tree

4 files changed

+3481
-0
lines changed

4 files changed

+3481
-0
lines changed
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
package test
2+
3+
import "github.com/couchbase/gocb"
4+
5+
func test_couchbase_gocb_v1_Cluster(cluster *gocb.Cluster, aq *gocb.AnalyticsQuery, n1ql *gocb.N1qlQuery, sq *gocb.SearchQuery) {
6+
// Analytics
7+
r1, err := cluster.ExecuteAnalyticsQuery(aq, nil) // $ source
8+
9+
if err != nil {
10+
return
11+
}
12+
13+
var user1, user2 User
14+
15+
r1.One(&user1)
16+
sink(user1) // $ hasTaintFlow="user1"
17+
18+
for r1.Next(user2) {
19+
sink(user2) // $ hasTaintFlow="user2"
20+
}
21+
22+
var b1 []byte
23+
b1 = r1.NextBytes()
24+
sink(b1) // $ hasTaintFlow="b1"
25+
26+
// N1QL
27+
r2, err := cluster.ExecuteN1qlQuery(n1ql, nil) // $ source
28+
29+
if err != nil {
30+
return
31+
}
32+
33+
var user3, user4 User
34+
35+
r2.One(&user3)
36+
sink(user3) // $ hasTaintFlow="user3"
37+
38+
for r2.Next(user4) {
39+
sink(user4) // $ hasTaintFlow="user4"
40+
}
41+
42+
var b2 []byte
43+
b2 = r2.NextBytes()
44+
sink(b2) // $ hasTaintFlow="b2"
45+
46+
// Search
47+
r3, err := cluster.ExecuteSearchQuery(sq) // $ source
48+
49+
if err != nil {
50+
return
51+
}
52+
53+
sink(r3) // $ hasTaintFlow="r3"
54+
}
Lines changed: 247 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,247 @@
1+
package test
2+
3+
//go:generate depstubber -vendor github.com/couchbase/gocb/v2 Cluster,Scope,Collection,TransactionAttemptContext,ViewIndexManager
4+
5+
import "github.com/couchbase/gocb/v2"
6+
7+
func test_couchbase_gocb_v2_Cluster(cluster *gocb.Cluster) {
8+
r1, err := cluster.AnalyticsQuery("SELECT * FROM `travel-sample`", nil) // $ source
9+
10+
if err != nil {
11+
return
12+
}
13+
14+
for r1.Next() {
15+
var name1, name2 string
16+
17+
r1.One(&name1)
18+
19+
sink(name1) // $ hasTaintFlow="name1"
20+
21+
r1.Row(&name2)
22+
sink(name2) // $ hasTaintFlow="name2"
23+
24+
b := r1.Raw().NextBytes()
25+
sink(b) // $ hasTaintFlow="b"
26+
}
27+
28+
r2, err := cluster.Query("SELECT * FROM `travel-sample`", nil) // $ source
29+
30+
if err != nil {
31+
return
32+
}
33+
34+
for r2.Next() {
35+
var name1, name2 string
36+
37+
r2.One(&name1)
38+
39+
sink(name1) // $ hasTaintFlow="name1"
40+
41+
r2.Row(&name2)
42+
sink(name2) // $ hasTaintFlow="name2"
43+
44+
b := r2.Raw().NextBytes()
45+
sink(b) // $ hasTaintFlow="b"
46+
}
47+
}
48+
49+
func test_couchbase_gocb_v2_Scope(scope *gocb.Scope) {
50+
r1, err := scope.Query("SELECT * FROM `travel-sample`", nil) // $ source
51+
52+
if err != nil {
53+
return
54+
}
55+
56+
for r1.Next() {
57+
var name1, name2 string
58+
59+
r1.One(&name1)
60+
61+
sink(name1) // $ hasTaintFlow="name1"
62+
63+
r1.Row(&name2)
64+
sink(name2) // $ hasTaintFlow="name2"
65+
66+
b := r1.Raw().NextBytes()
67+
sink(b) // $ hasTaintFlow="b"
68+
}
69+
70+
r2, err := scope.Query("SELECT * FROM `travel-sample`", nil) // $ source
71+
72+
if err != nil {
73+
return
74+
}
75+
76+
for r2.Next() {
77+
var name1, name2 string
78+
79+
r2.One(&name1)
80+
81+
sink(name1) // $ hasTaintFlow="name1"
82+
83+
r2.Row(&name2)
84+
sink(name2) // $ hasTaintFlow="name2"
85+
86+
b := r2.Raw().NextBytes()
87+
sink(b) // $ hasTaintFlow="b"
88+
}
89+
}
90+
91+
func test_couchbase_gocb_v2_Collection(coll *gocb.Collection) {
92+
type User struct {
93+
Name string
94+
}
95+
96+
var user User
97+
98+
r1, err := coll.Get("documentID", nil) // $ source
99+
100+
if err != nil {
101+
return
102+
}
103+
104+
r1.Content(&user)
105+
106+
sink(user) // $ hasTaintFlow="user"
107+
108+
r2, err := coll.GetAndLock("documentID", 30, nil) // $ source
109+
110+
if err != nil {
111+
return
112+
}
113+
114+
sink(r2) // $ hasTaintFlow="r2"
115+
116+
r3, err := coll.GetAndTouch("documentID", 30, nil) // $ source
117+
118+
if err != nil {
119+
return
120+
}
121+
122+
var user3 User
123+
r3.Content(&user3)
124+
sink(user3) // $ hasTaintFlow="user3"
125+
126+
r4, err := coll.GetAnyReplica("documentID", nil) // $ source
127+
128+
if err != nil {
129+
return
130+
}
131+
132+
sink(r4) // $ hasTaintFlow="r4"
133+
134+
r5, err := coll.LookupIn("documentID", []gocb.LookupInSpec{}, nil) // $ source
135+
136+
if err != nil {
137+
return
138+
}
139+
140+
var user5 User
141+
r5.ContentAt(0, &user5)
142+
sink(user5) // $ hasTaintFlow="user5"
143+
144+
r6, err := coll.LookupInAllReplicas("documentID", []gocb.LookupInSpec{}, nil) // $ source
145+
146+
if err != nil {
147+
return
148+
}
149+
150+
var user6 User
151+
r6.Next().ContentAt(0, &user6)
152+
sink(user6) // $ hasTaintFlow="user6"
153+
154+
r7, err := coll.LookupInAnyReplica("documentID", []gocb.LookupInSpec{}, nil) // $ source
155+
156+
if err != nil {
157+
return
158+
}
159+
160+
var user7 User
161+
r7.ContentAt(0, &user7)
162+
sink(user7) // $ hasTaintFlow="user7"
163+
164+
r8, err := coll.Scan(nil, nil) // $ source
165+
166+
if err != nil {
167+
return
168+
}
169+
170+
var user8 User
171+
r8.Next().Content(&user8)
172+
sink(user8) // $ hasTaintFlow="user8"
173+
}
174+
175+
func test_couchbase_gocb_v2_TransactionAttemptContext(tam *gocb.TransactionAttemptContext, coll *gocb.Collection) {
176+
r1, err := tam.Get(coll, "documentID") // $ source
177+
178+
if err != nil {
179+
return
180+
}
181+
182+
var user User
183+
r1.Content(&user)
184+
185+
sink(user) // $ hasTaintFlow="user"
186+
187+
r2, err := tam.GetReplicaFromPreferredServerGroup(coll, "documentID") // $ source
188+
189+
if err != nil {
190+
return
191+
}
192+
193+
var user2 User
194+
r2.Content(&user2)
195+
sink(user2) // $ hasTaintFlow="user2"
196+
197+
var user3 User
198+
199+
r3, err := tam.Insert(coll, "documentID", &user3) // $ source
200+
if err != nil {
201+
return
202+
}
203+
204+
var user4 User
205+
r3.Content(&user4)
206+
sink(user4) // $ hasTaintFlow="user4"
207+
208+
r4, err := tam.Query("SELECT * FROM `travel-sample`", nil) // $ source
209+
if err != nil {
210+
return
211+
}
212+
213+
for r4.Next() {
214+
var user5 User
215+
r4.One(&user5)
216+
sink(user5) // $ hasTaintFlow="user5"
217+
218+
var user6 User
219+
r4.Row(&user6)
220+
sink(user6) // $ hasTaintFlow="user6"
221+
}
222+
223+
r5, err := tam.Replace(r3, user4) // $ source
224+
if err != nil {
225+
return
226+
}
227+
228+
sink(r5) // $ hasTaintFlow="r5"
229+
}
230+
231+
func test_couchbase_gocb_v2_ViewIndexManager(v *gocb.ViewIndexManager) {
232+
doc, err := v.GetDesignDocument("name", 0, nil) // $ source
233+
234+
if err != nil {
235+
return
236+
}
237+
238+
sink(doc) // $ hasTaintFlow="doc"
239+
240+
docs, err := v.GetAllDesignDocuments(0, nil) // $ source
241+
242+
if err != nil {
243+
return
244+
}
245+
246+
sink(docs) // $ hasTaintFlow="docs"
247+
}

0 commit comments

Comments
 (0)