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
1
Merge Requests
1
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
nexedi
gitlab-ce
Commits
8adc3569
Commit
8adc3569
authored
Jan 27, 2017
by
Oswaldo Ferreira
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Remove deprecated templates endpoints in V4
parent
79e8e613
Changes
8
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
398 additions
and
97 deletions
+398
-97
app/assets/javascripts/api.js
app/assets/javascripts/api.js
+1
-1
changelogs/unreleased/22818-licence-gitignore-and-yml-endpoints-removal.yml
...sed/22818-licence-gitignore-and-yml-endpoints-removal.yml
+4
-0
doc/api/v3_to_v4.md
doc/api/v3_to_v4.md
+10
-0
lib/api/api.rb
lib/api/api.rb
+1
-0
lib/api/templates.rb
lib/api/templates.rb
+39
-56
lib/api/v3/templates.rb
lib/api/v3/templates.rb
+122
-0
spec/requests/api/templates_spec.rb
spec/requests/api/templates_spec.rb
+18
-40
spec/requests/api/v3/templates_spec.rb
spec/requests/api/v3/templates_spec.rb
+203
-0
No files found.
app/assets/javascripts/api.js
View file @
8adc3569
...
@@ -11,7 +11,7 @@
...
@@ -11,7 +11,7 @@
licensePath
:
"
/api/:version/templates/licenses/:key
"
,
licensePath
:
"
/api/:version/templates/licenses/:key
"
,
gitignorePath
:
"
/api/:version/templates/gitignores/:key
"
,
gitignorePath
:
"
/api/:version/templates/gitignores/:key
"
,
gitlabCiYmlPath
:
"
/api/:version/templates/gitlab_ci_ymls/:key
"
,
gitlabCiYmlPath
:
"
/api/:version/templates/gitlab_ci_ymls/:key
"
,
dockerfilePath
:
"
/api/:version/dockerfiles/:key
"
,
dockerfilePath
:
"
/api/:version/
templates/
dockerfiles/:key
"
,
issuableTemplatePath
:
"
/:namespace_path/:project_path/templates/:type/:key
"
,
issuableTemplatePath
:
"
/:namespace_path/:project_path/templates/:type/:key
"
,
group
:
function
(
group_id
,
callback
)
{
group
:
function
(
group_id
,
callback
)
{
var
url
=
Api
.
buildUrl
(
Api
.
groupPath
)
var
url
=
Api
.
buildUrl
(
Api
.
groupPath
)
...
...
changelogs/unreleased/22818-licence-gitignore-and-yml-endpoints-removal.yml
0 → 100644
View file @
8adc3569
---
title
:
V3 deprecated templates endpoints removal
merge_request
:
8853
author
:
doc/api/v3_to_v4.md
View file @
8adc3569
...
@@ -13,3 +13,13 @@ changes are in V4:
...
@@ -13,3 +13,13 @@ changes are in V4:
-
Project snippets do not return deprecated field
`expires_at`
-
Project snippets do not return deprecated field
`expires_at`
-
Endpoints under
`projects/:id/keys`
have been removed (use
`projects/:id/deploy_keys`
)
-
Endpoints under
`projects/:id/keys`
have been removed (use
`projects/:id/deploy_keys`
)
-
Status 409 returned for POST
`project/:id/members`
when a member already exists
-
Status 409 returned for POST
`project/:id/members`
when a member already exists
-
Removed the following deprecated Templates endpoints (these are still accessible with
`/templates`
prefix)
-
`/licences`
-
`/licences/:key`
-
`/gitignores`
-
`/gitlab_ci_ymls`
-
`/dockerfiles`
-
`/gitignores/:key`
-
`/gitlab_ci_ymls/:key`
-
`/dockerfiles/:key`
lib/api/api.rb
View file @
8adc3569
...
@@ -11,6 +11,7 @@ module API
...
@@ -11,6 +11,7 @@ module API
mount
::
API
::
V3
::
MergeRequests
mount
::
API
::
V3
::
MergeRequests
mount
::
API
::
V3
::
Projects
mount
::
API
::
V3
::
Projects
mount
::
API
::
V3
::
ProjectSnippets
mount
::
API
::
V3
::
ProjectSnippets
mount
::
API
::
V3
::
Templates
end
end
before
{
allow_access_with_scope
:api
}
before
{
allow_access_with_scope
:api
}
...
...
lib/api/templates.rb
View file @
8adc3569
...
@@ -24,7 +24,6 @@ module API
...
@@ -24,7 +24,6 @@ module API
/[\<\{\[]
/[\<\{\[]
(fullname|name\sof\s(author|copyright\sowner))
(fullname|name\sof\s(author|copyright\sowner))
[\>\}\]]/xi
.
freeze
[\>\}\]]/xi
.
freeze
DEPRECATION_MESSAGE
=
' This endpoint is deprecated and will be removed in GitLab 9.0.'
.
freeze
helpers
do
helpers
do
def
parsed_license_template
def
parsed_license_template
...
@@ -46,75 +45,59 @@ module API
...
@@ -46,75 +45,59 @@ module API
end
end
end
end
{
"licenses"
=>
:deprecated
,
"templates/licenses"
=>
:ok
}.
each
do
|
route
,
status
|
desc
'Get the list of the available license template'
do
desc
'Get the list of the available license template'
do
detailed_desc
=
'This feature was introduced in GitLab 8.7.'
detail
'This feature was introduced in GitLab 8.7.'
detailed_desc
<<
DEPRECATION_MESSAGE
unless
status
==
:ok
success
::
API
::
Entities
::
RepoLicense
detail
detailed_desc
success
Entities
::
RepoLicense
end
end
params
do
params
do
optional
:popular
,
type:
Boolean
,
desc:
'If passed, returns only popular licenses'
optional
:popular
,
type:
Boolean
,
desc:
'If passed, returns only popular licenses'
end
end
get
route
do
get
"templates/licenses"
do
options
=
{
options
=
{
featured:
declared
(
params
).
popular
.
present?
?
true
:
nil
featured:
declared
(
params
).
popular
.
present?
?
true
:
nil
}
}
present
Licensee
::
License
.
all
(
options
),
with:
Entities
::
RepoLicense
present
Licensee
::
License
.
all
(
options
),
with:
::
API
::
Entities
::
RepoLicense
end
end
end
{
"licenses/:name"
=>
:deprecated
,
"templates/licenses/:name"
=>
:ok
}.
each
do
|
route
,
status
|
desc
'Get the text for a specific license'
do
desc
'Get the text for a specific license'
do
detailed_desc
=
'This feature was introduced in GitLab 8.7.'
detail
'This feature was introduced in GitLab 8.7.'
detailed_desc
<<
DEPRECATION_MESSAGE
unless
status
==
:ok
success
::
API
::
Entities
::
RepoLicense
detail
detailed_desc
success
Entities
::
RepoLicense
end
end
params
do
params
do
requires
:name
,
type:
String
,
desc:
'The name of the template'
requires
:name
,
type:
String
,
desc:
'The name of the template'
end
end
get
route
,
requirements:
{
name:
/[\w\.-]+/
}
do
get
"templates/licenses/:name"
,
requirements:
{
name:
/[\w\.-]+/
}
do
not_found!
(
'License'
)
unless
Licensee
::
License
.
find
(
declared
(
params
).
name
)
not_found!
(
'License'
)
unless
Licensee
::
License
.
find
(
declared
(
params
).
name
)
template
=
parsed_license_template
template
=
parsed_license_template
present
template
,
with:
Entities
::
RepoLicense
present
template
,
with:
::
API
::
Entities
::
RepoLicense
end
end
end
GLOBAL_TEMPLATE_TYPES
.
each
do
|
template_type
,
properties
|
GLOBAL_TEMPLATE_TYPES
.
each
do
|
template_type
,
properties
|
klass
=
properties
[
:klass
]
klass
=
properties
[
:klass
]
gitlab_version
=
properties
[
:gitlab_version
]
gitlab_version
=
properties
[
:gitlab_version
]
{
template_type
=>
:deprecated
,
"templates/
#{
template_type
}
"
=>
:ok
}.
each
do
|
route
,
status
|
desc
'Get the list of the available template'
do
desc
'Get the list of the available template'
do
detailed_desc
=
"This feature was introduced in GitLab
#{
gitlab_version
}
."
detail
"This feature was introduced in GitLab
#{
gitlab_version
}
."
detailed_desc
<<
DEPRECATION_MESSAGE
unless
status
==
:ok
detail
detailed_desc
success
Entities
::
TemplatesList
success
Entities
::
TemplatesList
end
end
get
route
do
get
"templates/
#{
template_type
}
"
do
present
klass
.
all
,
with:
Entities
::
TemplatesList
present
klass
.
all
,
with:
Entities
::
TemplatesList
end
end
end
{
"
#{
template_type
}
/:name"
=>
:deprecated
,
"templates/
#{
template_type
}
/:name"
=>
:ok
}.
each
do
|
route
,
status
|
desc
'Get the text for a specific template present in local filesystem'
do
desc
'Get the text for a specific template present in local filesystem'
do
detailed_desc
=
"This feature was introduced in GitLab
#{
gitlab_version
}
."
detail
"This feature was introduced in GitLab
#{
gitlab_version
}
."
detailed_desc
<<
DEPRECATION_MESSAGE
unless
status
==
:ok
detail
detailed_desc
success
Entities
::
Template
success
Entities
::
Template
end
end
params
do
params
do
requires
:name
,
type:
String
,
desc:
'The name of the template'
requires
:name
,
type:
String
,
desc:
'The name of the template'
end
end
get
route
do
get
"templates/
#{
template_type
}
/:name"
do
new_template
=
klass
.
find
(
declared
(
params
).
name
)
new_template
=
klass
.
find
(
declared
(
params
).
name
)
render_response
(
template_type
,
new_template
)
render_response
(
template_type
,
new_template
)
end
end
end
end
end
end
end
end
end
lib/api/v3/templates.rb
0 → 100644
View file @
8adc3569
module
API
module
V3
class
Templates
<
Grape
::
API
GLOBAL_TEMPLATE_TYPES
=
{
gitignores:
{
klass:
Gitlab
::
Template
::
GitignoreTemplate
,
gitlab_version:
8.8
},
gitlab_ci_ymls:
{
klass:
Gitlab
::
Template
::
GitlabCiYmlTemplate
,
gitlab_version:
8.9
},
dockerfiles:
{
klass:
Gitlab
::
Template
::
DockerfileTemplate
,
gitlab_version:
8.15
}
}.
freeze
PROJECT_TEMPLATE_REGEX
=
/[\<\{\[]
(project|description|
one\sline\s.+\swhat\sit\sdoes\.) # matching the start and end is enough here
[\>\}\]]/xi
.
freeze
YEAR_TEMPLATE_REGEX
=
/[<{\[](year|yyyy)[>}\]]/i
.
freeze
FULLNAME_TEMPLATE_REGEX
=
/[\<\{\[]
(fullname|name\sof\s(author|copyright\sowner))
[\>\}\]]/xi
.
freeze
DEPRECATION_MESSAGE
=
' This endpoint is deprecated and has been removed in V4.'
.
freeze
helpers
do
def
parsed_license_template
# We create a fresh Licensee::License object since we'll modify its
# content in place below.
template
=
Licensee
::
License
.
new
(
params
[
:name
])
template
.
content
.
gsub!
(
YEAR_TEMPLATE_REGEX
,
Time
.
now
.
year
.
to_s
)
template
.
content
.
gsub!
(
PROJECT_TEMPLATE_REGEX
,
params
[
:project
])
if
params
[
:project
].
present?
fullname
=
params
[
:fullname
].
presence
||
current_user
.
try
(
:name
)
template
.
content
.
gsub!
(
FULLNAME_TEMPLATE_REGEX
,
fullname
)
if
fullname
template
end
def
render_response
(
template_type
,
template
)
not_found!
(
template_type
.
to_s
.
singularize
)
unless
template
present
template
,
with:
::
API
::
Entities
::
Template
end
end
{
"licenses"
=>
:deprecated
,
"templates/licenses"
=>
:ok
}.
each
do
|
route
,
status
|
desc
'Get the list of the available license template'
do
detailed_desc
=
'This feature was introduced in GitLab 8.7.'
detailed_desc
<<
DEPRECATION_MESSAGE
unless
status
==
:ok
detail
detailed_desc
success
::
API
::
Entities
::
RepoLicense
end
params
do
optional
:popular
,
type:
Boolean
,
desc:
'If passed, returns only popular licenses'
end
get
route
do
options
=
{
featured:
declared
(
params
).
popular
.
present?
?
true
:
nil
}
present
Licensee
::
License
.
all
(
options
),
with:
::
API
::
Entities
::
RepoLicense
end
end
{
"licenses/:name"
=>
:deprecated
,
"templates/licenses/:name"
=>
:ok
}.
each
do
|
route
,
status
|
desc
'Get the text for a specific license'
do
detailed_desc
=
'This feature was introduced in GitLab 8.7.'
detailed_desc
<<
DEPRECATION_MESSAGE
unless
status
==
:ok
detail
detailed_desc
success
::
API
::
Entities
::
RepoLicense
end
params
do
requires
:name
,
type:
String
,
desc:
'The name of the template'
end
get
route
,
requirements:
{
name:
/[\w\.-]+/
}
do
not_found!
(
'License'
)
unless
Licensee
::
License
.
find
(
declared
(
params
).
name
)
template
=
parsed_license_template
present
template
,
with:
::
API
::
Entities
::
RepoLicense
end
end
GLOBAL_TEMPLATE_TYPES
.
each
do
|
template_type
,
properties
|
klass
=
properties
[
:klass
]
gitlab_version
=
properties
[
:gitlab_version
]
{
template_type
=>
:deprecated
,
"templates/
#{
template_type
}
"
=>
:ok
}.
each
do
|
route
,
status
|
desc
'Get the list of the available template'
do
detailed_desc
=
"This feature was introduced in GitLab
#{
gitlab_version
}
."
detailed_desc
<<
DEPRECATION_MESSAGE
unless
status
==
:ok
detail
detailed_desc
success
::
API
::
Entities
::
TemplatesList
end
get
route
do
present
klass
.
all
,
with:
::
API
::
Entities
::
TemplatesList
end
end
{
"
#{
template_type
}
/:name"
=>
:deprecated
,
"templates/
#{
template_type
}
/:name"
=>
:ok
}.
each
do
|
route
,
status
|
desc
'Get the text for a specific template present in local filesystem'
do
detailed_desc
=
"This feature was introduced in GitLab
#{
gitlab_version
}
."
detailed_desc
<<
DEPRECATION_MESSAGE
unless
status
==
:ok
detail
detailed_desc
success
::
API
::
Entities
::
Template
end
params
do
requires
:name
,
type:
String
,
desc:
'The name of the template'
end
get
route
do
new_template
=
klass
.
find
(
declared
(
params
).
name
)
render_response
(
template_type
,
new_template
)
end
end
end
end
end
end
spec/requests/api/templates_spec.rb
View file @
8adc3569
...
@@ -3,23 +3,23 @@ require 'spec_helper'
...
@@ -3,23 +3,23 @@ require 'spec_helper'
describe
API
::
Templates
,
api:
true
do
describe
API
::
Templates
,
api:
true
do
include
ApiHelpers
include
ApiHelpers
shared_examples_for
'the Template Entity'
do
|
path
|
context
'the Template Entity'
do
before
{
get
api
(
path
)
}
before
{
get
api
(
'/templates/gitignores/Ruby'
)
}
it
{
expect
(
json_response
[
'name'
]).
to
eq
(
'Ruby'
)
}
it
{
expect
(
json_response
[
'name'
]).
to
eq
(
'Ruby'
)
}
it
{
expect
(
json_response
[
'content'
]).
to
include
(
'*.gem'
)
}
it
{
expect
(
json_response
[
'content'
]).
to
include
(
'*.gem'
)
}
end
end
shared_examples_for
'the TemplateList Entity'
do
|
path
|
context
'the TemplateList Entity'
do
before
{
get
api
(
path
)
}
before
{
get
api
(
'/templates/gitignores'
)
}
it
{
expect
(
json_response
.
first
[
'name'
]).
not_to
be_nil
}
it
{
expect
(
json_response
.
first
[
'name'
]).
not_to
be_nil
}
it
{
expect
(
json_response
.
first
[
'content'
]).
to
be_nil
}
it
{
expect
(
json_response
.
first
[
'content'
]).
to
be_nil
}
end
end
shared_examples_for
'requesting gitignores'
do
|
path
|
context
'requesting gitignores'
do
it
'returns a list of available gitignore templates'
do
it
'returns a list of available gitignore templates'
do
get
api
(
path
)
get
api
(
'/templates/gitignores'
)
expect
(
response
).
to
have_http_status
(
200
)
expect
(
response
).
to
have_http_status
(
200
)
expect
(
json_response
).
to
be_an
Array
expect
(
json_response
).
to
be_an
Array
...
@@ -27,9 +27,9 @@ describe API::Templates, api: true do
...
@@ -27,9 +27,9 @@ describe API::Templates, api: true do
end
end
end
end
shared_examples_for
'requesting gitlab-ci-ymls'
do
|
path
|
context
'requesting gitlab-ci-ymls'
do
it
'returns a list of available gitlab_ci_ymls'
do
it
'returns a list of available gitlab_ci_ymls'
do
get
api
(
path
)
get
api
(
'/templates/gitlab_ci_ymls'
)
expect
(
response
).
to
have_http_status
(
200
)
expect
(
response
).
to
have_http_status
(
200
)
expect
(
json_response
).
to
be_an
Array
expect
(
json_response
).
to
be_an
Array
...
@@ -37,17 +37,17 @@ describe API::Templates, api: true do
...
@@ -37,17 +37,17 @@ describe API::Templates, api: true do
end
end
end
end
shared_examples_for
'requesting gitlab-ci-yml for Ruby'
do
|
path
|
context
'requesting gitlab-ci-yml for Ruby'
do
it
'adds a disclaimer on the top'
do
it
'adds a disclaimer on the top'
do
get
api
(
path
)
get
api
(
'/templates/gitlab_ci_ymls/Ruby'
)
expect
(
response
).
to
have_http_status
(
200
)
expect
(
response
).
to
have_http_status
(
200
)
expect
(
json_response
[
'content'
]).
to
start_with
(
"# This file is a template,"
)
expect
(
json_response
[
'content'
]).
to
start_with
(
"# This file is a template,"
)
end
end
end
end
shared_examples_for
'the License Template Entity'
do
|
path
|
context
'the License Template Entity'
do
before
{
get
api
(
path
)
}
before
{
get
api
(
'/templates/licenses/mit'
)
}
it
'returns a license template'
do
it
'returns a license template'
do
expect
(
json_response
[
'key'
]).
to
eq
(
'mit'
)
expect
(
json_response
[
'key'
]).
to
eq
(
'mit'
)
...
@@ -64,9 +64,9 @@ describe API::Templates, api: true do
...
@@ -64,9 +64,9 @@ describe API::Templates, api: true do
end
end
end
end
shared_examples_for
'GET licenses'
do
|
path
|
context
'GET templates/licenses'
do
it
'returns a list of available license templates'
do
it
'returns a list of available license templates'
do
get
api
(
path
)
get
api
(
'/templates/licenses'
)
expect
(
response
).
to
have_http_status
(
200
)
expect
(
response
).
to
have_http_status
(
200
)
expect
(
json_response
).
to
be_an
Array
expect
(
json_response
).
to
be_an
Array
...
@@ -77,7 +77,7 @@ describe API::Templates, api: true do
...
@@ -77,7 +77,7 @@ describe API::Templates, api: true do
describe
'the popular parameter'
do
describe
'the popular parameter'
do
context
'with popular=1'
do
context
'with popular=1'
do
it
'returns a list of available popular license templates'
do
it
'returns a list of available popular license templates'
do
get
api
(
"
#{
path
}
?popular=1"
)
get
api
(
'/templates/licenses?popular=1'
)
expect
(
response
).
to
have_http_status
(
200
)
expect
(
response
).
to
have_http_status
(
200
)
expect
(
json_response
).
to
be_an
Array
expect
(
json_response
).
to
be_an
Array
...
@@ -88,10 +88,10 @@ describe API::Templates, api: true do
...
@@ -88,10 +88,10 @@ describe API::Templates, api: true do
end
end
end
end
shared_examples_for
'GET licenses/:name'
do
|
path
|
context
'GET templates/licenses/:name'
do
context
'with :project and :fullname given'
do
context
'with :project and :fullname given'
do
before
do
before
do
get
api
(
"
#{
path
}
/
#{
license_type
}
?project=My+Awesome+Project&fullname=Anton+
#{
license_type
.
upcase
}
"
)
get
api
(
"
/templates/licenses
/
#{
license_type
}
?project=My+Awesome+Project&fullname=Anton+
#{
license_type
.
upcase
}
"
)
end
end
context
'for the mit license'
do
context
'for the mit license'
do
...
@@ -178,26 +178,4 @@ describe API::Templates, api: true do
...
@@ -178,26 +178,4 @@ describe API::Templates, api: true do
end
end
end
end
end
end
describe
'with /templates namespace'
do
it_behaves_like
'the Template Entity'
,
'/templates/gitignores/Ruby'
it_behaves_like
'the TemplateList Entity'
,
'/templates/gitignores'
it_behaves_like
'requesting gitignores'
,
'/templates/gitignores'
it_behaves_like
'requesting gitlab-ci-ymls'
,
'/templates/gitlab_ci_ymls'
it_behaves_like
'requesting gitlab-ci-yml for Ruby'
,
'/templates/gitlab_ci_ymls/Ruby'
it_behaves_like
'the License Template Entity'
,
'/templates/licenses/mit'
it_behaves_like
'GET licenses'
,
'/templates/licenses'
it_behaves_like
'GET licenses/:name'
,
'/templates/licenses'
end
describe
'without /templates namespace'
do
it_behaves_like
'the Template Entity'
,
'/gitignores/Ruby'
it_behaves_like
'the TemplateList Entity'
,
'/gitignores'
it_behaves_like
'requesting gitignores'
,
'/gitignores'
it_behaves_like
'requesting gitlab-ci-ymls'
,
'/gitlab_ci_ymls'
it_behaves_like
'requesting gitlab-ci-yml for Ruby'
,
'/gitlab_ci_ymls/Ruby'
it_behaves_like
'the License Template Entity'
,
'/licenses/mit'
it_behaves_like
'GET licenses'
,
'/licenses'
it_behaves_like
'GET licenses/:name'
,
'/licenses'
end
end
end
spec/requests/api/v3/templates_spec.rb
0 → 100644
View file @
8adc3569
require
'spec_helper'
describe
API
::
V3
::
Templates
,
api:
true
do
include
ApiHelpers
shared_examples_for
'the Template Entity'
do
|
path
|
before
{
get
v3_api
(
path
)
}
it
{
expect
(
json_response
[
'name'
]).
to
eq
(
'Ruby'
)
}
it
{
expect
(
json_response
[
'content'
]).
to
include
(
'*.gem'
)
}
end
shared_examples_for
'the TemplateList Entity'
do
|
path
|
before
{
get
v3_api
(
path
)
}
it
{
expect
(
json_response
.
first
[
'name'
]).
not_to
be_nil
}
it
{
expect
(
json_response
.
first
[
'content'
]).
to
be_nil
}
end
shared_examples_for
'requesting gitignores'
do
|
path
|
it
'returns a list of available gitignore templates'
do
get
v3_api
(
path
)
expect
(
response
).
to
have_http_status
(
200
)
expect
(
json_response
).
to
be_an
Array
expect
(
json_response
.
size
).
to
be
>
15
end
end
shared_examples_for
'requesting gitlab-ci-ymls'
do
|
path
|
it
'returns a list of available gitlab_ci_ymls'
do
get
v3_api
(
path
)
expect
(
response
).
to
have_http_status
(
200
)
expect
(
json_response
).
to
be_an
Array
expect
(
json_response
.
first
[
'name'
]).
not_to
be_nil
end
end
shared_examples_for
'requesting gitlab-ci-yml for Ruby'
do
|
path
|
it
'adds a disclaimer on the top'
do
get
v3_api
(
path
)
expect
(
response
).
to
have_http_status
(
200
)
expect
(
json_response
[
'content'
]).
to
start_with
(
"# This file is a template,"
)
end
end
shared_examples_for
'the License Template Entity'
do
|
path
|
before
{
get
v3_api
(
path
)
}
it
'returns a license template'
do
expect
(
json_response
[
'key'
]).
to
eq
(
'mit'
)
expect
(
json_response
[
'name'
]).
to
eq
(
'MIT License'
)
expect
(
json_response
[
'nickname'
]).
to
be_nil
expect
(
json_response
[
'popular'
]).
to
be
true
expect
(
json_response
[
'html_url'
]).
to
eq
(
'http://choosealicense.com/licenses/mit/'
)
expect
(
json_response
[
'source_url'
]).
to
eq
(
'https://opensource.org/licenses/MIT'
)
expect
(
json_response
[
'description'
]).
to
include
(
'A permissive license that is short and to the point.'
)
expect
(
json_response
[
'conditions'
]).
to
eq
(
%w[include-copyright]
)
expect
(
json_response
[
'permissions'
]).
to
eq
(
%w[commercial-use modifications distribution private-use]
)
expect
(
json_response
[
'limitations'
]).
to
eq
(
%w[no-liability]
)
expect
(
json_response
[
'content'
]).
to
include
(
'The MIT License (MIT)'
)
end
end
shared_examples_for
'GET licenses'
do
|
path
|
it
'returns a list of available license templates'
do
get
v3_api
(
path
)
expect
(
response
).
to
have_http_status
(
200
)
expect
(
json_response
).
to
be_an
Array
expect
(
json_response
.
size
).
to
eq
(
15
)
expect
(
json_response
.
map
{
|
l
|
l
[
'key'
]
}).
to
include
(
'agpl-3.0'
)
end
describe
'the popular parameter'
do
context
'with popular=1'
do
it
'returns a list of available popular license templates'
do
get
v3_api
(
"
#{
path
}
?popular=1"
)
expect
(
response
).
to
have_http_status
(
200
)
expect
(
json_response
).
to
be_an
Array
expect
(
json_response
.
size
).
to
eq
(
3
)
expect
(
json_response
.
map
{
|
l
|
l
[
'key'
]
}).
to
include
(
'apache-2.0'
)
end
end
end
end
shared_examples_for
'GET licenses/:name'
do
|
path
|
context
'with :project and :fullname given'
do
before
do
get
v3_api
(
"
#{
path
}
/
#{
license_type
}
?project=My+Awesome+Project&fullname=Anton+
#{
license_type
.
upcase
}
"
)
end
context
'for the mit license'
do
let
(
:license_type
)
{
'mit'
}
it
'returns the license text'
do
expect
(
json_response
[
'content'
]).
to
include
(
'The MIT License (MIT)'
)
end
it
'replaces placeholder values'
do
expect
(
json_response
[
'content'
]).
to
include
(
"Copyright (c)
#{
Time
.
now
.
year
}
Anton"
)
end
end
context
'for the agpl-3.0 license'
do
let
(
:license_type
)
{
'agpl-3.0'
}
it
'returns the license text'
do
expect
(
json_response
[
'content'
]).
to
include
(
'GNU AFFERO GENERAL PUBLIC LICENSE'
)
end
it
'replaces placeholder values'
do
expect
(
json_response
[
'content'
]).
to
include
(
'My Awesome Project'
)
expect
(
json_response
[
'content'
]).
to
include
(
"Copyright (C)
#{
Time
.
now
.
year
}
Anton"
)
end
end
context
'for the gpl-3.0 license'
do
let
(
:license_type
)
{
'gpl-3.0'
}
it
'returns the license text'
do
expect
(
json_response
[
'content'
]).
to
include
(
'GNU GENERAL PUBLIC LICENSE'
)
end
it
'replaces placeholder values'
do
expect
(
json_response
[
'content'
]).
to
include
(
'My Awesome Project'
)
expect
(
json_response
[
'content'
]).
to
include
(
"Copyright (C)
#{
Time
.
now
.
year
}
Anton"
)
end
end
context
'for the gpl-2.0 license'
do
let
(
:license_type
)
{
'gpl-2.0'
}
it
'returns the license text'
do
expect
(
json_response
[
'content'
]).
to
include
(
'GNU GENERAL PUBLIC LICENSE'
)
end
it
'replaces placeholder values'
do
expect
(
json_response
[
'content'
]).
to
include
(
'My Awesome Project'
)
expect
(
json_response
[
'content'
]).
to
include
(
"Copyright (C)
#{
Time
.
now
.
year
}
Anton"
)
end
end
context
'for the apache-2.0 license'
do
let
(
:license_type
)
{
'apache-2.0'
}
it
'returns the license text'
do
expect
(
json_response
[
'content'
]).
to
include
(
'Apache License'
)
end
it
'replaces placeholder values'
do
expect
(
json_response
[
'content'
]).
to
include
(
"Copyright
#{
Time
.
now
.
year
}
Anton"
)
end
end
context
'for an uknown license'
do
let
(
:license_type
)
{
'muth-over9000'
}
it
'returns a 404'
do
expect
(
response
).
to
have_http_status
(
404
)
end
end
end
context
'with no :fullname given'
do
context
'with an authenticated user'
do
let
(
:user
)
{
create
(
:user
)
}
it
'replaces the copyright owner placeholder with the name of the current user'
do
get
v3_api
(
'/templates/licenses/mit'
,
user
)
expect
(
json_response
[
'content'
]).
to
include
(
"Copyright (c)
#{
Time
.
now
.
year
}
#{
user
.
name
}
"
)
end
end
end
end
describe
'with /templates namespace'
do
it_behaves_like
'the Template Entity'
,
'/templates/gitignores/Ruby'
it_behaves_like
'the TemplateList Entity'
,
'/templates/gitignores'
it_behaves_like
'requesting gitignores'
,
'/templates/gitignores'
it_behaves_like
'requesting gitlab-ci-ymls'
,
'/templates/gitlab_ci_ymls'
it_behaves_like
'requesting gitlab-ci-yml for Ruby'
,
'/templates/gitlab_ci_ymls/Ruby'
it_behaves_like
'the License Template Entity'
,
'/templates/licenses/mit'
it_behaves_like
'GET licenses'
,
'/templates/licenses'
it_behaves_like
'GET licenses/:name'
,
'/templates/licenses'
end
describe
'without /templates namespace'
do
it_behaves_like
'the Template Entity'
,
'/gitignores/Ruby'
it_behaves_like
'the TemplateList Entity'
,
'/gitignores'
it_behaves_like
'requesting gitignores'
,
'/gitignores'
it_behaves_like
'requesting gitlab-ci-ymls'
,
'/gitlab_ci_ymls'
it_behaves_like
'requesting gitlab-ci-yml for Ruby'
,
'/gitlab_ci_ymls/Ruby'
it_behaves_like
'the License Template Entity'
,
'/licenses/mit'
it_behaves_like
'GET licenses'
,
'/licenses'
it_behaves_like
'GET licenses/:name'
,
'/licenses'
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