From 258cd2adaea0174f0e01cd4bf1d7d14af12dbc9a Mon Sep 17 00:00:00 2001 From: William Albertus Dembo Date: Thu, 19 Sep 2019 10:51:36 +0700 Subject: [PATCH] [Dembo] Add integration test for slack notification plugin --- .../slack_notification_integration_test.go | 95 +++++++++++++++++++ 1 file changed, 95 insertions(+) create mode 100644 plugins/slack-notification-plugin/slack_notification_integration_test.go diff --git a/plugins/slack-notification-plugin/slack_notification_integration_test.go b/plugins/slack-notification-plugin/slack_notification_integration_test.go new file mode 100644 index 00000000..4660b366 --- /dev/null +++ b/plugins/slack-notification-plugin/slack_notification_integration_test.go @@ -0,0 +1,95 @@ +package main + +import ( + "github.com/go-resty/resty/v2" + "os" + "testing" + + "github.com/stretchr/testify/assert" + + "proctor/pkg/notification/event" + "proctor/plugins/slack-notification-plugin/slack" +) + +type integrationContext interface { + setUp(t *testing.T) + tearDown() + instance() *integrationTestContext +} + +type integrationTestContext struct { + slackNotification *slackNotification + event *event.EventMock +} + +func (context *integrationTestContext) setUp(t *testing.T) { + value, available := os.LookupEnv("ENABLE_PLUGIN_INTEGRATION_TEST") + if available != true || value != "true" { + t.SkipNow() + } + slackUrl, _ := os.LookupEnv("SLACK_PLUGIN_URL") + assert.NotEmpty(t, slackUrl) + + context.slackNotification = &slackNotification{} + context.slackNotification.slackClient = slack.NewSlackClient(resty.New()) + context.event = &event.EventMock{} +} + +func (context *integrationTestContext) tearDown() { +} + +func (context *integrationTestContext) instance() *integrationTestContext { + return context +} + +func newIntegrationContext() integrationContext { + return &integrationTestContext{} +} + +func TestSlackNotificationIntegration_OnNotifyExecution(t *testing.T) { + ctx := newIntegrationContext() + ctx.setUp(t) + defer ctx.tearDown() + + userData := event.UserData{ + Email: "slack_notification_integration_execution_event@example.com", + } + content := map[string]string{ + "ExecutionID": "7", + "JobName": "test-job", + "ImageTag": "test", + "Args": "args", + "Status": "CREATED", + } + evt := ctx.instance().event + evt.On("Type").Return(event.ExecutionEventType) + evt.On("User").Return(userData) + evt.On("Content").Return(content) + + err := ctx.instance().slackNotification.OnNotify(evt) + assert.NoError(t, err) +} + +func TestSlackNotificationIntegration_OnNotifyUnsupportedEvent(t *testing.T) { + ctx := newIntegrationContext() + ctx.setUp(t) + defer ctx.tearDown() + + userData := event.UserData{ + Email: "slack_notification_integration_unsupported_event@example.com", + } + content := map[string]string{ + "ExecutionID": "7", + "JobName": "test-job", + "ImageTag": "test", + "Args": "args", + "Status": "CREATED", + } + evt := ctx.instance().event + evt.On("Type").Return(event.Type("Unsupported event")) + evt.On("User").Return(userData) + evt.On("Content").Return(content) + + err := ctx.instance().slackNotification.OnNotify(evt) + assert.NoError(t, err) +}