Browse Source

s3tables: broaden namespace properties round-trip test

pull/8276/head
Chris Lu 2 days ago
parent
commit
5e1d824c61
  1. 65
      weed/s3api/s3tables/utils_namespace_test.go

65
weed/s3api/s3tables/utils_namespace_test.go

@ -2,6 +2,7 @@ package s3tables
import ( import (
"encoding/json" "encoding/json"
"reflect"
"strings" "strings"
"testing" "testing"
) )
@ -127,23 +128,59 @@ func TestExpandNamespace(t *testing.T) {
} }
func TestNamespaceMetadataPropertiesRoundTrip(t *testing.T) { func TestNamespaceMetadataPropertiesRoundTrip(t *testing.T) {
metadata := namespaceMetadata{
Namespace: []string{"analytics"},
Properties: map[string]string{"owner": "finance"},
OwnerAccountID: "123456789012",
testCases := []struct {
name string
metadata namespaceMetadata
}{
{
name: "with properties",
metadata: namespaceMetadata{
Namespace: []string{"analytics"},
Properties: map[string]string{"owner": "finance"},
OwnerAccountID: "123456789012",
},
},
{
name: "nil properties",
metadata: namespaceMetadata{
Namespace: []string{"analytics"},
Properties: nil,
OwnerAccountID: "123456789012",
},
},
{
name: "empty properties",
metadata: namespaceMetadata{
Namespace: []string{"analytics"},
Properties: map[string]string{},
OwnerAccountID: "123456789012",
},
},
} }
data, err := json.Marshal(metadata)
if err != nil {
t.Fatalf("json.Marshal(metadata) returned error: %v", err)
}
for _, tc := range testCases {
t.Run(tc.name, func(t *testing.T) {
data, err := json.Marshal(tc.metadata)
if err != nil {
t.Fatalf("json.Marshal(metadata) returned error: %v", err)
}
var decoded namespaceMetadata
if err := json.Unmarshal(data, &decoded); err != nil {
t.Fatalf("json.Unmarshal(data) returned error: %v", err)
}
var decoded namespaceMetadata
if err := json.Unmarshal(data, &decoded); err != nil {
t.Fatalf("json.Unmarshal(data) returned error: %v", err)
}
if decoded.Properties["owner"] != "finance" {
t.Fatalf("decoded.Properties[owner] = %q, want %q", decoded.Properties["owner"], "finance")
// Due to `omitempty`, nil and empty maps are unmarshaled as nil.
if len(tc.metadata.Properties) == 0 {
if decoded.Properties != nil {
t.Fatalf("expected nil properties for empty/nil input, got %v", decoded.Properties)
}
return
}
if !reflect.DeepEqual(decoded.Properties, tc.metadata.Properties) {
t.Fatalf("decoded.Properties = %v, want %v", decoded.Properties, tc.metadata.Properties)
}
})
} }
} }
Loading…
Cancel
Save