Passed
Push — master ( 2f1af3...a8e5e6 )
by eval
03:46 queued 02:09
created

dynamodb.getTestConfig   A

Complexity

Conditions 1

Size

Total Lines 5
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 5
nop 0
dl 0
loc 5
rs 10
c 0
b 0
f 0
1
package dynamodb
2
3
import (
4
	"context"
5
	"testing"
6
7
	SDK "github.com/aws/aws-sdk-go-v2/service/dynamodb"
8
	"github.com/matryer/is"
9
10
	"github.com/evalphobia/aws-sdk-go-v2-wrapper/config"
11
	"github.com/evalphobia/aws-sdk-go-v2-wrapper/log"
12
)
13
14
const (
15
	defaultEndpoint = "http://localhost:8000"
16
17
	testTableName = "test-table"
18
)
19
20
func TestNew(t *testing.T) {
21
	is := is.NewRelaxed(t)
22
23
	// custom endpoint
24
	svc, err := New(getTestConfig())
25
	is.NoErr(err)
26
	is.True(svc.client != nil)
27
	is.Equal(SDK.ServiceName, svc.client.Metadata.ServiceName)
28
	is.Equal(SDK.ServiceID, svc.client.Metadata.ServiceID)
29
	is.Equal(SDK.EndpointsID, svc.client.Metadata.EndpointsID)
30
31
	ep, err := svc.client.EndpointResolver.ResolveEndpoint("", "")
32
	is.NoErr(err)
33
	is.Equal(defaultEndpoint, ep.URL)
34
35
	// plain region
36
	svc, err = New(config.Config{})
37
	is.NoErr(err)
38
	is.True(svc.client != nil)
39
40
	region := "us-west-1"
41
	expectedEndpoint := "https://dynamodb." + region + ".amazonaws.com"
42
	ep, err = svc.client.EndpointResolver.ResolveEndpoint(SDK.EndpointsID, region)
43
	is.NoErr(err)
44
	is.Equal(expectedEndpoint, ep.URL)
45
46
	_, err = svc.client.EndpointResolver.ResolveEndpoint("", "")
47
	is.True(err != nil)
48
}
49
50
func TestSetLogger(t *testing.T) {
51
	is := is.NewRelaxed(t)
52
	svc := getTestClient(t)
53
	is.Equal(log.DefaultLogger, svc.logger)
54
55
	stdLogger := &log.StdLogger{}
56
	svc.SetLogger(stdLogger)
57
	is.Equal(stdLogger, svc.logger)
58
}
59
60
func getTestConfig() config.Config {
61
	return config.Config{
62
		AccessKey:      "access",
63
		SecretKey:      "secret",
64
		CommonEndpoint: defaultEndpoint,
65
	}
66
}
67
68
func getTestClient(t *testing.T) *DynamoDB {
69
	svc, err := New(getTestConfig())
70
	if err != nil {
71
		t.Errorf("error on create client; error=%s;", err.Error())
72
		t.FailNow()
73
	}
74
	return svc
75
}
76
77
func createTestTable(name string) error {
78
	svc, err := New(getTestConfig())
79
	if err != nil {
80
		return err
81
	}
82
83
	ctx := context.Background()
84
	ok, err := svc.ExistTable(ctx, name)
85
	switch {
86
	case err != nil:
87
		return err
88
	case ok:
89
		return nil
90
	}
91
92
	_, err = svc.CreateTable(ctx, CreateTableRequest{
93
		TableName: name,
94
		AttributeDefinitions: []AttributeDefinition{
95
			{AttributeName: "hashkey",
96
				AttributeType: ScalarAttributeTypeS},
97
		},
98
		KeySchema: []KeySchemaElement{
99
			{AttributeName: "hashkey",
100
				KeyType: KeyTypeHash},
101
		},
102
		ProvisionedThroughput: ProvisionedThroughput{
103
			ReadCapacityUnits:  5,
104
			WriteCapacityUnits: 5,
105
		},
106
	})
107
	return err
108
}
109