aboutsummaryrefslogtreecommitdiff
path: root/headers_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'headers_test.go')
-rw-r--r--headers_test.go81
1 files changed, 81 insertions, 0 deletions
diff --git a/headers_test.go b/headers_test.go
new file mode 100644
index 0000000..6859690
--- /dev/null
+++ b/headers_test.go
@@ -0,0 +1,81 @@
+/******************************************************************************
+*
+* 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 (
+ "net/http"
+ "testing"
+)
+
+func TestParseAccountHeadersSuccess(t *testing.T) {
+ var headers AccountHeaders
+ err := parseHeaders(http.Header{
+ "X-Account-Bytes-Used": {"1234"},
+ "X-Account-Object-Count": {"42"},
+ "X-Account-Container-Count": {"23"},
+ "X-Account-Meta-Quota-Bytes": {"1048576"},
+ "X-Account-Meta-foo": {"bar"},
+ "X-Account-Meta-FOO": {"baz"},
+ }, &headers)
+
+ expectError(t, err, nil)
+ expectUint64(t, headers.BytesUsed, 1234)
+ expectUint64(t, headers.ContainerCount, 23)
+ expectUint64(t, headers.ObjectCount, 42)
+
+ value, err := headers.QuotaBytes().Get()
+ expectError(t, err, nil)
+ expectUint64(t, value, 1048576)
+
+ //metadata keys are case-insensitive (wtf Swift)
+ expectString(t, headers.Metadata["foo"], "bar")
+ expectString(t, headers.Metadata["Foo"], "")
+ expectString(t, headers.Metadata["FOO"], "baz")
+}
+
+//TODO TestParseAccountHeadersError
+
+func expectUint64(t *testing.T, actual uint64, expected uint64) {
+ t.Helper()
+ if actual != expected {
+ t.Errorf("expected value %d, got %d instead\n", expected, actual)
+ }
+}
+
+func expectString(t *testing.T, actual string, expected string) {
+ t.Helper()
+ if actual != expected {
+ t.Errorf("expected value %d, got %d instead\n", expected, actual)
+ }
+}
+
+func expectError(t *testing.T, actual error, expected *string) {
+ t.Helper()
+ if actual == nil {
+ if expected != nil {
+ t.Errorf("expected error %q, got no error\n", *expected)
+ }
+ } else {
+ if expected == nil {
+ t.Errorf("expected no error, got %q\n", actual.Error())
+ } else if *expected != actual.Error() {
+ t.Errorf("expected error %q, got %q instead\n", *expected, actual.Error())
+ }
+ }
+}