GitHub - elgohr/go-localstack: Go Wrapper for using localstack (original) (raw)

go-localstack

Test codecov Go Report Card PkgGoDev License

Go Wrapper for using localstack in go testing

Installation

Please make sure that you have Docker installed.

go get github.com/elgohr/go-localstack

Usage

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

func ExampleLocalstackSdkV2EndpointResolverV2(t *testing.T) { l, err := localstack.NewInstance() if err != nil { t.Fatalf("Could not connect to Docker %v", err) } if err := l.Start(); err != nil { t.Fatalf("Could not start localstack %v", err) } t.Cleanup(func() { if err := l.Stop(); err != nil { t.Fatalf("Could not stop localstack %v", err) } })

cfg, err := config.LoadDefaultConfig(ctx,
    config.WithRegion("us-east-1"),
    config.WithCredentialsProvider(credentials.NewStaticCredentialsProvider("dummy", "dummy", "dummy")),
)
if err != nil {
    t.Fatalf("Could not get config %v", err)
}
resolver := localstack.NewDynamoDbResolverV2(i)
client := dynamodb.NewFromConfig(cfg, dynamodb.WithEndpointResolverV2(resolver))

myTestWithV2Client(client)

}

With SDK V2 (using EndpointResolverV1)

func ExampleLocalstackSdkV2(t *testing.T) { l, err := localstack.NewInstance() if err != nil { t.Fatalf("Could not connect to Docker %v", err) } if err := l.Start(); err != nil { t.Fatalf("Could not start localstack %v", err) } t.Cleanup(func() { if err := l.Stop(); err != nil { t.Fatalf("Could not stop localstack %v", err) } })

cfg, err := config.LoadDefaultConfig(ctx,
    config.WithRegion("us-east-1"),
    config.WithEndpointResolverWithOptions(aws.EndpointResolverWithOptionsFunc(func(_, _ string, _ ...interface{}) (aws.Endpoint, error) {
        return aws.Endpoint{
            PartitionID:       "aws", 
            URL:               l.EndpointV2(localstack.SQS), 
            SigningRegion:     "us-east-1", 
            HostnameImmutable: true,
        }, nil
    })),
    config.WithCredentialsProvider(credentials.NewStaticCredentialsProvider("dummy", "dummy", "dummy")),
)
if err != nil {
    t.Fatalf("Could not get config %v", err)
}

myTestWithV2(cfg)

}

With SDK V1

func TestWithLocalStack(t *testing.T) { l, err := localstack.NewInstance() if err != nil { t.Fatalf("Could not connect to Docker %v", err) } if err := l.Start(); err != nil { t.Fatalf("Could not start localstack %v", err) } t.Cleanup(func() { if err := l.Stop(); err != nil { t.Fatalf("Could not stop localstack %v", err) } })

myTestWith(&aws.Config{
    Credentials: credentials.NewStaticCredentials("not", "empty", ""),
    DisableSSL:  aws.Bool(true),
    Region:      aws.String(endpoints.UsWest1RegionID),
    Endpoint:    aws.String(l.Endpoint(localstack.SQS)),
})

}