diff options
| author | Stefan Majewsky <majewsky@gmx.net> | 2018-02-19 21:30:33 +0100 |
|---|---|---|
| committer | Stefan Majewsky <majewsky@gmx.net> | 2018-02-19 21:33:49 +0100 |
| commit | 60d4779889baedc44972d4749daa073efca3b25c (patch) | |
| tree | d47746971f659d6f7e3affe428f239b289954f5b /tests/container_test.go | |
| parent | 8f777460661bbbcbe42730979140f525b382110e (diff) | |
| download | go-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 'tests/container_test.go')
| -rw-r--r-- | tests/container_test.go | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/tests/container_test.go b/tests/container_test.go new file mode 100644 index 0000000..5a0046b --- /dev/null +++ b/tests/container_test.go @@ -0,0 +1,85 @@ +/****************************************************************************** +* +* 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 ( + "net/http" + "testing" + + "github.com/majewsky/schwift" +) + +func TestContainerLifecycle(t *testing.T) { + testWithAccount(t, func(a *schwift.Account) { + containerName := getRandomName() + c := a.Container(containerName) + + expectString(t, c.Name(), containerName) + if c.Account() != a { + t.Errorf("expected c.Account() = %#v, got %#v instead\n", a, c.Account()) + } + + exists, err := c.Exists() + expectSuccess(t, err) + expectBool(t, exists, false) + + _, err = c.Headers() + expectError(t, err, "expected 204 response, got 404 instead") + expectBool(t, schwift.Is(err, http.StatusNotFound), true) + expectBool(t, schwift.Is(err, http.StatusNoContent), false) + + //DELETE should be idempotent and not return success on non-existence, but + //OpenStack LOVES to be inconsistent with everything (including, notably, itself) + err = c.Delete(nil, nil) + expectError(t, err, "expected 204 response, got 404 instead: <html><h1>Not Found</h1><p>The resource could not be found.</p></html>") + + err = c.Create(nil, nil) + expectSuccess(t, err) + + exists, err = c.Exists() + expectSuccess(t, err) + expectBool(t, exists, true) + + err = c.Delete(nil, nil) + expectSuccess(t, err) + }) +} + +func TestContainerUpdate(t *testing.T) { + testWithContainer(t, func(c *schwift.Container) { + + hdr, err := c.Headers() + expectSuccess(t, err) + expectBool(t, hdr.ObjectCount().Exists(), true) + expectUint64(t, hdr.ObjectCount().Get(), 0) + + hdr = make(schwift.ContainerHeaders) + hdr.ObjectCountQuota().Set(23) + hdr.BytesUsedQuota().Set(42) + + err = c.Update(hdr, nil) + expectSuccess(t, err) + + hdr, err = c.Headers() + expectSuccess(t, err) + expectUint64(t, hdr.BytesUsedQuota().Get(), 42) + expectUint64(t, hdr.ObjectCountQuota().Get(), 23) + + }) +} |
