aboutsummaryrefslogtreecommitdiff
path: root/tests/bulk_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'tests/bulk_test.go')
-rw-r--r--tests/bulk_test.go135
1 files changed, 0 insertions, 135 deletions
diff --git a/tests/bulk_test.go b/tests/bulk_test.go
deleted file mode 100644
index b7f1e77..0000000
--- a/tests/bulk_test.go
+++ /dev/null
@@ -1,135 +0,0 @@
-/******************************************************************************
-*
-* Copyright 2018 Stefan Majewsky <majewsky@gmx.net>
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*
-******************************************************************************/
-
-package tests
-
-import (
- "archive/tar"
- "bytes"
- "strings"
- "testing"
-
- "github.com/majewsky/schwift"
-)
-
-func TestBulkUploadSuccess(t *testing.T) {
- testWithContainer(t, func(c *schwift.Container) {
- obj1 := c.Object("file1")
- obj2 := c.Object("file2")
-
- archive := buildTarArchive(map[string][]byte{
- obj1.FullName(): []byte("hello"),
- obj2.FullName(): []byte("world"),
- })
- n, err := c.Account().BulkUpload(
- "", //upload path
- schwift.BulkUploadTar,
- bytes.NewReader(archive),
- nil, nil,
- )
- expectInt(t, n, 2)
- expectSuccess(t, err)
-
- expectObjectExistence(t, obj1, true)
- expectObjectExistence(t, obj2, true)
- expectObjectContent(t, obj1, []byte("hello"))
- expectObjectContent(t, obj2, []byte("world"))
- })
-}
-
-func TestBulkUploadArchiveError(t *testing.T) {
- testWithContainer(t, func(c *schwift.Container) {
- n, err := c.Account().BulkUpload(
- c.Name(), //upload path
- schwift.BulkUploadTar,
- strings.NewReader("This is not the TAR archive you're looking for."),
- nil, nil,
- )
- expectInt(t, n, 0)
- expectError(t, err, "400 Bad Request: Invalid Tar File: truncated header")
- bulkErr := err.(schwift.BulkUploadError)
- expectInt(t, bulkErr.StatusCode, 400)
- expectString(t, bulkErr.ArchiveError, "Invalid Tar File: truncated header")
- expectInt(t, len(bulkErr.ObjectErrors), 0)
- })
-}
-
-func TestBulkUploadObjectError(t *testing.T) {
- testWithContainer(t, func(c *schwift.Container) {
- obj1 := c.Object(buildInvalidObjectName())
- obj2 := c.Object("file2")
- expectObjectExistence(t, obj2, false)
-
- archive := buildTarArchive(map[string][]byte{
- obj1.Name(): []byte("hello"),
- obj2.Name(): []byte("world"),
- })
- n, err := c.Account().BulkUpload(
- c.Name(), //upload path
- schwift.BulkUploadTar,
- bytes.NewReader(archive),
- nil, nil,
- )
- expectInt(t, n, 1)
- expectError(t, err, "400 Bad Request (+1 object errors)")
- bulkErr := err.(schwift.BulkUploadError)
- expectInt(t, len(bulkErr.ObjectErrors), 1)
- expectString(t, bulkErr.ObjectErrors[0].ContainerName, c.Name())
- expectInt(t, bulkErr.ObjectErrors[0].StatusCode, 400)
- //^ We cannot match the ObjectName (or use expectError, for that matter)
- //here because Swift truncates the object name to its max length.
-
- //even if some files cannot be processed, the other files shall be stored correctly
- expectObjectExistence(t, obj2, true)
- expectObjectContent(t, obj2, []byte("world"))
- })
-}
-
-func buildTarArchive(files map[string][]byte) []byte {
- var buf bytes.Buffer
- w := tar.NewWriter(&buf)
- for fileName, contents := range files {
- err := w.WriteHeader(&tar.Header{
- Typeflag: tar.TypeReg,
- Name: fileName,
- Size: int64(len(contents)),
- Mode: 0100644,
- })
- if err != nil {
- panic(err.Error())
- }
- _, err = w.Write(contents)
- if err != nil {
- panic(err.Error())
- }
- }
- err := w.Close()
- if err != nil {
- panic(err.Error())
- }
- return buf.Bytes()
-}
-
-func buildInvalidObjectName() string {
- //5000 is more than the usual max_object_name_length of 1024
- buf := make([]byte, 5000)
- for idx := range buf {
- buf[idx] = 'a'
- }
- return string(buf)
-}