MCPcopy Create free account
hub / github.com/couchbase/sync_gateway / TestAllDocsQuery

Function TestAllDocsQuery

db/query_test.go:183–249  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

181}
182
183func TestAllDocsQuery(t *testing.T) {
184
185 db, ctx := setupTestDB(t)
186 defer db.Close(ctx)
187 collection, ctx := GetSingleDatabaseCollectionWithUser(ctx, t, db)
188
189 // Add docs with channel assignment
190 for i := 1; i <= 10; i++ {
191 _, _, err := collection.Put(ctx, fmt.Sprintf("allDocsTest%d", i), Body{"channels": []string{"ABC"}})
192 assert.NoError(t, err, "Put allDocsTest doc")
193 }
194
195 // Standard query
196 startKey := "a"
197 endKey := ""
198 results, queryErr := collection.QueryAllDocs(base.TestCtx(t), startKey, endKey)
199 assert.NoError(t, queryErr, "Query error")
200 var row map[string]interface{}
201 rowCount := 0
202 for results.Next(ctx, &row) {
203 t.Logf("row[%d]: %v", rowCount, row)
204 rowCount++
205 }
206 assert.Equal(t, 10, rowCount)
207 assert.NoError(t, results.Close())
208
209 // Attempt to invalidate standard query
210 startKey = "a' AND 1=0\x00"
211 endKey = ""
212 results, queryErr = collection.QueryAllDocs(base.TestCtx(t), startKey, endKey)
213 assert.NoError(t, queryErr, "Query error")
214 rowCount = 0
215 for results.Next(ctx, &row) {
216 t.Logf("row[%d]: %v", rowCount, row)
217 rowCount++
218 }
219 assert.Equal(t, 10, rowCount)
220 assert.NoError(t, results.Close())
221
222 // Attempt to invalidate statement to add row to resultset
223 startKey = `a' UNION ALL SELECT TOSTRING(BASE64_DECODE("SW52YWxpZERhdGE=")) as id;` + "\x00"
224 endKey = ""
225 results, queryErr = collection.QueryAllDocs(base.TestCtx(t), startKey, endKey)
226 assert.NoError(t, queryErr, "Query error")
227 rowCount = 0
228 for results.Next(ctx, &row) {
229 t.Logf("row[%d]: %v", rowCount, row)
230 assert.NotEqual(t, row["id"], "InvalidData")
231 rowCount++
232 }
233 assert.Equal(t, 10, rowCount)
234 assert.NoError(t, results.Close())
235
236 // Attempt to create syntax error
237 startKey = `a'1`
238 endKey = ""
239 results, queryErr = collection.QueryAllDocs(base.TestCtx(t), startKey, endKey)
240 assert.NoError(t, queryErr, "Query error")

Callers

nothing calls this directly

Calls 9

TestCtxFunction · 0.92
setupTestDBFunction · 0.85
QueryAllDocsMethod · 0.80
CloseMethod · 0.65
PutMethod · 0.65
NextMethod · 0.45
LogfMethod · 0.45
EqualMethod · 0.45

Tested by

no test coverage detected