Files
atlantis/server/events/webhooks/slack_test.go
2018-08-30 16:47:17 -06:00

69 lines
2.1 KiB
Go

// Copyright 2017 HootSuite Media Inc.
//
// Licensed under the Apache License, Version 2.0 (the License);
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
// http://www.apache.org/licenses/LICENSE-2.0
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an AS IS BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
// Modified hereafter by contributors to runatlantis/atlantis.
package webhooks_test
import (
"regexp"
"testing"
. "github.com/petergtz/pegomock"
"github.com/runatlantis/atlantis/server/events/webhooks"
"github.com/runatlantis/atlantis/server/events/webhooks/mocks"
"github.com/runatlantis/atlantis/server/logging"
. "github.com/runatlantis/atlantis/testing"
)
func TestSend_PostMessage(t *testing.T) {
t.Log("Sending a hook with a matching regex should call PostMessage")
RegisterMockTestingT(t)
client := mocks.NewMockSlackClient()
regex, err := regexp.Compile(".*")
Ok(t, err)
channel := "somechannel"
hook := webhooks.SlackWebhook{
Client: client,
WorkspaceRegex: regex,
Channel: channel,
}
result := webhooks.ApplyResult{
Workspace: "production",
}
t.Log("PostMessage should be called, doesn't matter if it errors or not")
_ = hook.Send(logging.NewNoopLogger(), result)
client.VerifyWasCalledOnce().PostMessage(channel, result)
}
func TestSend_NoopSuccess(t *testing.T) {
t.Log("Sending a hook with a non-matching regex should succeed")
RegisterMockTestingT(t)
client := mocks.NewMockSlackClient()
regex, err := regexp.Compile("weirdemv")
Ok(t, err)
channel := "somechannel"
hook := webhooks.SlackWebhook{
Client: client,
WorkspaceRegex: regex,
Channel: channel,
}
result := webhooks.ApplyResult{
Workspace: "production",
}
err = hook.Send(logging.NewNoopLogger(), result)
Ok(t, err)
client.VerifyWasCalled(Never()).PostMessage(channel, result)
}