Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
gitlab-ce
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Boxiang Sun
gitlab-ce
Commits
e6afbff4
Commit
e6afbff4
authored
Nov 23, 2013
by
Dmitriy Zaporozhets
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #5640 from carlosparamio/assembla_service
Integration with Assembla
parents
baa74b07
4db87f7c
Changes
5
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
118 additions
and
1 deletion
+118
-1
app/models/assembla_service.rb
app/models/assembla_service.rb
+45
-0
app/models/project.rb
app/models/project.rb
+2
-1
features/project/service.feature
features/project/service.feature
+6
-0
features/steps/project/project_services.rb
features/steps/project/project_services.rb
+15
-0
spec/models/assembla_service_spec.rb
spec/models/assembla_service_spec.rb
+50
-0
No files found.
app/models/assembla_service.rb
0 → 100644
View file @
e6afbff4
# == 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
# project_url :string(255)
# subdomain :string(255)
# room :string(255)
#
class
AssemblaService
<
Service
include
HTTParty
validates
:token
,
presence:
true
,
if: :activated?
def
title
'Assembla'
end
def
description
'Project Management Software (Source Commits Endpoint)'
end
def
to_param
'assembla'
end
def
fields
[
{
type:
'text'
,
name:
'token'
,
placeholder:
''
}
]
end
def
execute
(
push
)
url
=
"https://atlas.assembla.com/spaces/ouposp/github_tool?secret_key=
#{
token
}
"
AssemblaService
.
post
(
url
,
body:
{
payload:
push
}.
to_json
,
headers:
{
'Content-Type'
=>
'application/json'
})
end
end
app/models/project.rb
View file @
e6afbff4
...
@@ -50,6 +50,7 @@ class Project < ActiveRecord::Base
...
@@ -50,6 +50,7 @@ class Project < ActiveRecord::Base
has_one
:pivotaltracker_service
,
dependent: :destroy
has_one
:pivotaltracker_service
,
dependent: :destroy
has_one
:hipchat_service
,
dependent: :destroy
has_one
:hipchat_service
,
dependent: :destroy
has_one
:flowdock_service
,
dependent: :destroy
has_one
:flowdock_service
,
dependent: :destroy
has_one
:assembla_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
...
@@ -224,7 +225,7 @@ class Project < ActiveRecord::Base
...
@@ -224,7 +225,7 @@ class Project < ActiveRecord::Base
end
end
def
available_services_names
def
available_services_names
%w(gitlab_ci campfire hipchat pivotaltracker flowdock)
%w(gitlab_ci campfire hipchat pivotaltracker flowdock
assembla
)
end
end
def
gitlab_ci?
def
gitlab_ci?
...
...
features/project/service.feature
View file @
e6afbff4
...
@@ -30,3 +30,9 @@ Feature: Project Services
...
@@ -30,3 +30,9 @@ Feature: Project Services
And
I click Flowdock service link
And
I click Flowdock service link
And
I fill Flowdock settings
And
I fill Flowdock settings
Then
I should see Flowdock service settings saved
Then
I should see Flowdock service settings saved
Scenario
:
Activate Assembla service
When
I visit project
"Shop"
services page
And
I click Assembla service link
And
I fill Assembla settings
Then
I should see Assembla service settings saved
\ No newline at end of file
features/steps/project/project_services.rb
View file @
e6afbff4
...
@@ -12,6 +12,7 @@ class ProjectServices < Spinach::FeatureSteps
...
@@ -12,6 +12,7 @@ class ProjectServices < Spinach::FeatureSteps
page
.
should
have_content
'Campfire'
page
.
should
have_content
'Campfire'
page
.
should
have_content
'Hipchat'
page
.
should
have_content
'Hipchat'
page
.
should
have_content
'GitLab CI'
page
.
should
have_content
'GitLab CI'
page
.
should
have_content
'Assembla'
end
end
And
'I click gitlab-ci service link'
do
And
'I click gitlab-ci service link'
do
...
@@ -72,4 +73,18 @@ class ProjectServices < Spinach::FeatureSteps
...
@@ -72,4 +73,18 @@ class ProjectServices < Spinach::FeatureSteps
Then
'I should see Flowdock service settings saved'
do
Then
'I should see Flowdock service settings saved'
do
find_field
(
'Token'
).
value
.
should
==
'verySecret'
find_field
(
'Token'
).
value
.
should
==
'verySecret'
end
end
And
'I click Assembla service link'
do
click_link
'Assembla'
end
And
'I fill Assembla settings'
do
check
'Active'
fill_in
'Token'
,
with:
'verySecret'
click_button
'Save'
end
Then
'I should see Assembla service settings saved'
do
find_field
(
'Token'
).
value
.
should
==
'verySecret'
end
end
end
spec/models/assembla_service_spec.rb
0 → 100644
View file @
e6afbff4
# == 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
# project_url :string(255)
# subdomain :string(255)
# room :string(255)
#
require
'spec_helper'
describe
AssemblaService
do
describe
"Associations"
do
it
{
should
belong_to
:project
}
it
{
should
have_one
:service_hook
}
end
describe
"Execute"
do
let
(
:user
)
{
create
(
:user
)
}
let
(
:project
)
{
create
(
:project_with_code
)
}
before
do
@assembla_service
=
AssemblaService
.
new
@assembla_service
.
stub
(
project_id:
project
.
id
,
project:
project
,
service_hook:
true
,
token:
'verySecret'
)
@sample_data
=
GitPushService
.
new
.
sample_data
(
project
,
user
)
@api_url
=
'https://atlas.assembla.com/spaces/ouposp/github_tool?secret_key=verySecret'
WebMock
.
stub_request
(
:post
,
@api_url
)
end
it
"should call FlowDock API"
do
@assembla_service
.
execute
(
@sample_data
)
WebMock
.
should
have_requested
(
:post
,
@api_url
).
with
(
body:
/
#{
@sample_data
[
:before
]
}
.*
#{
@sample_data
[
:after
]
}
.*
#{
project
.
path
}
/
).
once
end
end
end
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment