diff options
author | Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com> | 2013-09-25 08:31:39 -0700 |
---|---|---|
committer | Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com> | 2013-09-25 08:31:39 -0700 |
commit | 82f3446fde4c6c0507e1752152b9e3be68ae4aa8 (patch) | |
tree | 733dde9b60aa80b0fd2524b208b3d618df96ce34 | |
parent | daf2cf62d7f6f718cb723ae61c4ef60e5d6a711f (diff) | |
parent | fa8588827e45946464298fb7e36f4dcd24f0c4fb (diff) | |
download | gitlab-ce-82f3446fde4c6c0507e1752152b9e3be68ae4aa8.tar.gz |
Merge pull request #5174 from johannesbecker/service-pivotaltracker
PivotalTracker Source Commits Endpoint
-rw-r--r-- | app/models/pivotaltracker_service.rb | 59 | ||||
-rw-r--r-- | app/models/project.rb | 3 | ||||
-rw-r--r-- | features/project/service.feature | 6 | ||||
-rw-r--r-- | features/steps/project/project_services.rb | 14 |
4 files changed, 81 insertions, 1 deletions
diff --git a/app/models/pivotaltracker_service.rb b/app/models/pivotaltracker_service.rb new file mode 100644 index 00000000000..f28e142da77 --- /dev/null +++ b/app/models/pivotaltracker_service.rb @@ -0,0 +1,59 @@ +# == 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 diff --git a/app/models/project.rb b/app/models/project.rb index f4d915179e8..63cd3505ec4 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -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 :gitlab_ci_service, dependent: :destroy has_one :campfire_service, dependent: :destroy + has_one :pivotaltracker_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_from_project, through: :forked_project_link @@ -220,7 +221,7 @@ class Project < ActiveRecord::Base end def available_services_names - %w(gitlab_ci campfire hipchat) + %w(gitlab_ci campfire hipchat pivotaltracker) end def gitlab_ci? diff --git a/features/project/service.feature b/features/project/service.feature index 6bb0c3e2c57..e685c385d1d 100644 --- a/features/project/service.feature +++ b/features/project/service.feature @@ -18,3 +18,9 @@ Feature: Project Services And I click hipchat service link And I fill hipchat settings 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 diff --git a/features/steps/project/project_services.rb b/features/steps/project/project_services.rb index 10feb8ea8be..a24100ff8c0 100644 --- a/features/steps/project/project_services.rb +++ b/features/steps/project/project_services.rb @@ -44,4 +44,18 @@ class ProjectServices < Spinach::FeatureSteps find_field('Room').value.should == 'gitlab' 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 |