summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2013-09-25 08:31:39 -0700
committerDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2013-09-25 08:31:39 -0700
commit82f3446fde4c6c0507e1752152b9e3be68ae4aa8 (patch)
tree733dde9b60aa80b0fd2524b208b3d618df96ce34
parentdaf2cf62d7f6f718cb723ae61c4ef60e5d6a711f (diff)
parentfa8588827e45946464298fb7e36f4dcd24f0c4fb (diff)
downloadgitlab-ce-82f3446fde4c6c0507e1752152b9e3be68ae4aa8.tar.gz
Merge pull request #5174 from johannesbecker/service-pivotaltracker
PivotalTracker Source Commits Endpoint
-rw-r--r--app/models/pivotaltracker_service.rb59
-rw-r--r--app/models/project.rb3
-rw-r--r--features/project/service.feature6
-rw-r--r--features/steps/project/project_services.rb14
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