From ee817dd84ff802e8b9f018106c376f6e0fdc9d91 Mon Sep 17 00:00:00 2001 From: Jesse Date: Tue, 27 Jul 2021 09:56:58 +1200 Subject: [PATCH] Clean up CodePipeline Job Implementation (#382) * [BREAKING CHANGE] Clean up CodePipeline Job Implementation * Incorrectly used "CodePipelineEvent" * Fix original typo missed when moving to job * Maintain backwards compatibility while making the ambiguity more clear * go fmt * Fix up a merge issue and stray input --- events/codepipeline.go | 6 +++ events/codepipeline_job.go | 4 +- events/codepipeline_job_test.go | 38 +++++++++++++++++++ events/codepipeline_test.go | 2 +- ...event.json => codepipeline-job-event.json} | 0 5 files changed, 47 insertions(+), 3 deletions(-) create mode 100644 events/codepipeline.go create mode 100644 events/codepipeline_job_test.go rename events/testdata/{codepipline-event.json => codepipeline-job-event.json} (100%) diff --git a/events/codepipeline.go b/events/codepipeline.go new file mode 100644 index 00000000..2134cbb5 --- /dev/null +++ b/events/codepipeline.go @@ -0,0 +1,6 @@ +package events + +// CodePipelineJob has been incorrectly assigned as CodePipelineEvent +// - https://github.com/aws/aws-lambda-go/issues/244 +// This maintains backwards compatability until a v2 release +type CodePipelineEvent = CodePipelineJobEvent diff --git a/events/codepipeline_job.go b/events/codepipeline_job.go index 68f96344..dd3b8236 100644 --- a/events/codepipeline_job.go +++ b/events/codepipeline_job.go @@ -2,8 +2,8 @@ package events -// CodePipelineEvent contains data from an event sent from AWS Codepipeline -type CodePipelineEvent struct { +// CodePipelineJobEvent contains data from an event sent from AWS CodePipeline +type CodePipelineJobEvent struct { CodePipelineJob CodePipelineJob `json:"CodePipeline.job"` } diff --git a/events/codepipeline_job_test.go b/events/codepipeline_job_test.go new file mode 100644 index 00000000..6f1143eb --- /dev/null +++ b/events/codepipeline_job_test.go @@ -0,0 +1,38 @@ +// Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. +package events + +import ( + "encoding/json" + "io/ioutil" + "testing" + + "github.com/aws/aws-lambda-go/events/test" + "github.com/stretchr/testify/assert" +) + +func TestCodePipeLineJobEventMarshaling(t *testing.T) { + + // read json from file + inputJSON, err := ioutil.ReadFile("./testdata/codepipeline-job-event.json") + if err != nil { + t.Errorf("could not open test file. details: %v", err) + } + + // de-serialize into CodePipelineJobEvent + var inputEvent CodePipelineJobEvent + if err := json.Unmarshal(inputJSON, &inputEvent); err != nil { + t.Errorf("could not unmarshal event. details: %v", err) + } + + // serialize to json + outputJSON, err := json.Marshal(inputEvent) + if err != nil { + t.Errorf("could not marshal event. details: %v", err) + } + + assert.JSONEq(t, string(inputJSON), string(outputJSON)) +} + +func TestCodePipelineJobEventMarshalingMalformedJson(t *testing.T) { + test.TestMalformedJson(t, CodePipelineJobEvent{}) +} diff --git a/events/codepipeline_test.go b/events/codepipeline_test.go index c958d172..063ea0b3 100644 --- a/events/codepipeline_test.go +++ b/events/codepipeline_test.go @@ -13,7 +13,7 @@ import ( func TestCodePipeLineEventMarshaling(t *testing.T) { // read json from file - inputJSON, err := ioutil.ReadFile("./testdata/codepipline-event.json") + inputJSON, err := ioutil.ReadFile("./testdata/codepipeline-job-event.json") if err != nil { t.Errorf("could not open test file. details: %v", err) } diff --git a/events/testdata/codepipline-event.json b/events/testdata/codepipeline-job-event.json similarity index 100% rename from events/testdata/codepipline-event.json rename to events/testdata/codepipeline-job-event.json