Skip to content

Commit

Permalink
test: executeClean test
Browse files Browse the repository at this point in the history
  • Loading branch information
karl-cardenas-coding committed Nov 26, 2023
1 parent a80cf14 commit b0d4512
Show file tree
Hide file tree
Showing 4 changed files with 99 additions and 17 deletions.
26 changes: 16 additions & 10 deletions .github/workflows/pull_request.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,6 @@ on:
branches: [ main ]
env:
GITHUB_TOKEN: ${{ github.token }}
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
LINT_VERSION: "1.25.1"

permissions:
Expand All @@ -33,6 +31,9 @@ jobs:


- name: Generate AWS region file
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
run: |
aws ec2 describe-regions --all-regions --region us-east-1 --query "Regions[].RegionName" --output text >> cmd/aws-regions.txt
Expand All @@ -42,15 +43,25 @@ jobs:
args: -v

- name: Execute Go tests
run: go get && go test -v ./...
run: make test-coverage

- name: Upload coverage reports to Codecov
uses: codecov/codecov-action@v3
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}

- name: Test CLI
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
run: |
go test -coverprofile=go.txt -v ./...
go run main.go clean -r us-west-2
go run main.go version
- name: build & execute
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
run: |
echo "--------------------------------------------------"
go build -ldflags="-X 'github.com/karl-cardenas-coding/go-lambda-cleanup/cmd.VersionString=0.0.0'" -o=glc -v
Expand Down Expand Up @@ -79,9 +90,4 @@ jobs:
build-args: VERSION=${{steps.dependencies.outputs.VERSION}}
platforms: linux/amd64,linux/arm64
push: true
tags: ghcr.io/${{ github.repository }}:test

- uses: actions/upload-artifact@v1
with:
name: test-results
path: go.txt
tags: ghcr.io/${{ github.repository }}:test
5 changes: 0 additions & 5 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,11 +39,6 @@ jobs:
- name: Execute Go tests
run: make tests-coverage

- name: Upload coverage reports to Codecov
uses: codecov/codecov-action@v3
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}

- name: Test CLI
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
Expand Down
4 changes: 2 additions & 2 deletions cmd/clean.go
Original file line number Diff line number Diff line change
Expand Up @@ -138,7 +138,7 @@ var CleanCmd = &cobra.Command{
// Set the User-Agent for all AWS with the Lambda client
o.APIOptions = append(o.APIOptions, middleware.AddUserAgentKeyValue("go-lambda-cleanup", VersionString))
})
err = ExecuteClean(&config, initSvc)
err = ExecuteClean(ctx, &config, initSvc)
if err != nil {
return err
}
Expand All @@ -148,7 +148,7 @@ var CleanCmd = &cobra.Command{
}

// An action function that removes Lambda versions
func ExecuteClean(config *cliConfig, svc *lambda.Client) error {
func ExecuteClean(ctx context.Context, config *cliConfig, svc *lambda.Client) error {
startTime := time.Now()

var (
Expand Down
81 changes: 81 additions & 0 deletions cmd/clean_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -810,6 +810,14 @@ func TestGetAllLambdaVersionWithAlias(t *testing.T) {
t.Errorf("expected 2 versions to be returned but received %v", len(versions))
}

_, err = getAllLambdaVersion(ctx, svc, types.FunctionConfiguration{
FunctionName: aws.String("func22"),
FunctionArn: aws.String("arn:aws:lambda:us-east-1:000000000000:function:func22"),
}, GlobalCliConfig)
if err == nil {
t.Errorf("expected an error to be returned but received %v", err)
}

t.Cleanup(func() {
GlobalCliConfig = cliConfig{
RegionFlag: aws.String(""),
Expand All @@ -828,6 +836,79 @@ func TestGetAllLambdaVersionWithAlias(t *testing.T) {

}

func TestExecuteClean(t *testing.T) {
ctx := context.TODO()
networkName := "localstack-network-v2"

localstackContainer, err := localstack.RunContainer(ctx,
localstack.WithNetwork(networkName, "localstack"),
testcontainers.CustomizeRequest(testcontainers.GenericContainerRequest{
ContainerRequest: testcontainers.ContainerRequest{
Image: "localstack/localstack:latest",
Env: map[string]string{"SERVICES": "lambda"},
},
}),
)
if err != nil {
panic(err)
}

// Clean up the container
defer func() {
if err := localstackContainer.Terminate(ctx); err != nil {
panic(err)
}
}()

svc, err := getAWSCredentials(ctx, localstackContainer)
if err != nil {
panic(err)
}

GlobalCliConfig = cliConfig{
RegionFlag: aws.String(""),
CredentialsFile: aws.Bool(false),
ProfileFlag: aws.String(""),
DryRun: aws.Bool(true),
Verbose: aws.Bool(true),
LambdaListFile: aws.String(""),
MoreLambdaDetails: aws.Bool(true),
SizeIEC: aws.Bool(false),
SkipAliases: aws.Bool(false),
Retain: aws.Int8(0),
}

bf, err := getZipPackage("../tests/handler.zip")
if err != nil {
t.Logf("expected no error to be returned but received %v", err)
}

_, err = addFunctions(ctx, svc, bf)
if err != nil {
panic(err)
}

bf2, err := getZipPackage("../tests/handler2.zip")
if err != nil {
t.Logf("expected no error to be returned but received %v", err)
}

_, err = updateFunctions(ctx, svc, *bf2)
if err != nil {
t.Logf("expected no error to be returned but received %v", err)
}

_, err = publishAlias(ctx, svc, "func1", "DEMO", "2")
if err != nil {
t.Errorf("expected no error to be returned but received %v", err)
}

err = ExecuteClean(ctx, &GlobalCliConfig, svc)
if err != nil {
t.Errorf("expected no error to be returned but received %v", err)
}
}

func TestAWSEnteryMissingEnvRegion(t *testing.T) {

expectedErr := "Missing region flag and AWS_DEFAULT_REGION env variable. Please use -r and provide a valid AWS region"
Expand Down

0 comments on commit b0d4512

Please sign in to comment.