416 lines
8.3 KiB
Go
416 lines
8.3 KiB
Go
package kubemq
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
|
|
"github.com/dapr/components-contrib/bindings"
|
|
"github.com/dapr/components-contrib/metadata"
|
|
)
|
|
|
|
func Test_createOptions(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
meta bindings.Metadata
|
|
want *options
|
|
wantErr bool
|
|
}{
|
|
{
|
|
name: "create valid opts",
|
|
meta: bindings.Metadata{
|
|
Base: metadata.Base{
|
|
Name: "kubemq",
|
|
Properties: map[string]string{
|
|
"address": "localhost:50000",
|
|
"channel": "test",
|
|
"authToken": "authToken",
|
|
"pollMaxItems": "10",
|
|
"autoAcknowledged": "true",
|
|
"pollTimeoutSeconds": "10",
|
|
},
|
|
},
|
|
},
|
|
want: &options{
|
|
Address: "localhost:50000",
|
|
internalHost: "localhost",
|
|
internalPort: 50000,
|
|
AuthToken: "authToken",
|
|
Channel: "test",
|
|
AutoAcknowledged: true,
|
|
PollMaxItems: 10,
|
|
PollTimeoutSeconds: 10,
|
|
},
|
|
wantErr: false,
|
|
},
|
|
{
|
|
name: "create invalid opts with bad host",
|
|
meta: bindings.Metadata{
|
|
Base: metadata.Base{
|
|
Name: "kubemq",
|
|
Properties: map[string]string{
|
|
"address": ":50000",
|
|
"clientId": "clientId",
|
|
},
|
|
},
|
|
},
|
|
want: nil,
|
|
wantErr: true,
|
|
},
|
|
{
|
|
name: "create invalid opts with bad port",
|
|
meta: bindings.Metadata{
|
|
Base: metadata.Base{
|
|
Name: "kubemq",
|
|
Properties: map[string]string{
|
|
"address": "localhost:badport",
|
|
"clientId": "clientId",
|
|
},
|
|
},
|
|
},
|
|
want: nil,
|
|
wantErr: true,
|
|
},
|
|
{
|
|
name: "create invalid opts with empty address",
|
|
meta: bindings.Metadata{
|
|
Base: metadata.Base{
|
|
Name: "kubemq",
|
|
Properties: map[string]string{
|
|
"address": "",
|
|
"clientId": "clientId",
|
|
},
|
|
},
|
|
},
|
|
want: nil,
|
|
wantErr: true,
|
|
},
|
|
{
|
|
name: "create invalid opts with bad address format",
|
|
meta: bindings.Metadata{Base: metadata.Base{
|
|
Name: "kubemq",
|
|
Properties: map[string]string{
|
|
"address": "localhost50000",
|
|
},
|
|
}},
|
|
want: nil,
|
|
wantErr: true,
|
|
},
|
|
{
|
|
name: "create invalid opts with no channel",
|
|
meta: bindings.Metadata{Base: metadata.Base{
|
|
Name: "kubemq",
|
|
Properties: map[string]string{
|
|
"address": "localhost:50000",
|
|
},
|
|
}},
|
|
want: nil,
|
|
wantErr: true,
|
|
},
|
|
{
|
|
name: "create invalid opts with bad autoAcknowledged",
|
|
meta: bindings.Metadata{Base: metadata.Base{
|
|
Name: "kubemq",
|
|
Properties: map[string]string{
|
|
"address": "localhost:50000",
|
|
"channel": "test",
|
|
"autoAcknowledged": "bad",
|
|
},
|
|
}},
|
|
want: &options{
|
|
Address: "localhost:50000",
|
|
internalHost: "localhost",
|
|
internalPort: 50000,
|
|
AuthToken: "",
|
|
Channel: "test",
|
|
AutoAcknowledged: false,
|
|
PollMaxItems: 1,
|
|
PollTimeoutSeconds: 3600,
|
|
},
|
|
wantErr: false,
|
|
},
|
|
{
|
|
name: "create invalid opts with invalid pollMaxItems",
|
|
meta: bindings.Metadata{Base: metadata.Base{
|
|
Name: "kubemq",
|
|
Properties: map[string]string{
|
|
"address": "localhost:50000",
|
|
"channel": "test",
|
|
"pollMaxItems": "0",
|
|
},
|
|
}},
|
|
want: nil,
|
|
wantErr: true,
|
|
},
|
|
{
|
|
name: "create invalid opts with bad pollMaxItems format",
|
|
meta: bindings.Metadata{Base: metadata.Base{
|
|
Name: "kubemq",
|
|
Properties: map[string]string{
|
|
"address": "localhost:50000",
|
|
"channel": "test",
|
|
"pollMaxItems": "bad",
|
|
},
|
|
}},
|
|
want: nil,
|
|
wantErr: true,
|
|
},
|
|
{
|
|
name: "create invalid opts with invalid pollTimeoutSeconds",
|
|
meta: bindings.Metadata{Base: metadata.Base{
|
|
Name: "kubemq",
|
|
Properties: map[string]string{
|
|
"address": "localhost:50000",
|
|
"channel": "test",
|
|
"pollTimeoutSeconds": "0",
|
|
},
|
|
}},
|
|
want: nil,
|
|
wantErr: true,
|
|
},
|
|
{
|
|
name: "create invalid opts with bad format pollTimeoutSeconds",
|
|
meta: bindings.Metadata{Base: metadata.Base{
|
|
Name: "kubemq",
|
|
Properties: map[string]string{
|
|
"address": "localhost:50000",
|
|
"channel": "test",
|
|
"pollTimeoutSeconds": "bad",
|
|
},
|
|
}},
|
|
want: nil,
|
|
wantErr: true,
|
|
},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
got, err := createOptions(tt.meta)
|
|
if tt.wantErr {
|
|
require.Error(t, err)
|
|
} else {
|
|
require.NoError(t, err)
|
|
assert.Equal(t, tt.want, got)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func Test_parsePolicyDelaySeconds(t *testing.T) {
|
|
type args struct {
|
|
md map[string]string
|
|
}
|
|
tests := []struct {
|
|
name string
|
|
args args
|
|
want int
|
|
}{
|
|
{
|
|
name: "parse policy delay seconds - nil",
|
|
args: args{
|
|
md: nil,
|
|
},
|
|
want: 0,
|
|
},
|
|
{
|
|
name: "parse policy delay seconds - empty",
|
|
args: args{
|
|
md: map[string]string{},
|
|
},
|
|
want: 0,
|
|
},
|
|
{
|
|
name: "parse policy delay seconds",
|
|
args: args{
|
|
md: map[string]string{
|
|
"delaySeconds": "10",
|
|
},
|
|
},
|
|
want: 10,
|
|
},
|
|
{
|
|
name: "parse policy delay seconds with bad format",
|
|
args: args{
|
|
md: map[string]string{
|
|
"delaySeconds": "bad",
|
|
},
|
|
},
|
|
want: 0,
|
|
},
|
|
{
|
|
name: "parse policy delay seconds with negative value",
|
|
args: args{
|
|
md: map[string]string{
|
|
"delaySeconds": "-10",
|
|
},
|
|
},
|
|
want: 0,
|
|
},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
assert.Equalf(t, tt.want, parsePolicyDelaySeconds(tt.args.md), "parsePolicyDelaySeconds(%v)", tt.args.md)
|
|
})
|
|
}
|
|
}
|
|
|
|
func Test_parsePolicyExpirationSeconds(t *testing.T) {
|
|
type args struct {
|
|
md map[string]string
|
|
}
|
|
tests := []struct {
|
|
name string
|
|
args args
|
|
want int
|
|
}{
|
|
{
|
|
name: "parse policy expiration seconds - nil",
|
|
args: args{
|
|
md: nil,
|
|
},
|
|
want: 0,
|
|
},
|
|
{
|
|
name: "parse policy expiration seconds - empty",
|
|
args: args{
|
|
md: map[string]string{},
|
|
},
|
|
want: 0,
|
|
},
|
|
{
|
|
name: "parse policy expiration seconds",
|
|
args: args{
|
|
md: map[string]string{
|
|
"expirationSeconds": "10",
|
|
},
|
|
},
|
|
want: 10,
|
|
},
|
|
{
|
|
name: "parse policy expiration seconds with bad format",
|
|
args: args{
|
|
md: map[string]string{
|
|
"expirationSeconds": "bad",
|
|
},
|
|
},
|
|
want: 0,
|
|
},
|
|
{
|
|
name: "parse policy expiration seconds with negative value",
|
|
args: args{
|
|
md: map[string]string{
|
|
"expirationSeconds": "-10",
|
|
},
|
|
},
|
|
want: 0,
|
|
},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
assert.Equalf(t, tt.want, parsePolicyExpirationSeconds(tt.args.md), "parsePolicyExpirationSeconds(%v)", tt.args.md)
|
|
})
|
|
}
|
|
}
|
|
|
|
func Test_parseSetPolicyMaxReceiveCount(t *testing.T) {
|
|
type args struct {
|
|
md map[string]string
|
|
}
|
|
tests := []struct {
|
|
name string
|
|
args args
|
|
want int
|
|
}{
|
|
{
|
|
name: "parse policy max receive count nil",
|
|
args: args{
|
|
md: nil,
|
|
},
|
|
want: 0,
|
|
},
|
|
{
|
|
name: "parse policy max receive count empty",
|
|
args: args{
|
|
md: map[string]string{},
|
|
},
|
|
want: 0,
|
|
},
|
|
{
|
|
name: "parse policy max receive count",
|
|
args: args{
|
|
md: map[string]string{
|
|
"maxReceiveCount": "10",
|
|
},
|
|
},
|
|
want: 10,
|
|
},
|
|
|
|
{
|
|
name: "parse policy max receive count with bad format",
|
|
args: args{
|
|
md: map[string]string{
|
|
"maxReceiveCount": "bad",
|
|
},
|
|
},
|
|
want: 0,
|
|
},
|
|
{
|
|
name: "parse policy max receive count with negative value",
|
|
args: args{
|
|
md: map[string]string{
|
|
"maxReceiveCount": "-10",
|
|
},
|
|
},
|
|
want: 0,
|
|
},
|
|
}
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
assert.Equalf(t, tt.want, parseSetPolicyMaxReceiveCount(tt.args.md), "parseSetPolicyMaxReceiveCount(%v)", tt.args.md)
|
|
})
|
|
}
|
|
}
|
|
|
|
func Test_parsePolicyMaxReceiveQueue(t *testing.T) {
|
|
type args struct {
|
|
md map[string]string
|
|
}
|
|
tests := []struct {
|
|
name string
|
|
args args
|
|
want string
|
|
}{
|
|
{
|
|
name: "parse policy max receive queue nil",
|
|
args: args{
|
|
md: nil,
|
|
},
|
|
want: "",
|
|
},
|
|
{
|
|
name: "parse policy max receive queue empty",
|
|
args: args{
|
|
md: map[string]string{},
|
|
},
|
|
want: "",
|
|
},
|
|
{
|
|
name: "parse policy max receive queue",
|
|
args: args{
|
|
md: map[string]string{
|
|
"maxReceiveQueue": "some-queue",
|
|
},
|
|
},
|
|
want: "some-queue",
|
|
},
|
|
}
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
assert.Equalf(t, tt.want, parsePolicyMaxReceiveQueue(tt.args.md), "parsePolicyMaxReceiveQueue(%v)", tt.args.md)
|
|
})
|
|
}
|
|
}
|