107 lines
1.9 KiB
Go
107 lines
1.9 KiB
Go
|
package protocol_test
|
||
|
|
||
|
import (
|
||
|
"reflect"
|
||
|
"testing"
|
||
|
|
||
|
"github.com/aws/aws-sdk-go/private/protocol"
|
||
|
"github.com/stretchr/testify/assert"
|
||
|
)
|
||
|
|
||
|
func TestCanSetIdempotencyToken(t *testing.T) {
|
||
|
cases := []struct {
|
||
|
CanSet bool
|
||
|
Case interface{}
|
||
|
}{
|
||
|
{
|
||
|
true,
|
||
|
struct {
|
||
|
Field *string `idempotencyToken:"true"`
|
||
|
}{},
|
||
|
},
|
||
|
{
|
||
|
true,
|
||
|
struct {
|
||
|
Field string `idempotencyToken:"true"`
|
||
|
}{},
|
||
|
},
|
||
|
{
|
||
|
false,
|
||
|
struct {
|
||
|
Field *string `idempotencyToken:"true"`
|
||
|
}{Field: new(string)},
|
||
|
},
|
||
|
{
|
||
|
false,
|
||
|
struct {
|
||
|
Field string `idempotencyToken:"true"`
|
||
|
}{Field: "value"},
|
||
|
},
|
||
|
{
|
||
|
false,
|
||
|
struct {
|
||
|
Field *int `idempotencyToken:"true"`
|
||
|
}{},
|
||
|
},
|
||
|
{
|
||
|
false,
|
||
|
struct {
|
||
|
Field *string
|
||
|
}{},
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for i, c := range cases {
|
||
|
v := reflect.Indirect(reflect.ValueOf(c.Case))
|
||
|
ty := v.Type()
|
||
|
canSet := protocol.CanSetIdempotencyToken(v.Field(0), ty.Field(0))
|
||
|
assert.Equal(t, c.CanSet, canSet, "Expect case %d can set to match", i)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func TestSetIdempotencyToken(t *testing.T) {
|
||
|
cases := []struct {
|
||
|
Case interface{}
|
||
|
}{
|
||
|
{
|
||
|
&struct {
|
||
|
Field *string `idempotencyToken:"true"`
|
||
|
}{},
|
||
|
},
|
||
|
{
|
||
|
&struct {
|
||
|
Field string `idempotencyToken:"true"`
|
||
|
}{},
|
||
|
},
|
||
|
{
|
||
|
&struct {
|
||
|
Field *string `idempotencyToken:"true"`
|
||
|
}{Field: new(string)},
|
||
|
},
|
||
|
{
|
||
|
&struct {
|
||
|
Field string `idempotencyToken:"true"`
|
||
|
}{Field: ""},
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for i, c := range cases {
|
||
|
v := reflect.Indirect(reflect.ValueOf(c.Case))
|
||
|
|
||
|
protocol.SetIdempotencyToken(v.Field(0))
|
||
|
assert.NotEmpty(t, v.Field(0).Interface(), "Expect case %d to be set", i)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func TestUUIDVersion4(t *testing.T) {
|
||
|
uuid := protocol.UUIDVersion4(make([]byte, 16))
|
||
|
assert.Equal(t, `00000000-0000-4000-8000-000000000000`, uuid)
|
||
|
|
||
|
b := make([]byte, 16)
|
||
|
for i := 0; i < len(b); i++ {
|
||
|
b[i] = 1
|
||
|
}
|
||
|
uuid = protocol.UUIDVersion4(b)
|
||
|
assert.Equal(t, `01010101-0101-4101-8101-010101010101`, uuid)
|
||
|
}
|