1
0
mirror of https://github.com/SAP/jenkins-library.git synced 2025-02-05 13:25:19 +02:00
sap-jenkins-library/cmd/gcpPublishEvent_test.go
Christopher Fenner 0f83941765
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

72 lines
1.6 KiB
Go

package cmd
import (
"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) GetOIDCTokenByValidation(roleID string) (string, error) {
return "testOIDCtoken123", nil
}
func (g *mockGcpPublishEventUtilsBundle) GetFederatedToken(projectNumber, pool, provider, token string) (string, error) {
return "testFederatedToken123", nil
}
func (g *mockGcpPublishEventUtilsBundle) Publish(projectNumber string, topic string, token string, key string, data []byte) error {
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")
})
}