diff --git a/pkg/handlers/launch.go b/pkg/handlers/launch.go index e49cce3..1c3669f 100644 --- a/pkg/handlers/launch.go +++ b/pkg/handlers/launch.go @@ -150,6 +150,10 @@ type launchHandler struct { // NewLaunchHandler returns an handler that launches a k6 load test. func NewLaunchHandler(client k6.Client, kubeClient kubernetes.Interface, slackClient slack.Client) (http.Handler, error) { + if slackClient == nil { + return nil, errors.New("unexpected state. Slack client is nil") + } + return &launchHandler{ client: client, kubeClient: kubeClient, diff --git a/pkg/slack/client.go b/pkg/slack/client.go index 9ddbab0..91960d2 100644 --- a/pkg/slack/client.go +++ b/pkg/slack/client.go @@ -12,8 +12,9 @@ type slackClientWrapper struct { func NewClient(token string) Client { if token == "" { - return nil + return &noopClient{} } + return &slackClientWrapper{ client: slack.New(token), } diff --git a/pkg/slack/noop.go b/pkg/slack/noop.go new file mode 100644 index 0000000..f840a3f --- /dev/null +++ b/pkg/slack/noop.go @@ -0,0 +1,28 @@ +package slack + +import ( + log "github.com/sirupsen/logrus" +) + +type noopClient struct{} + +func (c *noopClient) SendMessages(channels []string, text, context string) (map[string]string, error) { + if len(channels) > 0 { + log.Debugf("Slack disabled. Would've sent the following message: %s", text) + } + return nil, nil +} + +func (c *noopClient) UpdateMessages(slackMessages map[string]string, text, context string) error { + if len(slackMessages) > 0 { + log.Debugf("Slack disabled. Would've updated messages to: %s", text) + } + return nil +} + +func (c *noopClient) AddFileToThreads(slackMessages map[string]string, fileName, content string) error { + if len(slackMessages) > 0 { + log.Debugf("Slack disabled. Would've uploaded file named: %s", fileName) + } + return nil +}