Commit 82f3446f authored by Dmitriy Zaporozhets's avatar Dmitriy Zaporozhets

Merge pull request #5174 from johannesbecker/service-pivotaltracker

PivotalTracker Source Commits Endpoint
parents daf2cf62 fa858882
# == Schema Information
#
# Table name: services
#
# id :integer not null, primary key
# type :string(255)
# title :string(255)
# token :string(255)
# project_id :integer not null
# created_at :datetime not null
# updated_at :datetime not null
# active :boolean default(FALSE), not null
#
class PivotaltrackerService < Service
include HTTParty
validates :token, presence: true, if: :activated?
def title
'PivotalTracker'
end
def description
'Project Management Software (Source Commits Endpoint)'
end
def to_param
'pivotaltracker'
end
def fields
[
{ type: 'text', name: 'token', placeholder: '' }
]
end
def execute(push)
url = 'https://www.pivotaltracker.com/services/v5/source_commits'
push[:commits].each do |commit|
message = {
'source_commit' => {
'commit_id' => commit[:id],
'author' => commit[:author][:name],
'url' => commit[:url],
'message' => commit[:message]
}
}
PivotaltrackerService.post(
url,
body: message.to_json,
headers: {
'Content-Type' => 'application/json',
'X-TrackerToken' => token
}
)
end
end
end
...@@ -46,6 +46,7 @@ class Project < ActiveRecord::Base ...@@ -46,6 +46,7 @@ class Project < ActiveRecord::Base
has_one :last_event, class_name: 'Event', order: 'events.created_at DESC', foreign_key: 'project_id' has_one :last_event, class_name: 'Event', order: 'events.created_at DESC', foreign_key: 'project_id'
has_one :gitlab_ci_service, dependent: :destroy has_one :gitlab_ci_service, dependent: :destroy
has_one :campfire_service, dependent: :destroy has_one :campfire_service, dependent: :destroy
has_one :pivotaltracker_service, dependent: :destroy
has_one :hipchat_service, dependent: :destroy has_one :hipchat_service, dependent: :destroy
has_one :forked_project_link, dependent: :destroy, foreign_key: "forked_to_project_id" has_one :forked_project_link, dependent: :destroy, foreign_key: "forked_to_project_id"
has_one :forked_from_project, through: :forked_project_link has_one :forked_from_project, through: :forked_project_link
...@@ -220,7 +221,7 @@ class Project < ActiveRecord::Base ...@@ -220,7 +221,7 @@ class Project < ActiveRecord::Base
end end
def available_services_names def available_services_names
%w(gitlab_ci campfire hipchat) %w(gitlab_ci campfire hipchat pivotaltracker)
end end
def gitlab_ci? def gitlab_ci?
......
...@@ -18,3 +18,9 @@ Feature: Project Services ...@@ -18,3 +18,9 @@ Feature: Project Services
And I click hipchat service link And I click hipchat service link
And I fill hipchat settings And I fill hipchat settings
Then I should see hipchat service settings saved Then I should see hipchat service settings saved
Scenario: Activate pivotaltracker service
When I visit project "Shop" services page
And I click pivotaltracker service link
And I fill pivotaltracker settings
Then I should see pivotaltracker service settings saved
...@@ -44,4 +44,18 @@ class ProjectServices < Spinach::FeatureSteps ...@@ -44,4 +44,18 @@ class ProjectServices < Spinach::FeatureSteps
find_field('Room').value.should == 'gitlab' find_field('Room').value.should == 'gitlab'
end end
And 'I click pivotaltracker service link' do
click_link 'PivotalTracker'
end
And 'I fill pivotaltracker settings' do
check 'Active'
fill_in 'Token', with: 'verySecret'
click_button 'Save'
end
Then 'I should see pivotaltracker service settings saved' do
find_field('Token').value.should == 'verySecret'
end
end end
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment