aboutsummaryrefslogtreecommitdiff
path: root/tests/bulk_delete_test.go
diff options
context:
space:
mode:
authorStefan Majewsky <majewsky@gmx.net>2018-05-02 22:37:26 +0200
committerStefan Majewsky <majewsky@gmx.net>2018-05-02 22:37:26 +0200
commitfc023fb7387772b70496d24449e301cd856634ff (patch)
tree2f48bbe0abea40586de9679d229da9e3666357a2 /tests/bulk_delete_test.go
parent714ac4546a1378fec6fbec94096c6ec315214081 (diff)
downloadgo-schwift-fc023fb7387772b70496d24449e301cd856634ff.tar.gz
test coverage for bulk-delete fallback code path
Diffstat (limited to 'tests/bulk_delete_test.go')
-rw-r--r--tests/bulk_delete_test.go81
1 files changed, 49 insertions, 32 deletions
diff --git a/tests/bulk_delete_test.go b/tests/bulk_delete_test.go
index dfe8468..472feb8 100644
--- a/tests/bulk_delete_test.go
+++ b/tests/bulk_delete_test.go
@@ -24,52 +24,62 @@ import (
"testing"
"github.com/majewsky/schwift"
+ "github.com/majewsky/schwift/capabilities"
)
func TestBulkDeleteSuccess(t *testing.T) {
testWithAccount(t, func(a *schwift.Account) {
- c, err := a.Container("schwift-test-bulkdelete").EnsureExists()
- expectSuccess(t, err)
- objs, err := createTestObjects(c)
- expectSuccess(t, err)
+ testWithAndWithoutBulkDeleteSupport(func() {
+ c, err := a.Container("schwift-test-bulkdelete").EnsureExists()
+ expectSuccess(t, err)
+ objs, err := createTestObjects(c)
+ expectSuccess(t, err)
- numDeleted, numNotFound, err := c.Account().BulkDelete(objs, nil, nil)
- expectSuccess(t, err)
- expectInt(t, numDeleted, len(objs))
- expectInt(t, numNotFound, 0)
- expectContainerExistence(t, c, true)
+ numDeleted, numNotFound, err := c.Account().BulkDelete(objs, nil, nil)
+ expectSuccess(t, err)
+ expectInt(t, numDeleted, len(objs))
+ expectInt(t, numNotFound, 0)
+ expectContainerExistence(t, c, true)
- numDeleted, numNotFound, err = c.Account().BulkDelete(objs, nil, nil)
- expectSuccess(t, err)
- expectInt(t, numDeleted, 0)
- expectInt(t, numNotFound, len(objs))
- expectContainerExistence(t, c, true)
+ numDeleted, numNotFound, err = c.Account().BulkDelete(objs, nil, nil)
+ expectSuccess(t, err)
+ expectInt(t, numDeleted, 0)
+ expectInt(t, numNotFound, len(objs))
+ expectContainerExistence(t, c, true)
- objs, err = createTestObjects(c)
- expectSuccess(t, err)
- cs := []*schwift.Container{c}
+ objs, err = createTestObjects(c)
+ expectSuccess(t, err)
+ cs := []*schwift.Container{c}
- numDeleted, numNotFound, err = c.Account().BulkDelete(objs, cs, nil)
- expectSuccess(t, err)
- expectInt(t, numDeleted, len(objs)+1)
- expectInt(t, numNotFound, 0)
- expectContainerExistence(t, c, false)
+ numDeleted, numNotFound, err = c.Account().BulkDelete(objs, cs, nil)
+ expectSuccess(t, err)
+ expectInt(t, numDeleted, len(objs)+1)
+ expectInt(t, numNotFound, 0)
+ expectContainerExistence(t, c, false)
+ })
})
}
func TestBulkDeleteError(t *testing.T) {
testWithContainer(t, func(c *schwift.Container) {
- objs, err := createTestObjects(c)
- expectSuccess(t, err)
- objs = objs[1:]
- cs := []*schwift.Container{c}
+ testWithAndWithoutBulkDeleteSupport(func() {
+ objs, err := createTestObjects(c)
+ expectSuccess(t, err)
+ objs = objs[1:]
+ cs := []*schwift.Container{c}
- //not deleting all objects should lead to 409 Conflict when deleting the Container
- numDeleted, numNotFound, err := c.Account().BulkDelete(objs, cs, nil)
- expectInt(t, numDeleted, len(objs))
- expectInt(t, numNotFound, 0)
- expectError(t, err, "400 Bad Request (+1 object errors)")
- expectContainerExistence(t, c, true)
+ //not deleting all objects should lead to 409 Conflict when deleting the Container
+ //(NOTE: actual Swift returns 400 here although I don't understand why
+ //even after reading its code)
+ numDeleted, numNotFound, err := c.Account().BulkDelete(objs, cs, nil)
+ expectInt(t, numDeleted, len(objs))
+ expectInt(t, numNotFound, 0)
+ t.Logf("err = %#v\n", err)
+ if err.Error() != "400 Bad Request (+1 object errors)" {
+ expectError(t, err, "409 Conflict: Conflict (+1 object errors)")
+ }
+ expectContainerExistence(t, c, true)
+ })
})
}
@@ -85,3 +95,10 @@ func createTestObjects(c *schwift.Container) ([]*schwift.Object, error) {
}
return objs, nil
}
+
+func testWithAndWithoutBulkDeleteSupport(action func()) {
+ capabilities.AllowBulkDelete = false
+ action()
+ capabilities.AllowBulkDelete = true
+ action()
+}