aboutsummaryrefslogtreecommitdiff
path: root/container_iterator_test.go
diff options
context:
space:
mode:
authorStefan Majewsky <majewsky@gmx.net>2018-02-19 21:30:33 +0100
committerStefan Majewsky <majewsky@gmx.net>2018-02-19 21:33:49 +0100
commit60d4779889baedc44972d4749daa073efca3b25c (patch)
treed47746971f659d6f7e3affe428f239b289954f5b /container_iterator_test.go
parent8f777460661bbbcbe42730979140f525b382110e (diff)
downloadgo-schwift-60d4779889baedc44972d4749daa073efca3b25c.tar.gz
reorganize code
* Gophercloud dependencies move into subpackage gopherschwift. * Tests move into subpackage tests (to avoid import cycles). + Rename "Client" to "Backend".
Diffstat (limited to 'container_iterator_test.go')
-rw-r--r--container_iterator_test.go179
1 files changed, 0 insertions, 179 deletions
diff --git a/container_iterator_test.go b/container_iterator_test.go
deleted file mode 100644
index 70620ad..0000000
--- a/container_iterator_test.go
+++ /dev/null
@@ -1,179 +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 schwift
-
-import (
- "fmt"
- "testing"
-)
-
-func TestContainerIterator(t *testing.T) {
- testWithAccount(t, func(a *Account) {
- cname := func(idx int) string {
- return fmt.Sprintf("schwift-test-listing%d", idx)
- }
-
- //create test containers that can be listed
- for idx := 1; idx <= 4; idx++ {
- _, err := a.Container(cname(idx)).EnsureExists()
- expectSuccess(t, err)
- }
-
- //test iteration with empty last page
- iter := a.Containers()
- iter.Prefix = "schwift-test-listing"
- cs, err := iter.NextPage(2)
- expectSuccess(t, err)
- expectContainerNames(t, cs, cname(1), cname(2))
- cs, err = iter.NextPage(2)
- expectSuccess(t, err)
- expectContainerNames(t, cs, cname(3), cname(4))
- cs, err = iter.NextPage(2)
- expectSuccess(t, err)
- expectContainerNames(t, cs)
- cs, err = iter.NextPage(2)
- expectSuccess(t, err)
- expectContainerNames(t, cs)
-
- //test iteration with partial last page
- iter = a.Containers()
- iter.Prefix = "schwift-test-listing"
- cs, err = iter.NextPage(3)
- expectSuccess(t, err)
- expectContainerNames(t, cs, cname(1), cname(2), cname(3))
- cs, err = iter.NextPage(3)
- expectSuccess(t, err)
- expectContainerNames(t, cs, cname(4))
- cs, err = iter.NextPage(4)
- expectSuccess(t, err)
- expectContainerNames(t, cs)
-
- //test detailed iteration
- iter = a.Containers()
- iter.Prefix = "schwift-test-listing"
- cis, err := iter.NextPageDetailed(2)
- expectSuccess(t, err)
- expectContainerInfos(t, cis, cname(1), cname(2))
- cis, err = iter.NextPageDetailed(3)
- expectSuccess(t, err)
- expectContainerInfos(t, cis, cname(3), cname(4))
- cis, err = iter.NextPageDetailed(3)
- expectSuccess(t, err)
- expectContainerInfos(t, cis)
- cis, err = iter.NextPageDetailed(3)
- expectSuccess(t, err)
- expectContainerInfos(t, cis)
-
- //test Foreach
- a.Invalidate()
- iter = a.Containers()
- iter.Prefix = "schwift-test-listing"
- idx := 0
- expectSuccess(t, iter.Foreach(func(c *Container) error {
- idx++
- expectString(t, c.Name(), cname(idx))
- return nil
- }))
- expectInt(t, idx, 4)
-
- if a.headers == nil {
- t.Error("ContainerIterator.Foreach did not initialize Account.Headers")
- }
-
- //test ForeachDetailed
- a.Invalidate()
- iter = a.Containers()
- iter.Prefix = "schwift-test-listing"
- idx = 0
- expectSuccess(t, iter.ForeachDetailed(func(info ContainerInfo) error {
- idx++
- expectString(t, info.Container.Name(), cname(idx))
- return nil
- }))
- expectInt(t, idx, 4)
-
- if a.headers == nil {
- t.Error("ContainerIterator.ForeachDetailed did not initialize Account.Headers")
- }
-
- //test Collect
- iter = a.Containers()
- iter.Prefix = "schwift-test-listing"
- cs, err = iter.Collect()
- expectSuccess(t, err)
- expectContainerNames(t, cs, cname(1), cname(2), cname(3), cname(4))
-
- //test CollectDetailed
- iter = a.Containers()
- iter.Prefix = "schwift-test-listing"
- cis, err = iter.CollectDetailed()
- expectSuccess(t, err)
- expectContainerInfos(t, cis, cname(1), cname(2), cname(3), cname(4))
-
- //cleanup
- iter = a.Containers()
- iter.Prefix = "schwift-test-listing"
- expectSuccess(t, iter.Foreach(func(c *Container) error {
- return c.Delete(nil, nil)
- }))
- })
-}
-
-func expectContainerNames(t *testing.T, actualContainers []*Container, expectedNames ...string) {
- t.Helper()
- if len(actualContainers) != len(expectedNames) {
- t.Errorf("expected %d containers, got %d containers",
- len(expectedNames), len(actualContainers))
- return
- }
- for idx, c := range actualContainers {
- if c.Name() != expectedNames[idx] {
- t.Errorf("expected containers[%d].Name() == %q, got %q",
- idx, expectedNames[idx], c.Name())
- }
- }
-}
-
-func expectContainerInfos(t *testing.T, actualInfos []ContainerInfo, expectedNames ...string) {
- t.Helper()
- if len(actualInfos) != len(expectedNames) {
- t.Errorf("expected %d containers, got %d containers",
- len(expectedNames), len(actualInfos))
- return
- }
- for idx, info := range actualInfos {
- if info.Container.Name() != expectedNames[idx] {
- t.Errorf("expected containers[%d].Name() == %q, got %q",
- idx, expectedNames[idx], info.Container.Name())
- }
- //TODO: upload test object of defined size to the listed containers to
- //check if this zero is not just the default value
- if info.BytesUsed != 0 {
- t.Errorf("expected containers[%d] bytesUsed == 0, got %d",
- idx, info.BytesUsed)
- }
- if info.ObjectCount != 0 {
- t.Errorf("expected containers[%d] objectCount == 0, got %d",
- idx, info.ObjectCount)
- }
- if info.LastModified.IsZero() {
- t.Errorf("containers[%d].LastModified is zero", idx)
- }
- }
-}