summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/models/project_services/slack_service.rb3
-rw-r--r--spec/models/slack_service_spec.rb20
2 files changed, 22 insertions, 1 deletions
diff --git a/app/models/project_services/slack_service.rb b/app/models/project_services/slack_service.rb
index 95f3ddcef45..837002ef3c8 100644
--- a/app/models/project_services/slack_service.rb
+++ b/app/models/project_services/slack_service.rb
@@ -40,7 +40,8 @@ class SlackService < Service
project_name: project_name
))
- credentials = webhook.match(/(\w*).slack.com.*services\/(.*)/)
+ credentials = webhook.match(/([\w-]*).slack.com.*services\/(.*)/)
+
if credentials.present?
subdomain = credentials[1]
token = credentials[2].split("token=").last
diff --git a/spec/models/slack_service_spec.rb b/spec/models/slack_service_spec.rb
index 95df38d9400..526165e397c 100644
--- a/spec/models/slack_service_spec.rb
+++ b/spec/models/slack_service_spec.rb
@@ -77,5 +77,25 @@ describe SlackService do
WebMock.should have_requested(:post, api_url).once
end
end
+
+ context 'with new webhook syntax with slack allowed team name' do
+ before do
+ @allowed_webhook = 'https://gitlab-hq-123.slack.com/services/hooks/incoming-webhook?token=cdIj4r4LfXUOySDUjp0tk3OI'
+ slack_service.stub(
+ project: project,
+ project_id: project.id,
+ service_hook: true,
+ webhook: @allowed_webhook
+ )
+
+ WebMock.stub_request(:post, @allowed_webhook)
+ end
+
+ it "should call Slack API" do
+ slack_service.execute(sample_data)
+
+ WebMock.should have_requested(:post, @allowed_webhook).once
+ end
+ end
end
end