diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index e8ac380..dd81c74 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -80,7 +80,7 @@ jobs: flags: unit - name: Create Table - working-directory: ./.github + working-directory: ./integrationtest run: | aws dynamodb create-table --cli-input-json file://table-def.json --endpoint-url ${{ env.DYNAMODB_ENDPOINT }} diff --git a/.gitignore b/.gitignore index c8bbff2..999716d 100644 --- a/.gitignore +++ b/.gitignore @@ -22,4 +22,6 @@ go.work .idea -**/.env \ No newline at end of file +**/.env + +integrationtest/dynamodb-local \ No newline at end of file diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..3fa0f31 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,32 @@ +## Contributing + +Thanks for your interest in contribute to dynmgrm! + + +### Getting Started + +1. [Fork `miyamo2/dynmgrm`](https://github.com/miyamo2/dynmgrm/fork) + +2. Clone your fork repository locally + +```sh +git clone https://github.com/{YOUR_USERNAME}/dynmgrm.git +``` +3. Check out to the working branch + +```sh +git checkout -b cool_branch_name +``` + +### Unit Test + +```sh +go test -v ./... +``` + +### Integration Test with DynamoDB Local + +```sh +cd ./integrationtest +make test +``` diff --git a/README.md b/README.md index e3cfd5a..aff1c82 100644 --- a/README.md +++ b/README.md @@ -180,6 +180,8 @@ Feel free to open a PR or an Issue. However, you must promise to follow our [Code of Conduct](https://github.com/miyamo2/dynmgrm/blob/main/CODE_OF_CONDUCT.md). +See [here](https://github.com/miyamo2/dynmgrm/blob/main/CONTRIBUTING.md) for more details on contributing. + ## License **dynmgrm** released under the [MIT License](https://github.com/miyamo2/dynmgrm/blob/main/LICENSE) diff --git a/integrationtest/Makefile b/integrationtest/Makefile new file mode 100644 index 0000000..d3f9251 --- /dev/null +++ b/integrationtest/Makefile @@ -0,0 +1,24 @@ +export +AWS_REGION=ap-northeast-1 +AWS_ACCESS_KEY_ID=dummy +AWS_SECRET_ACCESS_KEY=dummy +DYNAMODB_ENDPOINT=http://localhost:8000 + +.PHONY: up create-table test +up: + @env + docker compose up -d + +create-table:up + @env + # Somehow the yes command does not work... + # Therefore, the following tentative hacks are being used + aws dynamodb create-table --cli-input-json file://table-def.json --endpoint-url http://localhost:8000 | tee /dev/null + +test:create-table + @env + docker compose up -d + go mod tidy + go test -v ./... | tee /dev/null + go clean -testcache + docker compose stop \ No newline at end of file diff --git a/integrationtest/docker-compose.yaml b/integrationtest/docker-compose.yaml new file mode 100644 index 0000000..1ff732f --- /dev/null +++ b/integrationtest/docker-compose.yaml @@ -0,0 +1,10 @@ +services: + dynamodb-local: + command: "-jar DynamoDBLocal.jar -sharedDb -dbPath ./data" + image: "amazon/dynamodb-local:latest" + container_name: dynamodb-local + ports: + - "8000:8000" + volumes: + - "./dynamodb-local:/home/dynamodblocal/data" + working_dir: /home/dynamodblocal diff --git a/integrationtest/go.mod b/integrationtest/go.mod index 2f9aa58..f2b4081 100644 --- a/integrationtest/go.mod +++ b/integrationtest/go.mod @@ -14,16 +14,16 @@ require ( ) require ( - github.com/aws/aws-sdk-go-v2 v1.30.0 // indirect + github.com/aws/aws-sdk-go-v2 v1.30.1 // indirect github.com/aws/aws-sdk-go-v2/credentials v1.17.21 // indirect - github.com/aws/aws-sdk-go-v2/feature/dynamodb/attributevalue v1.14.5 // indirect - github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.12 // indirect - github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.12 // indirect - github.com/aws/aws-sdk-go-v2/service/dynamodb v1.33.2 // indirect - github.com/aws/aws-sdk-go-v2/service/dynamodbstreams v1.21.1 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.2 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/endpoint-discovery v1.9.13 // indirect - github.com/aws/smithy-go v1.20.2 // indirect + github.com/aws/aws-sdk-go-v2/feature/dynamodb/attributevalue v1.14.7 // indirect + github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.13 // indirect + github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.13 // indirect + github.com/aws/aws-sdk-go-v2/service/dynamodb v1.34.1 // indirect + github.com/aws/aws-sdk-go-v2/service/dynamodbstreams v1.22.1 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.3 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/endpoint-discovery v1.9.14 // indirect + github.com/aws/smithy-go v1.20.3 // indirect github.com/btnguyen2k/consu/g18 v0.1.0 // indirect github.com/btnguyen2k/consu/reddo v0.1.9 // indirect github.com/iancoleman/strcase v0.3.0 // indirect diff --git a/integrationtest/go.sum b/integrationtest/go.sum index 43c84fd..73c0b22 100644 --- a/integrationtest/go.sum +++ b/integrationtest/go.sum @@ -1,25 +1,25 @@ github.com/aws/aws-sdk-go v1.54.11 h1:Zxuv/R+IVS0B66yz4uezhxH9FN9/G2nbxejYqAMFjxk= github.com/aws/aws-sdk-go v1.54.11/go.mod h1:eRwEWoyTWFMVYVQzKMNHWP5/RV4xIUGMQfXQHfHkpNU= -github.com/aws/aws-sdk-go-v2 v1.30.0 h1:6qAwtzlfcTtcL8NHtbDQAqgM5s6NDipQTkPxyH/6kAA= -github.com/aws/aws-sdk-go-v2 v1.30.0/go.mod h1:ffIFB97e2yNsv4aTSGkqtHnppsIJzw7G7BReUZ3jCXM= +github.com/aws/aws-sdk-go-v2 v1.30.1 h1:4y/5Dvfrhd1MxRDD77SrfsDaj8kUkkljU7XE83NPV+o= +github.com/aws/aws-sdk-go-v2 v1.30.1/go.mod h1:nIQjQVp5sfpQcTc9mPSr1B0PaWK5ByX9MOoDadSN4lc= github.com/aws/aws-sdk-go-v2/credentials v1.17.21 h1:pjAqgzfgFhTv5grc7xPHtXCAaMapzmwA7aU+c/SZQGw= github.com/aws/aws-sdk-go-v2/credentials v1.17.21/go.mod h1:nhK6PtBlfHTUDVmBLr1dg+WHCOCK+1Fu/WQyVHPsgNQ= -github.com/aws/aws-sdk-go-v2/feature/dynamodb/attributevalue v1.14.5 h1:+xx6WubOOLmVYaI5y6jBqA3msbJS8IAS+QGR0PkDSII= -github.com/aws/aws-sdk-go-v2/feature/dynamodb/attributevalue v1.14.5/go.mod h1:XlkK4fB6KpBVTQ4G20m5LUiUYmASjFxoWa6Bs1/Wy3Q= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.12 h1:SJ04WXGTwnHlWIODtC5kJzKbeuHt+OUNOgKg7nfnUGw= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.12/go.mod h1:FkpvXhA92gb3GE9LD6Og0pHHycTxW7xGpnEh5E7Opwo= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.12 h1:hb5KgeYfObi5MHkSSZMEudnIvX30iB+E21evI4r6BnQ= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.12/go.mod h1:CroKe/eWJdyfy9Vx4rljP5wTUjNJfb+fPz1uMYUhEGM= -github.com/aws/aws-sdk-go-v2/service/dynamodb v1.33.2 h1:ZRxyyP9Tfkf5G9baYHvbd+/GvtKrzh3EBSgvcrkxVzY= -github.com/aws/aws-sdk-go-v2/service/dynamodb v1.33.2/go.mod h1:zU5eWYw3HNkPtcrFwBAdMv3+h3dFpmB0ng7z8wOuSPc= -github.com/aws/aws-sdk-go-v2/service/dynamodbstreams v1.21.1 h1:3NrodkeRcnK301QWIjCV4BibPEQjefanYpQ+0qWWsKQ= -github.com/aws/aws-sdk-go-v2/service/dynamodbstreams v1.21.1/go.mod h1:REsB292vC0/tIV3dUQniYqsXj4hwQwV7IZMl7fnbpHU= -github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.2 h1:Ji0DY1xUsUr3I8cHps0G+XM3WWU16lP6yG8qu1GAZAs= -github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.2/go.mod h1:5CsjAbs3NlGQyZNFACh+zztPDI7fU6eW9QsxjfnuBKg= -github.com/aws/aws-sdk-go-v2/service/internal/endpoint-discovery v1.9.13 h1:TiBHJdrItjSsvfMRMNEPvu4gFqor6aghaQ5mS18i77c= -github.com/aws/aws-sdk-go-v2/service/internal/endpoint-discovery v1.9.13/go.mod h1:XN5B38yJn1XZvhyCeTzU5Ypha6+7UzVGj2w+aN0zn3k= -github.com/aws/smithy-go v1.20.2 h1:tbp628ireGtzcHDDmLT/6ADHidqnwgF57XOXZe6tp4Q= -github.com/aws/smithy-go v1.20.2/go.mod h1:krry+ya/rV9RDcV/Q16kpu6ypI4K2czasz0NC3qS14E= +github.com/aws/aws-sdk-go-v2/feature/dynamodb/attributevalue v1.14.7 h1:pPhmvNKbgb9l5VHcPmMx9g+FHtRbY+ba2J6GefXQGEI= +github.com/aws/aws-sdk-go-v2/feature/dynamodb/attributevalue v1.14.7/go.mod h1:OZU7QRvIYXhKry99PttkDTQyN8yCo8RzYjhIKHdQXoo= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.13 h1:5SAoZ4jYpGH4721ZNoS1znQrhOfZinOhc4XuTXx/nVc= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.13/go.mod h1:+rdA6ZLpaSeM7tSg/B0IEDinCIBJGmW8rKDFkYpP04g= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.13 h1:WIijqeaAO7TYFLbhsZmi2rgLEAtWOC1LhxCAVTJlSKw= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.13/go.mod h1:i+kbfa76PQbWw/ULoWnp51EYVWH4ENln76fLQE3lXT8= +github.com/aws/aws-sdk-go-v2/service/dynamodb v1.34.1 h1:Szwz1vpZkvfhFMJ0X5uUECgHeUmPAxk1UGqAVs/pARw= +github.com/aws/aws-sdk-go-v2/service/dynamodb v1.34.1/go.mod h1:b4wouGyJlzkr2HAvPrDGgYNp1EtmlXOkzhEOvl0c0FQ= +github.com/aws/aws-sdk-go-v2/service/dynamodbstreams v1.22.1 h1:jfkCLx62YWL6bSOkT7aEDKNAX3OwWomlThCxQNBPvbY= +github.com/aws/aws-sdk-go-v2/service/dynamodbstreams v1.22.1/go.mod h1:dLPiMfhRZhblwOeKqdNde7K9jl/pMuIGCGAwC6vQOIo= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.3 h1:dT3MqvGhSoaIhRseqw2I0yH81l7wiR2vjs57O51EAm8= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.3/go.mod h1:GlAeCkHwugxdHaueRr4nhPuY+WW+gR8UjlcqzPr1SPI= +github.com/aws/aws-sdk-go-v2/service/internal/endpoint-discovery v1.9.14 h1:X1J0Kd17n1PeXeoArNXlvnKewCyMvhVQh7iNMy6oi3s= +github.com/aws/aws-sdk-go-v2/service/internal/endpoint-discovery v1.9.14/go.mod h1:VYMN7l7dxp6xtQRjqIau6d7QAbmPG+yJ75GtCy70f18= +github.com/aws/smithy-go v1.20.3 h1:ryHwveWzPV5BIof6fyDvor6V3iUL7nTfiTKXHiW05nE= +github.com/aws/smithy-go v1.20.3/go.mod h1:krry+ya/rV9RDcV/Q16kpu6ypI4K2czasz0NC3qS14E= github.com/btnguyen2k/consu/g18 v0.1.0 h1:IoS5w5QlOfkcrNOHJyICD6PgqLh+J5fIDqy3vRBVcVM= github.com/btnguyen2k/consu/g18 v0.1.0/go.mod h1:gTPcr87XdCLDISusRQyDey22/ZOw6bLh6EChxTLx6/c= github.com/btnguyen2k/consu/reddo v0.1.9 h1:NZyEzRcDXzksNMnvZVZyJmGN6ZQQmHg4hIPCPbfsCBE= diff --git a/.github/table-def.json b/integrationtest/table-def.json similarity index 100% rename from .github/table-def.json rename to integrationtest/table-def.json