elgohr

elgohr /go-localstack

Go Wrapper for using localstack

83
17
GitHub
Public

Repository Statistics

Key metrics and engagement data

83
Stars
17
Forks
2
Open Issues
0
Releases
1.20
Engagement Rate
Default branch: main

Timeline

Repository has been active for N/A

Repository Created

Last Commit
Recently active

byLars Gohr([email protected])

README.md

go-localstack

Test codecov CodeQL Go Report Card PkgGoDev License

Go Wrapper for using localstack in go testing

Installation

Please make sure that you have Docker installed.

bash
1go get github.com/elgohr/go-localstack

Usage

With SDK V2 (using EndpointResolverV2). Please have a look at resolvers for a complete list of resolvers.

go
1func ExampleLocalstackSdkV2EndpointResolverV2(t *testing.T) {
2 l, err := localstack.NewInstance()
3 if err != nil {
4 t.Fatalf("Could not connect to Docker %v", err)
5 }
6 if err := l.Start(); err != nil {
7 t.Fatalf("Could not start localstack %v", err)
8 }
9 t.Cleanup(func() {
10 if err := l.Stop(); err != nil {
11 t.Fatalf("Could not stop localstack %v", err)
12 }
13 })
14
15 cfg, err := config.LoadDefaultConfig(ctx,
16 config.WithRegion("us-east-1"),
17 config.WithCredentialsProvider(credentials.NewStaticCredentialsProvider("dummy", "dummy", "dummy")),
18 )
19 if err != nil {
20 t.Fatalf("Could not get config %v", err)
21 }
22 resolver := localstack.NewDynamoDbResolverV2(i)
23 client := dynamodb.NewFromConfig(cfg, dynamodb.WithEndpointResolverV2(resolver))
24
25 myTestWithV2Client(client)
26}

With SDK V2 (using EndpointResolverV1)

go
1func ExampleLocalstackSdkV2(t *testing.T) {
2 l, err := localstack.NewInstance()
3 if err != nil {
4 t.Fatalf("Could not connect to Docker %v", err)
5 }
6 if err := l.Start(); err != nil {
7 t.Fatalf("Could not start localstack %v", err)
8 }
9 t.Cleanup(func() {
10 if err := l.Stop(); err != nil {
11 t.Fatalf("Could not stop localstack %v", err)
12 }
13 })
14
15 cfg, err := config.LoadDefaultConfig(ctx,
16 config.WithRegion("us-east-1"),
17 config.WithEndpointResolverWithOptions(aws.EndpointResolverWithOptionsFunc(func(_, _ string, _ ...interface{}) (aws.Endpoint, error) {
18 return aws.Endpoint{
19 PartitionID: "aws",
20 URL: l.EndpointV2(localstack.SQS),
21 SigningRegion: "us-east-1",
22 HostnameImmutable: true,
23 }, nil
24 })),
25 config.WithCredentialsProvider(credentials.NewStaticCredentialsProvider("dummy", "dummy", "dummy")),
26 )
27 if err != nil {
28 t.Fatalf("Could not get config %v", err)
29 }
30
31 myTestWithV2(cfg)
32}

With SDK V1

go
1func TestWithLocalStack(t *testing.T) {
2 l, err := localstack.NewInstance()
3 if err != nil {
4 t.Fatalf("Could not connect to Docker %v", err)
5 }
6 if err := l.Start(); err != nil {
7 t.Fatalf("Could not start localstack %v", err)
8 }
9 t.Cleanup(func() {
10 if err := l.Stop(); err != nil {
11 t.Fatalf("Could not stop localstack %v", err)
12 }
13 })
14
15 myTestWith(&aws.Config{
16 Credentials: credentials.NewStaticCredentials("not", "empty", ""),
17 DisableSSL: aws.Bool(true),
18 Region: aws.String(endpoints.UsWest1RegionID),
19 Endpoint: aws.String(l.Endpoint(localstack.SQS)),
20 })
21}