7b339e61e8
per changes with slack, they’re now using “static” web hook urls that describe the team & service with IDs that don’t change if the team or service name change. their recommendation is to use the raw webhook_url instead of building it out of components to allow more flexibility this should also prevent issues cropping up with mistakes in how the urls are parsed
57 lines
1.3 KiB
Ruby
57 lines
1.3 KiB
Ruby
# == Schema Information
|
|
#
|
|
# Table name: services
|
|
#
|
|
# id :integer not null, primary key
|
|
# type :string(255)
|
|
# title :string(255)
|
|
# project_id :integer not null
|
|
# created_at :datetime
|
|
# updated_at :datetime
|
|
# active :boolean default(FALSE), not null
|
|
# properties :text
|
|
#
|
|
|
|
require 'spec_helper'
|
|
|
|
describe SlackService do
|
|
describe "Associations" do
|
|
it { should belong_to :project }
|
|
it { should have_one :service_hook }
|
|
end
|
|
|
|
describe "Validations" do
|
|
context "active" do
|
|
before do
|
|
subject.active = true
|
|
end
|
|
|
|
it { should validate_presence_of :webhook }
|
|
end
|
|
end
|
|
|
|
describe "Execute" do
|
|
let(:slack) { SlackService.new }
|
|
let(:user) { create(:user) }
|
|
let(:project) { create(:project) }
|
|
let(:sample_data) { GitPushService.new.sample_data(project, user) }
|
|
let(:webhook_url) { 'https://hooks.slack.com/services/SVRWFV0VVAR97N/B02R25XN3/ZBqu7xMupaEEICInN685' }
|
|
|
|
before do
|
|
slack.stub(
|
|
project: project,
|
|
project_id: project.id,
|
|
service_hook: true,
|
|
webhook: webhook_url
|
|
)
|
|
|
|
WebMock.stub_request(:post, webhook_url)
|
|
end
|
|
|
|
it "should call Slack API" do
|
|
slack.execute(sample_data)
|
|
|
|
WebMock.should have_requested(:post, webhook_url).once
|
|
end
|
|
end
|
|
end
|