BigW Consortium Gitlab
Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
G
gitlab-ce
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
Forest Godfrey
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
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
370 additions
and
69 deletions
+370
-69
api.js
app/assets/javascripts/api.js
+1
-1
22818-licence-gitignore-and-yml-endpoints-removal.yml
...sed/22818-licence-gitignore-and-yml-endpoints-removal.yml
+4
-0
v3_to_v4.md
doc/api/v3_to_v4.md
+10
-0
api.rb
lib/api/api.rb
+1
-0
templates.rb
lib/api/templates.rb
+12
-29
templates.rb
lib/api/v3/templates.rb
+122
-0
templates_spec.rb
spec/requests/api/templates_spec.rb
+17
-39
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