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
Tatuya Kamada
gitlab-ce
Commits
4c53cc0e
Commit
4c53cc0e
authored
Sep 14, 2015
by
Valery Sizov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
rubocop satisfy
parent
95037c9c
Changes
28
Hide whitespace changes
Inline
Side-by-side
Showing
28 changed files
with
190 additions
and
190 deletions
+190
-190
app/controllers/ci/admin/runners_controller.rb
app/controllers/ci/admin/runners_controller.rb
+1
-1
app/controllers/ci/builds_controller.rb
app/controllers/ci/builds_controller.rb
+7
-7
app/controllers/ci/charts_controller.rb
app/controllers/ci/charts_controller.rb
+4
-4
app/controllers/ci/commits_controller.rb
app/controllers/ci/commits_controller.rb
+6
-6
app/controllers/ci/events_controller.rb
app/controllers/ci/events_controller.rb
+3
-3
app/controllers/ci/lints_controller.rb
app/controllers/ci/lints_controller.rb
+1
-1
app/controllers/ci/projects_controller.rb
app/controllers/ci/projects_controller.rb
+7
-7
app/controllers/ci/runner_projects_controller.rb
app/controllers/ci/runner_projects_controller.rb
+3
-3
app/controllers/ci/runners_controller.rb
app/controllers/ci/runners_controller.rb
+5
-5
app/controllers/ci/services_controller.rb
app/controllers/ci/services_controller.rb
+5
-5
app/controllers/ci/triggers_controller.rb
app/controllers/ci/triggers_controller.rb
+4
-4
app/controllers/ci/variables_controller.rb
app/controllers/ci/variables_controller.rb
+4
-4
app/controllers/ci/web_hooks_controller.rb
app/controllers/ci/web_hooks_controller.rb
+4
-4
lib/ci/backup/database.rb
lib/ci/backup/database.rb
+18
-18
spec/controllers/ci/projects_controller_spec.rb
spec/controllers/ci/projects_controller_spec.rb
+9
-9
spec/factories/ci/commits.rb
spec/factories/ci/commits.rb
+2
-2
spec/lib/ci/gitlab_ci_yaml_processor_spec.rb
spec/lib/ci/gitlab_ci_yaml_processor_spec.rb
+20
-20
spec/models/ci/build_spec.rb
spec/models/ci/build_spec.rb
+13
-13
spec/models/ci/mail_service_spec.rb
spec/models/ci/mail_service_spec.rb
+8
-8
spec/models/ci/project_spec.rb
spec/models/ci/project_spec.rb
+8
-8
spec/requests/ci/api/builds_spec.rb
spec/requests/ci/api/builds_spec.rb
+10
-10
spec/requests/ci/api/commits_spec.rb
spec/requests/ci/api/commits_spec.rb
+4
-4
spec/requests/ci/api/forks_spec.rb
spec/requests/ci/api/forks_spec.rb
+6
-6
spec/requests/ci/api/projects_spec.rb
spec/requests/ci/api/projects_spec.rb
+8
-8
spec/requests/ci/api/runners_spec.rb
spec/requests/ci/api/runners_spec.rb
+6
-6
spec/requests/ci/api/triggers_spec.rb
spec/requests/ci/api/triggers_spec.rb
+4
-4
spec/services/ci/create_commit_service_spec.rb
spec/services/ci/create_commit_service_spec.rb
+6
-6
spec/support/stub_gitlab_calls.rb
spec/support/stub_gitlab_calls.rb
+14
-14
No files found.
app/controllers/ci/admin/runners_controller.rb
View file @
4c53cc0e
module
Ci
class
Admin::RunnersController
<
Ci
::
Admin
::
ApplicationController
before_
filter
:runner
,
except: :index
before_
action
:runner
,
except: :index
def
index
@runners
=
Ci
::
Runner
.
order
(
'id DESC'
)
...
...
app/controllers/ci/builds_controller.rb
View file @
4c53cc0e
module
Ci
class
BuildsController
<
Ci
::
ApplicationController
before_
filter
:authenticate_user!
,
except:
[
:status
,
:show
]
before_
filter
:authenticate_public_page!
,
only: :show
before_
filter
:project
before_
filter
:authorize_access_project!
,
except:
[
:status
,
:show
]
before_
filter
:authorize_manage_project!
,
except:
[
:status
,
:show
,
:retry
,
:cancel
]
before_
filter
:authorize_manage_builds!
,
only:
[
:retry
,
:cancel
]
before_
filter
:build
,
except:
[
:show
]
before_
action
:authenticate_user!
,
except:
[
:status
,
:show
]
before_
action
:authenticate_public_page!
,
only: :show
before_
action
:project
before_
action
:authorize_access_project!
,
except:
[
:status
,
:show
]
before_
action
:authorize_manage_project!
,
except:
[
:status
,
:show
,
:retry
,
:cancel
]
before_
action
:authorize_manage_builds!
,
only:
[
:retry
,
:cancel
]
before_
action
:build
,
except:
[
:show
]
layout
'ci/project'
def
show
...
...
app/controllers/ci/charts_controller.rb
View file @
4c53cc0e
module
Ci
class
ChartsController
<
Ci
::
ApplicationController
before_
filter
:authenticate_user!
before_
filter
:project
before_
filter
:authorize_access_project!
before_
filter
:authorize_manage_project!
before_
action
:authenticate_user!
before_
action
:project
before_
action
:authorize_access_project!
before_
action
:authorize_manage_project!
layout
'ci/project'
...
...
app/controllers/ci/commits_controller.rb
View file @
4c53cc0e
module
Ci
class
CommitsController
<
Ci
::
ApplicationController
before_
filter
:authenticate_user!
,
except:
[
:status
,
:show
]
before_
filter
:authenticate_public_page!
,
only: :show
before_
filter
:project
before_
filter
:authorize_access_project!
,
except:
[
:status
,
:show
,
:cancel
]
before_
filter
:authorize_manage_builds!
,
only:
[
:cancel
]
before_
filter
:commit
,
only: :show
before_
action
:authenticate_user!
,
except:
[
:status
,
:show
]
before_
action
:authenticate_public_page!
,
only: :show
before_
action
:project
before_
action
:authorize_access_project!
,
except:
[
:status
,
:show
,
:cancel
]
before_
action
:authorize_manage_builds!
,
only:
[
:cancel
]
before_
action
:commit
,
only: :show
layout
'ci/project'
def
show
...
...
app/controllers/ci/events_controller.rb
View file @
4c53cc0e
...
...
@@ -2,9 +2,9 @@ module Ci
class
EventsController
<
Ci
::
ApplicationController
EVENTS_PER_PAGE
=
50
before_
filter
:authenticate_user!
before_
filter
:project
before_
filter
:authorize_manage_project!
before_
action
:authenticate_user!
before_
action
:project
before_
action
:authorize_manage_project!
layout
'ci/project'
...
...
app/controllers/ci/lints_controller.rb
View file @
4c53cc0e
module
Ci
class
LintsController
<
Ci
::
ApplicationController
before_
filter
:authenticate_user!
before_
action
:authenticate_user!
def
show
end
...
...
app/controllers/ci/projects_controller.rb
View file @
4c53cc0e
...
...
@@ -2,13 +2,13 @@ module Ci
class
ProjectsController
<
Ci
::
ApplicationController
PROJECTS_BATCH
=
100
before_
filter
:authenticate_user!
,
except:
[
:build
,
:badge
,
:index
,
:show
]
before_
filter
:authenticate_public_page!
,
only: :show
before_
filter
:project
,
only:
[
:build
,
:integration
,
:show
,
:badge
,
:edit
,
:update
,
:destroy
,
:toggle_shared_runners
,
:dumped_yaml
]
before_
filter
:authorize_access_project!
,
except:
[
:build
,
:gitlab
,
:badge
,
:index
,
:show
,
:new
,
:create
]
before_
filter
:authorize_manage_project!
,
only:
[
:edit
,
:integration
,
:update
,
:destroy
,
:toggle_shared_runners
,
:dumped_yaml
]
before_
filter
:authenticate_token!
,
only:
[
:build
]
before_
filter
:no_cache
,
only:
[
:badge
]
before_
action
:authenticate_user!
,
except:
[
:build
,
:badge
,
:index
,
:show
]
before_
action
:authenticate_public_page!
,
only: :show
before_
action
:project
,
only:
[
:build
,
:integration
,
:show
,
:badge
,
:edit
,
:update
,
:destroy
,
:toggle_shared_runners
,
:dumped_yaml
]
before_
action
:authorize_access_project!
,
except:
[
:build
,
:gitlab
,
:badge
,
:index
,
:show
,
:new
,
:create
]
before_
action
:authorize_manage_project!
,
only:
[
:edit
,
:integration
,
:update
,
:destroy
,
:toggle_shared_runners
,
:dumped_yaml
]
before_
action
:authenticate_token!
,
only:
[
:build
]
before_
action
:no_cache
,
only:
[
:badge
]
protect_from_forgery
except: :build
layout
'ci/project'
,
except:
[
:index
,
:gitlab
]
...
...
app/controllers/ci/runner_projects_controller.rb
View file @
4c53cc0e
module
Ci
class
RunnerProjectsController
<
Ci
::
ApplicationController
before_
filter
:authenticate_user!
before_
filter
:project
before_
filter
:authorize_manage_project!
before_
action
:authenticate_user!
before_
action
:project
before_
action
:authorize_manage_project!
layout
'ci/project'
...
...
app/controllers/ci/runners_controller.rb
View file @
4c53cc0e
module
Ci
class
RunnersController
<
Ci
::
ApplicationController
before_
filter
:authenticate_user!
before_
filter
:project
before_
filter
:set_runner
,
only:
[
:edit
,
:update
,
:destroy
,
:pause
,
:resume
,
:show
]
before_
filter
:authorize_access_project!
before_
filter
:authorize_manage_project!
before_
action
:authenticate_user!
before_
action
:project
before_
action
:set_runner
,
only:
[
:edit
,
:update
,
:destroy
,
:pause
,
:resume
,
:show
]
before_
action
:authorize_access_project!
before_
action
:authorize_manage_project!
layout
'ci/project'
...
...
app/controllers/ci/services_controller.rb
View file @
4c53cc0e
module
Ci
class
ServicesController
<
Ci
::
ApplicationController
before_
filter
:authenticate_user!
before_
filter
:project
before_
filter
:authorize_access_project!
before_
filter
:authorize_manage_project!
before_
filter
:service
,
only:
[
:edit
,
:update
,
:test
]
before_
action
:authenticate_user!
before_
action
:project
before_
action
:authorize_access_project!
before_
action
:authorize_manage_project!
before_
action
:service
,
only:
[
:edit
,
:update
,
:test
]
respond_to
:html
...
...
app/controllers/ci/triggers_controller.rb
View file @
4c53cc0e
module
Ci
class
TriggersController
<
Ci
::
ApplicationController
before_
filter
:authenticate_user!
before_
filter
:project
before_
filter
:authorize_access_project!
before_
filter
:authorize_manage_project!
before_
action
:authenticate_user!
before_
action
:project
before_
action
:authorize_access_project!
before_
action
:authorize_manage_project!
layout
'ci/project'
...
...
app/controllers/ci/variables_controller.rb
View file @
4c53cc0e
module
Ci
class
VariablesController
<
Ci
::
ApplicationController
before_
filter
:authenticate_user!
before_
filter
:project
before_
filter
:authorize_access_project!
before_
filter
:authorize_manage_project!
before_
action
:authenticate_user!
before_
action
:project
before_
action
:authorize_access_project!
before_
action
:authorize_manage_project!
layout
'ci/project'
...
...
app/controllers/ci/web_hooks_controller.rb
View file @
4c53cc0e
module
Ci
class
WebHooksController
<
Ci
::
ApplicationController
before_
filter
:authenticate_user!
before_
filter
:project
before_
filter
:authorize_access_project!
before_
filter
:authorize_manage_project!
before_
action
:authenticate_user!
before_
action
:project
before_
action
:authorize_access_project!
before_
action
:authorize_manage_project!
layout
'ci/project'
...
...
lib/ci/backup/database.rb
View file @
4c53cc0e
...
...
@@ -13,13 +13,13 @@ module Ci
def
dump
success
=
case
config
[
"adapter"
]
when
/^mysql/
then
$progress
.
print
"Dumping MySQL database
#{
config
[
'database'
]
}
... "
system
(
'mysqldump'
,
*
mysql_args
,
config
[
'database'
],
out:
db_file_name
)
when
"postgresql"
then
$progress
.
print
"Dumping PostgreSQL database
#{
config
[
'database'
]
}
... "
pg_env
system
(
'pg_dump'
,
config
[
'database'
],
out:
db_file_name
)
when
/^mysql/
then
$progress
.
print
"Dumping MySQL database
#{
config
[
'database'
]
}
... "
system
(
'mysqldump'
,
*
mysql_args
,
config
[
'database'
],
out:
db_file_name
)
when
"postgresql"
then
$progress
.
print
"Dumping PostgreSQL database
#{
config
[
'database'
]
}
... "
pg_env
system
(
'pg_dump'
,
config
[
'database'
],
out:
db_file_name
)
end
report_success
(
success
)
abort
'Backup failed'
unless
success
...
...
@@ -27,17 +27,17 @@ module Ci
def
restore
success
=
case
config
[
"adapter"
]
when
/^mysql/
then
$progress
.
print
"Restoring MySQL database
#{
config
[
'database'
]
}
... "
system
(
'mysql'
,
*
mysql_args
,
config
[
'database'
],
in:
db_file_name
)
when
"postgresql"
then
$progress
.
print
"Restoring PostgreSQL database
#{
config
[
'database'
]
}
... "
# Drop all tables because PostgreSQL DB dumps do not contain DROP TABLE
# statements like MySQL.
drop_all_tables
drop_all_postgres_sequences
pg_env
system
(
'psql'
,
config
[
'database'
],
'-f'
,
db_file_name
)
when
/^mysql/
then
$progress
.
print
"Restoring MySQL database
#{
config
[
'database'
]
}
... "
system
(
'mysql'
,
*
mysql_args
,
config
[
'database'
],
in:
db_file_name
)
when
"postgresql"
then
$progress
.
print
"Restoring PostgreSQL database
#{
config
[
'database'
]
}
... "
# Drop all tables because PostgreSQL DB dumps do not contain DROP TABLE
# statements like MySQL.
drop_all_tables
drop_all_postgres_sequences
pg_env
system
(
'psql'
,
config
[
'database'
],
'-f'
,
db_file_name
)
end
report_success
(
success
)
abort
'Restore failed'
unless
success
...
...
spec/controllers/ci/projects_controller_spec.rb
View file @
4c53cc0e
...
...
@@ -8,12 +8,12 @@ describe Ci::ProjectsController do
describe
"POST #build"
do
it
'should respond 200 if params is ok'
do
post
:build
,
id:
@project
.
id
,
ref:
'master'
,
before:
'2aa371379db71ac89ae20843fcff3b3477cf1a1d'
,
after:
'1c8a9df454ef68c22c2a33cca8232bb50849e5c5'
,
token:
@project
.
token
,
ref:
'master'
,
before:
'2aa371379db71ac89ae20843fcff3b3477cf1a1d'
,
after:
'1c8a9df454ef68c22c2a33cca8232bb50849e5c5'
,
token:
@project
.
token
,
ci_yaml_file:
gitlab_ci_yaml
,
commits:
[
{
message:
"Message"
}
]
commits:
[
{
message:
"Message"
}
]
expect
(
response
).
to
be_success
...
...
@@ -22,10 +22,10 @@ describe Ci::ProjectsController do
it
'should respond 400 if push about removed branch'
do
post
:build
,
id:
@project
.
id
,
ref:
'master'
,
before:
'2aa371379db71ac89ae20843fcff3b3477cf1a1d'
,
after:
'0000000000000000000000000000000000000000'
,
token:
@project
.
token
,
ref:
'master'
,
before:
'2aa371379db71ac89ae20843fcff3b3477cf1a1d'
,
after:
'0000000000000000000000000000000000000000'
,
token:
@project
.
token
,
ci_yaml_file:
gitlab_ci_yaml
expect
(
response
).
not_to
be_success
...
...
spec/factories/ci/commits.rb
View file @
4c53cc0e
...
...
@@ -60,14 +60,14 @@ FactoryGirl.define do
factory
:ci_commit_with_one_job
do
after
(
:create
)
do
|
commit
,
evaluator
|
commit
.
push_data
[
:ci_yaml_file
]
=
YAML
.
dump
({
rspec:
{
script:
"ls"
}
})
commit
.
push_data
[
:ci_yaml_file
]
=
YAML
.
dump
({
rspec:
{
script:
"ls"
}
})
commit
.
save
end
end
factory
:ci_commit_with_two_jobs
do
after
(
:create
)
do
|
commit
,
evaluator
|
commit
.
push_data
[
:ci_yaml_file
]
=
YAML
.
dump
({
rspec:
{
script:
"ls"
},
spinach:
{
script:
"ls"
}
})
commit
.
push_data
[
:ci_yaml_file
]
=
YAML
.
dump
({
rspec:
{
script:
"ls"
},
spinach:
{
script:
"ls"
}
})
commit
.
save
end
end
...
...
spec/lib/ci/gitlab_ci_yaml_processor_spec.rb
View file @
4c53cc0e
...
...
@@ -131,7 +131,7 @@ describe Ci::GitlabCiYamlProcessor do
image:
"ruby:2.1"
,
services:
[
"mysql"
],
before_script:
[
"pwd"
],
rspec:
{
image:
"ruby:2.5"
,
services:
[
"postgresql"
],
script:
"rspec"
}
rspec:
{
image:
"ruby:2.5"
,
services:
[
"postgresql"
],
script:
"rspec"
}
})
config_processor
=
GitlabCiYamlProcessor
.
new
(
config
)
...
...
@@ -176,133 +176,133 @@ describe Ci::GitlabCiYamlProcessor do
end
it
"returns errors if tags parameter is invalid"
do
config
=
YAML
.
dump
({
rspec:
{
script:
"test"
,
tags:
"mysql"
}
})
config
=
YAML
.
dump
({
rspec:
{
script:
"test"
,
tags:
"mysql"
}
})
expect
do
GitlabCiYamlProcessor
.
new
(
config
)
end
.
to
raise_error
(
GitlabCiYamlProcessor
::
ValidationError
,
"rspec job: tags parameter should be an array of strings"
)
end
it
"returns errors if before_script parameter is invalid"
do
config
=
YAML
.
dump
({
before_script:
"bundle update"
,
rspec:
{
script:
"test"
}
})
config
=
YAML
.
dump
({
before_script:
"bundle update"
,
rspec:
{
script:
"test"
}
})
expect
do
GitlabCiYamlProcessor
.
new
(
config
)
end
.
to
raise_error
(
GitlabCiYamlProcessor
::
ValidationError
,
"before_script should be an array of strings"
)
end
it
"returns errors if image parameter is invalid"
do
config
=
YAML
.
dump
({
image:
[
"test"
],
rspec:
{
script:
"test"
}
})
config
=
YAML
.
dump
({
image:
[
"test"
],
rspec:
{
script:
"test"
}
})
expect
do
GitlabCiYamlProcessor
.
new
(
config
)
end
.
to
raise_error
(
GitlabCiYamlProcessor
::
ValidationError
,
"image should be a string"
)
end
it
"returns errors if job image parameter is invalid"
do
config
=
YAML
.
dump
({
rspec:
{
script:
"test"
,
image:
[
"test"
]}
})
config
=
YAML
.
dump
({
rspec:
{
script:
"test"
,
image:
[
"test"
]
}
})
expect
do
GitlabCiYamlProcessor
.
new
(
config
)
end
.
to
raise_error
(
GitlabCiYamlProcessor
::
ValidationError
,
"rspec job: image should be a string"
)
end
it
"returns errors if services parameter is not an array"
do
config
=
YAML
.
dump
({
services:
"test"
,
rspec:
{
script:
"test"
}
})
config
=
YAML
.
dump
({
services:
"test"
,
rspec:
{
script:
"test"
}
})
expect
do
GitlabCiYamlProcessor
.
new
(
config
)
end
.
to
raise_error
(
GitlabCiYamlProcessor
::
ValidationError
,
"services should be an array of strings"
)
end
it
"returns errors if services parameter is not an array of strings"
do
config
=
YAML
.
dump
({
services:
[
10
,
"test"
],
rspec:
{
script:
"test"
}
})
config
=
YAML
.
dump
({
services:
[
10
,
"test"
],
rspec:
{
script:
"test"
}
})
expect
do
GitlabCiYamlProcessor
.
new
(
config
)
end
.
to
raise_error
(
GitlabCiYamlProcessor
::
ValidationError
,
"services should be an array of strings"
)
end
it
"returns errors if job services parameter is not an array"
do
config
=
YAML
.
dump
({
rspec:
{
script:
"test"
,
services:
"test"
}
})
config
=
YAML
.
dump
({
rspec:
{
script:
"test"
,
services:
"test"
}
})
expect
do
GitlabCiYamlProcessor
.
new
(
config
)
end
.
to
raise_error
(
GitlabCiYamlProcessor
::
ValidationError
,
"rspec job: services should be an array of strings"
)
end
it
"returns errors if job services parameter is not an array of strings"
do
config
=
YAML
.
dump
({
rspec:
{
script:
"test"
,
services:
[
10
,
"test"
]}
})
config
=
YAML
.
dump
({
rspec:
{
script:
"test"
,
services:
[
10
,
"test"
]
}
})
expect
do
GitlabCiYamlProcessor
.
new
(
config
)
end
.
to
raise_error
(
GitlabCiYamlProcessor
::
ValidationError
,
"rspec job: services should be an array of strings"
)
end
it
"returns errors if there are unknown parameters"
do
config
=
YAML
.
dump
({
extra:
"bundle update"
})
config
=
YAML
.
dump
({
extra:
"bundle update"
})
expect
do
GitlabCiYamlProcessor
.
new
(
config
)
end
.
to
raise_error
(
GitlabCiYamlProcessor
::
ValidationError
,
"Unknown parameter: extra"
)
end
it
"returns errors if there are unknown parameters that are hashes, but doesn't have a script"
do
config
=
YAML
.
dump
({
extra:
{
services:
"test"
}
})
config
=
YAML
.
dump
({
extra:
{
services:
"test"
}
})
expect
do
GitlabCiYamlProcessor
.
new
(
config
)
end
.
to
raise_error
(
GitlabCiYamlProcessor
::
ValidationError
,
"Unknown parameter: extra"
)
end
it
"returns errors if there is no any jobs defined"
do
config
=
YAML
.
dump
({
before_script:
[
"bundle update"
]
})
config
=
YAML
.
dump
({
before_script:
[
"bundle update"
]
})
expect
do
GitlabCiYamlProcessor
.
new
(
config
)
end
.
to
raise_error
(
GitlabCiYamlProcessor
::
ValidationError
,
"Please define at least one job"
)
end
it
"returns errors if job allow_failure parameter is not an boolean"
do
config
=
YAML
.
dump
({
rspec:
{
script:
"test"
,
allow_failure:
"string"
}
})
config
=
YAML
.
dump
({
rspec:
{
script:
"test"
,
allow_failure:
"string"
}
})
expect
do
GitlabCiYamlProcessor
.
new
(
config
)
end
.
to
raise_error
(
GitlabCiYamlProcessor
::
ValidationError
,
"rspec job: allow_failure parameter should be an boolean"
)
end
it
"returns errors if job stage is not a string"
do
config
=
YAML
.
dump
({
rspec:
{
script:
"test"
,
type:
1
,
allow_failure:
"string"
}
})
config
=
YAML
.
dump
({
rspec:
{
script:
"test"
,
type:
1
,
allow_failure:
"string"
}
})
expect
do
GitlabCiYamlProcessor
.
new
(
config
)
end
.
to
raise_error
(
GitlabCiYamlProcessor
::
ValidationError
,
"rspec job: stage parameter should be build, test, deploy"
)
end
it
"returns errors if job stage is not a pre-defined stage"
do
config
=
YAML
.
dump
({
rspec:
{
script:
"test"
,
type:
"acceptance"
,
allow_failure:
"string"
}
})
config
=
YAML
.
dump
({
rspec:
{
script:
"test"
,
type:
"acceptance"
,
allow_failure:
"string"
}
})
expect
do
GitlabCiYamlProcessor
.
new
(
config
)
end
.
to
raise_error
(
GitlabCiYamlProcessor
::
ValidationError
,
"rspec job: stage parameter should be build, test, deploy"
)
end
it
"returns errors if job stage is not a defined stage"
do
config
=
YAML
.
dump
({
types:
[
"build"
,
"test"
],
rspec:
{
script:
"test"
,
type:
"acceptance"
,
allow_failure:
"string"
}
})
config
=
YAML
.
dump
({
types:
[
"build"
,
"test"
],
rspec:
{
script:
"test"
,
type:
"acceptance"
,
allow_failure:
"string"
}
})
expect
do
GitlabCiYamlProcessor
.
new
(
config
)
end
.
to
raise_error
(
GitlabCiYamlProcessor
::
ValidationError
,
"rspec job: stage parameter should be build, test"
)
end
it
"returns errors if stages is not an array"
do
config
=
YAML
.
dump
({
types:
"test"
,
rspec:
{
script:
"test"
}
})
config
=
YAML
.
dump
({
types:
"test"
,
rspec:
{
script:
"test"
}
})
expect
do
GitlabCiYamlProcessor
.
new
(
config
)
end
.
to
raise_error
(
GitlabCiYamlProcessor
::
ValidationError
,
"stages should be an array of strings"
)
end
it
"returns errors if stages is not an array of strings"
do
config
=
YAML
.
dump
({
types:
[
true
,
"test"
],
rspec:
{
script:
"test"
}
})
config
=
YAML
.
dump
({
types:
[
true
,
"test"
],
rspec:
{
script:
"test"
}
})
expect
do
GitlabCiYamlProcessor
.
new
(
config
)
end
.
to
raise_error
(
GitlabCiYamlProcessor
::
ValidationError
,
"stages should be an array of strings"
)
end
it
"returns errors if variables is not a map"
do
config
=
YAML
.
dump
({
variables:
"test"
,
rspec:
{
script:
"test"
}
})
config
=
YAML
.
dump
({
variables:
"test"
,
rspec:
{
script:
"test"
}
})
expect
do
GitlabCiYamlProcessor
.
new
(
config
)
end
.
to
raise_error
(
GitlabCiYamlProcessor
::
ValidationError
,
"variables should be a map of key-valued strings"
)
end
it
"returns errors if variables is not a map of key-valued strings"
do
config
=
YAML
.
dump
({
variables:
{
test:
false
},
rspec:
{
script:
"test"
}
})
config
=
YAML
.
dump
({
variables:
{
test:
false
},
rspec:
{
script:
"test"
}
})
expect
do
GitlabCiYamlProcessor
.
new
(
config
)
end
.
to
raise_error
(
GitlabCiYamlProcessor
::
ValidationError
,
"variables should be a map of key-valued strings"
)
...
...
spec/models/ci/build_spec.rb
View file @
4c53cc0e
...
...
@@ -211,14 +211,14 @@ describe Ci::Build do
end
describe
:options
do
let
(
:options
)
{
let
(
:options
)
do
{
:image
=>
"ruby:2.1"
,
:services
=>
[
image:
"ruby:2.1"
,
services:
[
"postgres"
]
}
}
end
subject
{
build
.
options
}
it
{
is_expected
.
to
eq
(
options
)
}
...
...
@@ -308,20 +308,20 @@ describe Ci::Build do
context
'returns variables'
do
subject
{
build
.
variables
}
let
(
:variables
)
{
let
(
:variables
)
do
[
{
key: :DB_NAME
,
value:
'postgres'
,
public:
true
}
{
key: :DB_NAME
,
value:
'postgres'
,
public:
true
}
]
}
end
it
{
is_expected
.
to
eq
(
variables
)
}
context
'and secure variables'
do
let
(
:secure_variables
)
{
let
(
:secure_variables
)
do
[
{
key:
'SECRET_KEY'
,
value:
'secret_value'
,
public:
false
}
{
key:
'SECRET_KEY'
,
value:
'secret_value'
,
public:
false
}
]
}
end
before
do
build
.
project
.
variables
<<
Ci
::
Variable
.
new
(
key:
'SECRET_KEY'
,
value:
'secret_value'
)
...
...
@@ -332,11 +332,11 @@ describe Ci::Build do
context
'and trigger variables'
do
let
(
:trigger
)
{
FactoryGirl
.
create
:ci_trigger
,
project:
project
}
let
(
:trigger_request
)
{
FactoryGirl
.
create
:ci_trigger_request_with_variables
,
commit:
commit
,
trigger:
trigger
}
let
(
:trigger_variables
)
{
let
(
:trigger_variables
)
do
[
{
key: :TRIGGER_KEY
,
value:
'TRIGGER_VALUE'
,
public:
false
}
{
key: :TRIGGER_KEY
,
value:
'TRIGGER_VALUE'
,
public:
false
}
]
}
end
before
do
build
.
trigger_request
=
trigger_request
...
...
spec/models/ci/mail_service_spec.rb
View file @
4c53cc0e
...
...
@@ -75,12 +75,12 @@ describe Ci::MailService do
end
describe
'successfull build and project has email_recipients'
do
let
(
:project
)
{
let
(
:project
)
do
FactoryGirl
.
create
(
:ci_project
,
email_add_pusher:
true
,
email_only_broken_builds:
false
,
email_recipients:
"jeroen@example.com"
)
}
end
let
(
:commit
)
{
FactoryGirl
.
create
(
:ci_commit
,
project:
project
)
}
let
(
:build
)
{
FactoryGirl
.
create
(
:ci_build
,
status: :success
,
commit:
commit
)
}
...
...
@@ -103,12 +103,12 @@ describe Ci::MailService do
end
describe
'successful build and notify only broken builds'
do
let
(
:project
)
{
let
(
:project
)
do
FactoryGirl
.
create
(
:ci_project
,
email_add_pusher:
true
,
email_only_broken_builds:
true
,
email_recipients:
"jeroen@example.com"
)
}
end
let
(
:commit
)
{
FactoryGirl
.
create
(
:ci_commit
,
project:
project
)
}
let
(
:build
)
{
FactoryGirl
.
create
(
:ci_build
,
status: :success
,
commit:
commit
)
}
...
...
@@ -131,12 +131,12 @@ describe Ci::MailService do
end
describe
'successful build and can test service'
do
let
(
:project
)
{
let
(
:project
)
do
FactoryGirl
.
create
(
:ci_project
,
email_add_pusher:
true
,
email_only_broken_builds:
false
,
email_recipients:
"jeroen@example.com"
)
}
end
let
(
:commit
)
{
FactoryGirl
.
create
(
:ci_commit
,
project:
project
)
}
let
(
:build
)
{
FactoryGirl
.
create
(
:ci_build
,
status: :success
,
commit:
commit
)
}
...
...
@@ -153,12 +153,12 @@ describe Ci::MailService do
end
describe
'retried build should not receive email'
do
let
(
:project
)
{
let
(
:project
)
do
FactoryGirl
.
create
(
:ci_project
,
email_add_pusher:
true
,
email_only_broken_builds:
true
,
email_recipients:
"jeroen@example.com"
)
}
end
let
(
:commit
)
{
FactoryGirl
.
create
(
:ci_commit
,
project:
project
)
}
let
(
:build
)
{
FactoryGirl
.
create
(
:ci_build
,
status: :failed
,
commit:
commit
)
}
...
...
spec/models/ci/project_spec.rb
View file @
4c53cc0e
...
...
@@ -94,33 +94,33 @@ describe Ci::Project do
end
describe
'#broken_or_success?'
do
it
{
it
do
project
=
FactoryGirl
.
create
:ci_project
,
email_add_pusher:
true
allow
(
project
).
to
receive
(
:broken?
).
and_return
(
true
)
allow
(
project
).
to
receive
(
:success?
).
and_return
(
true
)
expect
(
project
.
broken_or_success?
).
to
eq
(
true
)
}
end
it
{
it
do
project
=
FactoryGirl
.
create
:ci_project
,
email_add_pusher:
true
allow
(
project
).
to
receive
(
:broken?
).
and_return
(
true
)
allow
(
project
).
to
receive
(
:success?
).
and_return
(
false
)
expect
(
project
.
broken_or_success?
).
to
eq
(
true
)
}
end
it
{
it
do
project
=
FactoryGirl
.
create
:ci_project
,
email_add_pusher:
true
allow
(
project
).
to
receive
(
:broken?
).
and_return
(
false
)
allow
(
project
).
to
receive
(
:success?
).
and_return
(
true
)
expect
(
project
.
broken_or_success?
).
to
eq
(
true
)
}
end
it
{
it
do
project
=
FactoryGirl
.
create
:ci_project
,
email_add_pusher:
true
allow
(
project
).
to
receive
(
:broken?
).
and_return
(
false
)
allow
(
project
).
to
receive
(
:success?
).
and_return
(
false
)
expect
(
project
.
broken_or_success?
).
to
eq
(
false
)
}
end
end
describe
'Project.parse'
do
...
...
spec/requests/ci/api/builds_spec.rb
View file @
4c53cc0e
...
...
@@ -20,7 +20,7 @@ describe Ci::API::API do
commit
.
create_builds
build
=
commit
.
builds
.
first
post
api
(
"/builds/register"
),
token:
runner
.
token
,
info:
{
platform: :darwin
}
post
api
(
"/builds/register"
),
token:
runner
.
token
,
info:
{
platform: :darwin
}
expect
(
response
.
status
).
to
eq
(
201
)
expect
(
json_response
[
'sha'
]).
to
eq
(
build
.
sha
)
...
...
@@ -55,10 +55,10 @@ describe Ci::API::API do
commit
=
FactoryGirl
.
create
(
:ci_commit
,
project:
project
)
commit
.
create_builds
post
api
(
"/builds/register"
),
token:
runner
.
token
,
info:
{
platform: :darwin
}
post
api
(
"/builds/register"
),
token:
runner
.
token
,
info:
{
platform: :darwin
}
expect
(
response
.
status
).
to
eq
(
201
)
expect
(
json_response
[
"options"
]).
to
eq
({
"image"
=>
"ruby:2.1"
,
"services"
=>
[
"postgres"
]
})
expect
(
json_response
[
"options"
]).
to
eq
({
"image"
=>
"ruby:2.1"
,
"services"
=>
[
"postgres"
]
})
end
it
"returns variables"
do
...
...
@@ -66,12 +66,12 @@ describe Ci::API::API do
commit
.
create_builds
project
.
variables
<<
Variable
.
new
(
key:
"SECRET_KEY"
,
value:
"secret_value"
)
post
api
(
"/builds/register"
),
token:
runner
.
token
,
info:
{
platform: :darwin
}
post
api
(
"/builds/register"
),
token:
runner
.
token
,
info:
{
platform: :darwin
}
expect
(
response
.
status
).
to
eq
(
201
)
expect
(
json_response
[
"variables"
]).
to
eq
([
{
"key"
=>
"DB_NAME"
,
"value"
=>
"postgres"
,
"public"
=>
true
},
{
"key"
=>
"SECRET_KEY"
,
"value"
=>
"secret_value"
,
"public"
=>
false
},
{
"key"
=>
"DB_NAME"
,
"value"
=>
"postgres"
,
"public"
=>
true
},
{
"key"
=>
"SECRET_KEY"
,
"value"
=>
"secret_value"
,
"public"
=>
false
},
])
end
...
...
@@ -83,13 +83,13 @@ describe Ci::API::API do
commit
.
create_builds
(
trigger_request
)
project
.
variables
<<
Variable
.
new
(
key:
"SECRET_KEY"
,
value:
"secret_value"
)
post
api
(
"/builds/register"
),
token:
runner
.
token
,
info:
{
platform: :darwin
}
post
api
(
"/builds/register"
),
token:
runner
.
token
,
info:
{
platform: :darwin
}
expect
(
response
.
status
).
to
eq
(
201
)
expect
(
json_response
[
"variables"
]).
to
eq
([
{
"key"
=>
"DB_NAME"
,
"value"
=>
"postgres"
,
"public"
=>
true
},
{
"key"
=>
"SECRET_KEY"
,
"value"
=>
"secret_value"
,
"public"
=>
false
},
{
"key"
=>
"TRIGGER_KEY"
,
"value"
=>
"TRIGGER_VALUE"
,
"public"
=>
false
},
{
"key"
=>
"DB_NAME"
,
"value"
=>
"postgres"
,
"public"
=>
true
},
{
"key"
=>
"SECRET_KEY"
,
"value"
=>
"secret_value"
,
"public"
=>
false
},
{
"key"
=>
"TRIGGER_KEY"
,
"value"
=>
"TRIGGER_VALUE"
,
"public"
=>
false
},
])
end
end
...
...
spec/requests/ci/api/commits_spec.rb
View file @
4c53cc0e
...
...
@@ -6,12 +6,12 @@ describe Ci::API::API, 'Commits' do
let
(
:project
)
{
FactoryGirl
.
create
(
:ci_project
)
}
let
(
:commit
)
{
FactoryGirl
.
create
(
:ci_commit
,
project:
project
)
}
let
(
:options
)
{
let
(
:options
)
do
{
project_token:
project
.
token
,
project_id:
project
.
id
}
}
end
describe
"GET /commits"
do
before
{
commit
}
...
...
@@ -27,7 +27,7 @@ describe Ci::API::API, 'Commits' do
end
describe
"POST /commits"
do
let
(
:data
)
{
let
(
:data
)
do
{
"before"
=>
"95790bf891e76fee5e1747ab589903a6a1f80f22"
,
"after"
=>
"da1560886d4f094c3e6c9ef40349f7d38b5d27d7"
,
...
...
@@ -46,7 +46,7 @@ describe Ci::API::API, 'Commits' do
],
ci_yaml_file:
gitlab_ci_yaml
}
}
end
it
"should create a build"
do
post
api
(
"/commits"
),
options
.
merge
(
data:
data
)
...
...
spec/requests/ci/api/forks_spec.rb
View file @
4c53cc0e
...
...
@@ -7,20 +7,20 @@ describe Ci::API::API do
let
(
:gitlab_url
)
{
GitlabCi
.
config
.
gitlab_server
.
url
}
let
(
:private_token
)
{
Network
.
new
.
authenticate
(
access_token:
"some_token"
)[
"private_token"
]
}
let
(
:options
)
{
let
(
:options
)
do
{
private_token:
private_token
,
url:
gitlab_url
}
}
end
before
{
before
do
stub_gitlab_calls
}
end
describe
"POST /forks"
do
let
(
:project_info
)
{
let
(
:project_info
)
do
{
project_id:
project
.
gitlab_id
,
project_token:
project
.
token
,
...
...
@@ -32,7 +32,7 @@ describe Ci::API::API do
ssh_url_to_repo:
"git@example.com:gitlab-org/underscore"
}
}
}
end
context
"with valid info"
do
before
do
...
...
spec/requests/ci/api/projects_spec.rb
View file @
4c53cc0e
...
...
@@ -6,16 +6,16 @@ describe Ci::API::API do
let
(
:gitlab_url
)
{
GitlabCi
.
config
.
gitlab_server
.
url
}
let
(
:private_token
)
{
Network
.
new
.
authenticate
(
access_token:
"some_token"
)[
"private_token"
]
}
let
(
:options
)
{
let
(
:options
)
do
{
private_token:
private_token
,
url:
gitlab_url
}
}
end
before
{
before
do
stub_gitlab_calls
}
end
context
"requests for scoped projects"
do
# NOTE: These ids are tied to the actual projects on demo.gitlab.com
...
...
@@ -75,7 +75,7 @@ describe Ci::API::API do
end
context
"Invalid Webhook URL"
do
let!
(
:webhook
)
{
{
web_hook:
"ala_ma_kota"
}
}
let!
(
:webhook
)
{
{
web_hook:
"ala_ma_kota"
}
}
before
do
options
.
merge!
(
webhook
)
...
...
@@ -116,7 +116,7 @@ describe Ci::API::API do
describe
"PUT /projects/:id"
do
let!
(
:project
)
{
FactoryGirl
.
create
(
:ci_project
)
}
let!
(
:project_info
)
{
{
name:
"An updated name!"
}
}
let!
(
:project_info
)
{
{
name:
"An updated name!"
}
}
before
do
options
.
merge!
(
project_info
)
...
...
@@ -163,14 +163,14 @@ describe Ci::API::API do
end
describe
"POST /projects"
do
let
(
:project_info
)
{
let
(
:project_info
)
do
{
name:
"My project"
,
gitlab_id:
1
,
path:
"testing/testing"
,
ssh_url_to_repo:
"ssh://example.com/testing/testing.git"
}
}
end
let
(
:invalid_project_info
)
{
{}
}
...
...
spec/requests/ci/api/runners_spec.rb
View file @
4c53cc0e
...
...
@@ -4,19 +4,19 @@ describe Ci::API::API do
include
ApiHelpers
include
StubGitlabCalls
before
{
before
do
stub_gitlab_calls
}
end
describe
"GET /runners"
do
let
(
:gitlab_url
)
{
GitlabCi
.
config
.
gitlab_server
.
url
}
let
(
:private_token
)
{
Network
.
new
.
authenticate
(
access_token:
"some_token"
)[
"private_token"
]
}
let
(
:options
)
{
let
(
:options
)
do
{
:private_token
=>
private_token
,
:url
=>
gitlab_url
private_token:
private_token
,
url:
gitlab_url
}
}
end
before
do
5
.
times
{
FactoryGirl
.
create
(
:ci_runner
)
}
...
...
spec/requests/ci/api/triggers_spec.rb
View file @
4c53cc0e
...
...
@@ -50,9 +50,9 @@ describe Ci::API::API do
end
context
'Validates variables'
do
let
(
:variables
)
{
{
'TRIGGER_KEY'
=>
'TRIGGER_VALUE'
}
}
let
(
:variables
)
do
{
'TRIGGER_KEY'
=>
'TRIGGER_VALUE'
}
end
it
'should validate variables to be a hash'
do
post
api
(
"/projects/
#{
project
.
id
}
/refs/master/trigger"
),
options
.
merge
(
variables:
'value'
)
...
...
@@ -61,7 +61,7 @@ describe Ci::API::API do
end
it
'should validate variables needs to be a map of key-valued strings'
do
post
api
(
"/projects/
#{
project
.
id
}
/refs/master/trigger"
),
options
.
merge
(
variables:
{
key:
%w(1 2)
})
post
api
(
"/projects/
#{
project
.
id
}
/refs/master/trigger"
),
options
.
merge
(
variables:
{
key:
%w(1 2)
})
expect
(
response
.
status
).
to
eq
(
400
)
expect
(
json_response
[
'message'
]).
to
eq
(
'variables needs to be a map of key-valued strings'
)
end
...
...
spec/services/ci/create_commit_service_spec.rb
View file @
4c53cc0e
...
...
@@ -36,7 +36,7 @@ describe Ci::CreateCommitService do
end
it
"creates commit if there is no appropriate job but deploy job has right ref setting"
do
config
=
YAML
.
dump
({
deploy:
{
deploy:
"ls"
,
only:
[
"0_1"
]}
})
config
=
YAML
.
dump
({
deploy:
{
deploy:
"ls"
,
only:
[
"0_1"
]
}
})
result
=
service
.
execute
(
project
,
ref:
'refs/heads/0_1'
,
...
...
@@ -51,7 +51,7 @@ describe Ci::CreateCommitService do
describe
:ci_skip?
do
it
"skips builds creation if there is [ci skip] tag in commit message"
do
commits
=
[{
message:
"some message[ci skip]"
}]
commits
=
[{
message:
"some message[ci skip]"
}]
commit
=
service
.
execute
(
project
,
ref:
'refs/tags/0_1'
,
before:
'00000000'
,
...
...
@@ -64,7 +64,7 @@ describe Ci::CreateCommitService do
end
it
"does not skips builds creation if there is no [ci skip] tag in commit message"
do
commits
=
[{
message:
"some message"
}]
commits
=
[{
message:
"some message"
}]
commit
=
service
.
execute
(
project
,
ref:
'refs/tags/0_1'
,
...
...
@@ -78,7 +78,7 @@ describe Ci::CreateCommitService do
end
it
"skips builds creation if there is [ci skip] tag in commit message and yaml is invalid"
do
commits
=
[{
message:
"some message[ci skip]"
}]
commits
=
[{
message:
"some message[ci skip]"
}]
commit
=
service
.
execute
(
project
,
ref:
'refs/tags/0_1'
,
before:
'00000000'
,
...
...
@@ -92,7 +92,7 @@ describe Ci::CreateCommitService do
end
it
"skips build creation if there are already builds"
do
commits
=
[{
message:
"message"
}]
commits
=
[{
message:
"message"
}]
commit
=
service
.
execute
(
project
,
ref:
'refs/heads/master'
,
before:
'00000000'
,
...
...
@@ -113,7 +113,7 @@ describe Ci::CreateCommitService do
end
it
"creates commit with failed status if yaml is invalid"
do
commits
=
[{
message:
"some message"
}]
commits
=
[{
message:
"some message"
}]
commit
=
service
.
execute
(
project
,
ref:
'refs/tags/0_1'
,
...
...
spec/support/stub_gitlab_calls.rb
View file @
4c53cc0e
...
...
@@ -23,21 +23,21 @@ module StubGitlabCalls
f
=
File
.
read
(
Rails
.
root
.
join
(
'spec/support/gitlab_stubs/session.json'
))
stub_request
(
:post
,
"
#{
gitlab_url
}
api/v3/session.json"
).
with
(
:body
=>
"{
\"
email
\"
:
\"
test@test.com
\"
,
\"
password
\"
:
\"
123456
\"
}"
,
:headers
=>
{
'Content-Type'
=>
'application/json'
}).
to_return
(
:status
=>
201
,
:body
=>
f
,
:headers
=>
{
'Content-Type'
=>
'application/json'
})
with
(
body:
"{
\"
email
\"
:
\"
test@test.com
\"
,
\"
password
\"
:
\"
123456
\"
}"
,
headers:
{
'Content-Type'
=>
'application/json'
}).
to_return
(
status:
201
,
body:
f
,
headers:
{
'Content-Type'
=>
'application/json'
})
end
def
stub_user
f
=
File
.
read
(
Rails
.
root
.
join
(
'spec/support/gitlab_stubs/user.json'
))
stub_request
(
:get
,
"
#{
gitlab_url
}
api/v3/user?private_token=Wvjy2Krpb7y8xi93owUz"
).
with
(
:headers
=>
{
'Content-Type'
=>
'application/json'
}).
to_return
(
:status
=>
200
,
:body
=>
f
,
:headers
=>
{
'Content-Type'
=>
'application/json'
})
with
(
headers:
{
'Content-Type'
=>
'application/json'
}).
to_return
(
status:
200
,
body:
f
,
headers:
{
'Content-Type'
=>
'application/json'
})
stub_request
(
:get
,
"
#{
gitlab_url
}
api/v3/user?access_token=some_token"
).
with
(
:headers
=>
{
'Content-Type'
=>
'application/json'
}).
to_return
(
:status
=>
200
,
:body
=>
f
,
:headers
=>
{
'Content-Type'
=>
'application/json'
})
with
(
headers:
{
'Content-Type'
=>
'application/json'
}).
to_return
(
status:
200
,
body:
f
,
headers:
{
'Content-Type'
=>
'application/json'
})
end
def
stub_project_8
...
...
@@ -54,24 +54,24 @@ module StubGitlabCalls
f
=
File
.
read
(
Rails
.
root
.
join
(
'spec/support/gitlab_stubs/projects.json'
))
stub_request
(
:get
,
"
#{
gitlab_url
}
api/v3/projects.json?archived=false&ci_enabled_first=true&private_token=Wvjy2Krpb7y8xi93owUz"
).
with
(
:headers
=>
{
'Content-Type'
=>
'application/json'
}).
to_return
(
:status
=>
200
,
:body
=>
f
,
:headers
=>
{
'Content-Type'
=>
'application/json'
})
with
(
headers:
{
'Content-Type'
=>
'application/json'
}).
to_return
(
status:
200
,
body:
f
,
headers:
{
'Content-Type'
=>
'application/json'
})
end
def
stub_projects_owned
stub_request
(
:get
,
"
#{
gitlab_url
}
api/v3/projects/owned.json?archived=false&ci_enabled_first=true&private_token=Wvjy2Krpb7y8xi93owUz"
).
with
(
:headers
=>
{
'Content-Type'
=>
'application/json'
}).
to_return
(
:status
=>
200
,
:body
=>
""
,
:headers
=>
{})
with
(
headers:
{
'Content-Type'
=>
'application/json'
}).
to_return
(
status:
200
,
body:
""
,
headers:
{})
end
def
stub_ci_enable
stub_request
(
:put
,
"
#{
gitlab_url
}
api/v3/projects/2/services/gitlab-ci.json?private_token=Wvjy2Krpb7y8xi93owUz"
).
with
(
:headers
=>
{
'Content-Type'
=>
'application/json'
}).
to_return
(
:status
=>
200
,
:body
=>
""
,
:headers
=>
{})
with
(
headers:
{
'Content-Type'
=>
'application/json'
}).
to_return
(
status:
200
,
body:
""
,
headers:
{})
end
def
project_hash_array
f
=
File
.
read
(
Rails
.
root
.
join
(
'spec/support/gitlab_stubs/projects.json'
))
return
JSON
.
parse
f
JSON
.
parse
f
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