1
0
mirror of https://github.com/SAP/jenkins-library.git synced 2025-02-11 13:53:53 +02:00
sap-jenkins-library/cmd/gcpPublishEvent_test.go

72 lines
1.5 KiB
Go
Raw Permalink Normal View History

feat(events): add step to emit events to GCP (#4901) * feat(gcp): add step to send events to GCP (#4896) * add gcp token handling * add initial step * publish events * add test cases * fix test case --------- Co-authored-by: Jordi van Liempt <35920075+jliempt@users.noreply.github.com> * feat(gcp): Generate and validate the GCP OIDC token (#4899) * test setup for generation of jwt token * oidc token generator * push new step files * formatted code * removed toolchain and jose * removed toolchain:go 1.22.2 --------- Co-authored-by: jliempt <> Co-authored-by: D071696 <sachin.baral.ramesh@sap.com> Co-authored-by: d071696 <153099976+d071696@users.noreply.github.com> * feat(events): add pipeline start and end event (#4900) * add gcp token handling * add initial step * publish events * add test cases * fix test case * move files * add possible values * handle start and end event * add sap events * dependencies --------- Co-authored-by: Jordi van Liempt <35920075+jliempt@users.noreply.github.com> * log successful event publish * remove dummy step * prevent step from failing * improve event creation * improve event creation * simplify eventing * remove detailed events * update parameter scope * update go.sum * fix test case * add missing method * refactor OIDC part * add oidc.go to vault pkg * mock OIDC token retrieval * mock GCP functions * update OIDC function name in Vault mocks * get event data from CPE * don't encode data payload in b64 * remove vault related changes * remove vault changes from step code * remove commented out code * documentation/steps/gcpPublishEvent.md * documentation/steps/gcpPublishEvent.md * remove hardcoded eventData * update roleID * go generate * add ordering key for pubsub event --------- Co-authored-by: Jordi van Liempt <35920075+jliempt@users.noreply.github.com> Co-authored-by: D071696 <sachin.baral.ramesh@sap.com> Co-authored-by: d071696 <153099976+d071696@users.noreply.github.com> Co-authored-by: jliempt <>
2024-05-06 09:28:28 +02:00
package cmd
import (
"github.com/SAP/jenkins-library/pkg/gcp"
feat(events): add step to emit events to GCP (#4901) * feat(gcp): add step to send events to GCP (#4896) * add gcp token handling * add initial step * publish events * add test cases * fix test case --------- Co-authored-by: Jordi van Liempt <35920075+jliempt@users.noreply.github.com> * feat(gcp): Generate and validate the GCP OIDC token (#4899) * test setup for generation of jwt token * oidc token generator * push new step files * formatted code * removed toolchain and jose * removed toolchain:go 1.22.2 --------- Co-authored-by: jliempt <> Co-authored-by: D071696 <sachin.baral.ramesh@sap.com> Co-authored-by: d071696 <153099976+d071696@users.noreply.github.com> * feat(events): add pipeline start and end event (#4900) * add gcp token handling * add initial step * publish events * add test cases * fix test case * move files * add possible values * handle start and end event * add sap events * dependencies --------- Co-authored-by: Jordi van Liempt <35920075+jliempt@users.noreply.github.com> * log successful event publish * remove dummy step * prevent step from failing * improve event creation * improve event creation * simplify eventing * remove detailed events * update parameter scope * update go.sum * fix test case * add missing method * refactor OIDC part * add oidc.go to vault pkg * mock OIDC token retrieval * mock GCP functions * update OIDC function name in Vault mocks * get event data from CPE * don't encode data payload in b64 * remove vault related changes * remove vault changes from step code * remove commented out code * documentation/steps/gcpPublishEvent.md * documentation/steps/gcpPublishEvent.md * remove hardcoded eventData * update roleID * go generate * add ordering key for pubsub event --------- Co-authored-by: Jordi van Liempt <35920075+jliempt@users.noreply.github.com> Co-authored-by: D071696 <sachin.baral.ramesh@sap.com> Co-authored-by: d071696 <153099976+d071696@users.noreply.github.com> Co-authored-by: jliempt <>
2024-05-06 09:28:28 +02:00
"testing"
"github.com/pkg/errors"
"github.com/stretchr/testify/assert"
)
type mockGcpPublishEventUtilsBundle struct {
config *gcpPublishEventOptions
}
func (g *mockGcpPublishEventUtilsBundle) GetConfig() *gcpPublishEventOptions {
return g.config
}
func (g *mockGcpPublishEventUtilsBundle) NewPubsubClient(_, _, _, _, _ string) gcp.PubsubClient {
return &mockPubsubClient{}
feat(events): add step to emit events to GCP (#4901) * feat(gcp): add step to send events to GCP (#4896) * add gcp token handling * add initial step * publish events * add test cases * fix test case --------- Co-authored-by: Jordi van Liempt <35920075+jliempt@users.noreply.github.com> * feat(gcp): Generate and validate the GCP OIDC token (#4899) * test setup for generation of jwt token * oidc token generator * push new step files * formatted code * removed toolchain and jose * removed toolchain:go 1.22.2 --------- Co-authored-by: jliempt <> Co-authored-by: D071696 <sachin.baral.ramesh@sap.com> Co-authored-by: d071696 <153099976+d071696@users.noreply.github.com> * feat(events): add pipeline start and end event (#4900) * add gcp token handling * add initial step * publish events * add test cases * fix test case * move files * add possible values * handle start and end event * add sap events * dependencies --------- Co-authored-by: Jordi van Liempt <35920075+jliempt@users.noreply.github.com> * log successful event publish * remove dummy step * prevent step from failing * improve event creation * improve event creation * simplify eventing * remove detailed events * update parameter scope * update go.sum * fix test case * add missing method * refactor OIDC part * add oidc.go to vault pkg * mock OIDC token retrieval * mock GCP functions * update OIDC function name in Vault mocks * get event data from CPE * don't encode data payload in b64 * remove vault related changes * remove vault changes from step code * remove commented out code * documentation/steps/gcpPublishEvent.md * documentation/steps/gcpPublishEvent.md * remove hardcoded eventData * update roleID * go generate * add ordering key for pubsub event --------- Co-authored-by: Jordi van Liempt <35920075+jliempt@users.noreply.github.com> Co-authored-by: D071696 <sachin.baral.ramesh@sap.com> Co-authored-by: d071696 <153099976+d071696@users.noreply.github.com> Co-authored-by: jliempt <>
2024-05-06 09:28:28 +02:00
}
type mockPubsubClient struct {
feat(events): add step to emit events to GCP (#4901) * feat(gcp): add step to send events to GCP (#4896) * add gcp token handling * add initial step * publish events * add test cases * fix test case --------- Co-authored-by: Jordi van Liempt <35920075+jliempt@users.noreply.github.com> * feat(gcp): Generate and validate the GCP OIDC token (#4899) * test setup for generation of jwt token * oidc token generator * push new step files * formatted code * removed toolchain and jose * removed toolchain:go 1.22.2 --------- Co-authored-by: jliempt <> Co-authored-by: D071696 <sachin.baral.ramesh@sap.com> Co-authored-by: d071696 <153099976+d071696@users.noreply.github.com> * feat(events): add pipeline start and end event (#4900) * add gcp token handling * add initial step * publish events * add test cases * fix test case * move files * add possible values * handle start and end event * add sap events * dependencies --------- Co-authored-by: Jordi van Liempt <35920075+jliempt@users.noreply.github.com> * log successful event publish * remove dummy step * prevent step from failing * improve event creation * improve event creation * simplify eventing * remove detailed events * update parameter scope * update go.sum * fix test case * add missing method * refactor OIDC part * add oidc.go to vault pkg * mock OIDC token retrieval * mock GCP functions * update OIDC function name in Vault mocks * get event data from CPE * don't encode data payload in b64 * remove vault related changes * remove vault changes from step code * remove commented out code * documentation/steps/gcpPublishEvent.md * documentation/steps/gcpPublishEvent.md * remove hardcoded eventData * update roleID * go generate * add ordering key for pubsub event --------- Co-authored-by: Jordi van Liempt <35920075+jliempt@users.noreply.github.com> Co-authored-by: D071696 <sachin.baral.ramesh@sap.com> Co-authored-by: d071696 <153099976+d071696@users.noreply.github.com> Co-authored-by: jliempt <>
2024-05-06 09:28:28 +02:00
}
func (p *mockPubsubClient) Publish(topic string, _ []byte) error {
feat(events): add step to emit events to GCP (#4901) * feat(gcp): add step to send events to GCP (#4896) * add gcp token handling * add initial step * publish events * add test cases * fix test case --------- Co-authored-by: Jordi van Liempt <35920075+jliempt@users.noreply.github.com> * feat(gcp): Generate and validate the GCP OIDC token (#4899) * test setup for generation of jwt token * oidc token generator * push new step files * formatted code * removed toolchain and jose * removed toolchain:go 1.22.2 --------- Co-authored-by: jliempt <> Co-authored-by: D071696 <sachin.baral.ramesh@sap.com> Co-authored-by: d071696 <153099976+d071696@users.noreply.github.com> * feat(events): add pipeline start and end event (#4900) * add gcp token handling * add initial step * publish events * add test cases * fix test case * move files * add possible values * handle start and end event * add sap events * dependencies --------- Co-authored-by: Jordi van Liempt <35920075+jliempt@users.noreply.github.com> * log successful event publish * remove dummy step * prevent step from failing * improve event creation * improve event creation * simplify eventing * remove detailed events * update parameter scope * update go.sum * fix test case * add missing method * refactor OIDC part * add oidc.go to vault pkg * mock OIDC token retrieval * mock GCP functions * update OIDC function name in Vault mocks * get event data from CPE * don't encode data payload in b64 * remove vault related changes * remove vault changes from step code * remove commented out code * documentation/steps/gcpPublishEvent.md * documentation/steps/gcpPublishEvent.md * remove hardcoded eventData * update roleID * go generate * add ordering key for pubsub event --------- Co-authored-by: Jordi van Liempt <35920075+jliempt@users.noreply.github.com> Co-authored-by: D071696 <sachin.baral.ramesh@sap.com> Co-authored-by: d071696 <153099976+d071696@users.noreply.github.com> Co-authored-by: jliempt <>
2024-05-06 09:28:28 +02:00
if topic == "goodTestCase" {
return nil
} else if topic == "badTestCase" {
return errors.New("failed to send request")
}
return nil
}
func TestRunGcpPublishEvent(t *testing.T) {
t.Parallel()
t.Run("happy path", func(t *testing.T) {
t.Parallel()
// init
mock := &mockGcpPublishEventUtilsBundle{
config: &gcpPublishEventOptions{
EventType: "PipelineRunStarted",
EventSource: "unittest",
Topic: "goodTestCase",
}}
// test
err := runGcpPublishEvent(mock)
// assert
assert.NoError(t, err)
})
t.Run("error path", func(t *testing.T) {
t.Parallel()
// init
mock := &mockGcpPublishEventUtilsBundle{
config: &gcpPublishEventOptions{
EventType: "PipelineRunStarted",
EventSource: "unittest",
Topic: "badTestCase",
}}
// test
err := runGcpPublishEvent(mock)
// assert
assert.EqualError(t, err, "failed to publish event: failed to send request")
})
}