components-contrib/pubsub/kubemq/metadata_test.go

161 lines
3.5 KiB
Go

package kubemq
import (
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
mdata "github.com/dapr/components-contrib/metadata"
"github.com/dapr/components-contrib/pubsub"
)
func Test_createMetadata(t *testing.T) {
tests := []struct {
name string
meta pubsub.Metadata
want *kubemqMetadata
wantErr bool
}{
{
name: "create valid metadata",
meta: pubsub.Metadata{
Base: mdata.Base{
Properties: map[string]string{
"address": "localhost:50000",
"channel": "test",
"clientID": "clientID",
"authToken": "authToken",
"group": "group",
"store": "true",
"useMock": "true",
"disableReDelivery": "true",
},
},
},
want: &kubemqMetadata{
Address: "localhost:50000",
internalHost: "localhost",
internalPort: 50000,
ClientID: "clientID",
AuthToken: "authToken",
Group: "group",
IsStore: true,
DisableReDelivery: true,
},
wantErr: false,
},
{
name: "create valid metadata with empty group",
meta: pubsub.Metadata{
Base: mdata.Base{
Properties: map[string]string{
"address": "localhost:50000",
"clientID": "clientID",
"authToken": "authToken",
"store": "false",
},
},
},
want: &kubemqMetadata{
Address: "localhost:50000",
internalHost: "localhost",
internalPort: 50000,
ClientID: "clientID",
AuthToken: "authToken",
Group: "",
IsStore: false,
},
wantErr: false,
},
{
name: "create valid metadata with empty authToken",
meta: pubsub.Metadata{
Base: mdata.Base{
Properties: map[string]string{
"address": "localhost:50000",
"channel": "test",
"clientID": "clientID",
"group": "group",
"store": "true",
},
},
},
want: &kubemqMetadata{
Address: "localhost:50000",
internalHost: "localhost",
internalPort: 50000,
ClientID: "clientID",
AuthToken: "",
Group: "group",
IsStore: true,
},
wantErr: false,
},
{
name: "create invalid metadata with bad host",
meta: pubsub.Metadata{
Base: mdata.Base{
Properties: map[string]string{
"address": ":50000",
"clientID": "clientID",
},
},
},
want: nil,
wantErr: true,
},
{
name: "create invalid metadata with bad port",
meta: pubsub.Metadata{
Base: mdata.Base{
Properties: map[string]string{
"address": "localhost:badport",
"clientID": "clientID",
},
},
},
want: nil,
wantErr: true,
},
{
name: "create invalid metadata with empty address",
meta: pubsub.Metadata{
Base: mdata.Base{
Properties: map[string]string{
"address": "",
"clientID": "clientID",
},
},
},
want: nil,
wantErr: true,
},
{
name: "create invalid metadata with bad address format",
meta: pubsub.Metadata{
Base: mdata.Base{
Properties: map[string]string{
"address": "localhost:50000:badport",
"clientID": "clientID",
},
},
},
want: nil,
wantErr: true,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
got, err := createMetadata(tt.meta)
if tt.wantErr {
require.Error(t, err)
} else {
require.NoError(t, err)
assert.Equal(t, tt.want, got)
}
})
}
}