(t *testing.T)
| 2322 | } |
| 2323 | |
| 2324 | func TestUpdateExistingAttachment(t *testing.T) { |
| 2325 | rtConfig := &RestTesterConfig{ |
| 2326 | GuestEnabled: true, |
| 2327 | } |
| 2328 | |
| 2329 | btcRunner := NewBlipTesterClientRunner(t) |
| 2330 | const ( |
| 2331 | doc1ID = "doc1" |
| 2332 | doc2ID = "doc2" |
| 2333 | ) |
| 2334 | |
| 2335 | btcRunner.Run(func(t *testing.T) { |
| 2336 | rt := NewRestTester(t, rtConfig) |
| 2337 | defer rt.Close() |
| 2338 | |
| 2339 | btc := btcRunner.NewBlipTesterClientOptsWithRT(rt, nil) |
| 2340 | defer btc.Close() |
| 2341 | |
| 2342 | btcRunner.StartPull(btc.id) |
| 2343 | btcRunner.StartPush(btc.id) |
| 2344 | |
| 2345 | doc1Version := rt.PutDoc(doc1ID, `{}`) |
| 2346 | doc2Version := rt.PutDoc(doc2ID, `{}`) |
| 2347 | |
| 2348 | btcRunner.WaitForVersion(btc.id, doc1ID, doc1Version) |
| 2349 | btcRunner.WaitForVersion(btc.id, doc2ID, doc2Version) |
| 2350 | |
| 2351 | attachmentAData := base64.StdEncoding.EncodeToString([]byte("attachmentA")) |
| 2352 | attachmentBData := base64.StdEncoding.EncodeToString([]byte("attachmentB")) |
| 2353 | |
| 2354 | doc1Version = btcRunner.AddRev(btc.id, doc1ID, &doc1Version, []byte(`{"key": "val", "_attachments": {"attachment": {"data": "`+attachmentAData+`"}}}`)) |
| 2355 | doc2Version = btcRunner.AddRev(btc.id, doc2ID, &doc2Version, []byte(`{"key": "val", "_attachments": {"attachment": {"data": "`+attachmentBData+`"}}}`)) |
| 2356 | |
| 2357 | rt.WaitForVersion(doc1ID, doc1Version) |
| 2358 | rt.WaitForVersion(doc2ID, doc2Version) |
| 2359 | |
| 2360 | collection, ctx := rt.GetSingleTestDatabaseCollection() |
| 2361 | _, err := collection.GetDocument(ctx, "doc1", db.DocUnmarshalAll) |
| 2362 | require.NoError(t, err) |
| 2363 | _, err = collection.GetDocument(ctx, "doc2", db.DocUnmarshalAll) |
| 2364 | require.NoError(t, err) |
| 2365 | |
| 2366 | doc1Version = btcRunner.AddRev(btc.id, doc1ID, &doc1Version, []byte(`{"key": "val", "_attachments":{"attachment":{"digest":"sha1-SKk0IV40XSHW37d3H0xpv2+z9Ck=","length":11,"content_type":"","stub":true,"revpos":3}}}`)) |
| 2367 | |
| 2368 | rt.WaitForVersion(doc1ID, doc1Version) |
| 2369 | |
| 2370 | doc1, err := collection.GetDocument(ctx, "doc1", db.DocUnmarshalAll) |
| 2371 | require.NoError(t, err) |
| 2372 | |
| 2373 | assert.Equal(t, "sha1-SKk0IV40XSHW37d3H0xpv2+z9Ck=", doc1.Attachments()["attachment"].(map[string]interface{})["digest"]) |
| 2374 | |
| 2375 | req := rt.SendAdminRequest("GET", "/{{.keyspace}}/doc1/attachment", "") |
| 2376 | assert.Equal(t, "attachmentB", string(req.BodyBytes())) |
| 2377 | }) |
| 2378 | } |
| 2379 | |
| 2380 | // TestPushUnknownAttachmentAsStub sets revpos to an older generation, for an attachment that doesn't exist on the server. |
| 2381 | // Verifies that getAttachment is triggered, and attachment is properly persisted. |
nothing calls this directly
no test coverage detected