debian-mirror-gitlab/spec/requests/api/templates_spec.rb

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

197 lines
6.6 KiB
Ruby
Raw Permalink Normal View History

2019-12-26 22:10:19 +05:30
# frozen_string_literal: true
2016-06-22 15:30:34 +05:30
require 'spec_helper'
2023-03-04 22:38:38 +05:30
RSpec.describe API::Templates, feature_category: :source_code_management do
2017-08-17 22:00:37 +05:30
context 'the Template Entity' do
2017-09-10 17:25:29 +05:30
before do
get api('/templates/gitignores/Ruby')
end
2016-06-22 15:30:34 +05:30
2016-11-03 12:29:30 +05:30
it { expect(json_response['name']).to eq('Ruby') }
it { expect(json_response['content']).to include('*.gem') }
end
2017-08-17 22:00:37 +05:30
context 'the TemplateList Entity' do
2017-09-10 17:25:29 +05:30
before do
get api('/templates/gitignores')
end
2016-11-03 12:29:30 +05:30
it { expect(json_response.first['name']).not_to be_nil }
it { expect(json_response.first['content']).to be_nil }
end
2017-08-17 22:00:37 +05:30
context 'requesting gitignores' do
2016-11-03 12:29:30 +05:30
it 'returns a list of available gitignore templates' do
2017-08-17 22:00:37 +05:30
get api('/templates/gitignores')
2016-11-03 12:29:30 +05:30
2020-04-08 14:13:33 +05:30
expect(response).to have_gitlab_http_status(:ok)
2017-08-17 22:00:37 +05:30
expect(response).to include_pagination_headers
2016-11-03 12:29:30 +05:30
expect(json_response).to be_an Array
expect(json_response.size).to be > 15
2016-09-13 17:45:13 +05:30
end
2016-11-03 12:29:30 +05:30
end
2016-06-22 15:30:34 +05:30
2017-08-17 22:00:37 +05:30
context 'requesting gitlab-ci-ymls' do
2016-11-03 12:29:30 +05:30
it 'returns a list of available gitlab_ci_ymls' do
2017-08-17 22:00:37 +05:30
get api('/templates/gitlab_ci_ymls')
2016-06-22 15:30:34 +05:30
2020-04-08 14:13:33 +05:30
expect(response).to have_gitlab_http_status(:ok)
2017-08-17 22:00:37 +05:30
expect(response).to include_pagination_headers
2016-11-03 12:29:30 +05:30
expect(json_response).to be_an Array
expect(json_response.first['name']).not_to be_nil
2016-09-13 17:45:13 +05:30
end
2016-11-03 12:29:30 +05:30
end
2017-08-17 22:00:37 +05:30
context 'requesting gitlab-ci-yml for Ruby' do
2016-11-03 12:29:30 +05:30
it 'adds a disclaimer on the top' do
2017-08-17 22:00:37 +05:30
get api('/templates/gitlab_ci_ymls/Ruby')
2016-11-03 12:29:30 +05:30
2020-04-08 14:13:33 +05:30
expect(response).to have_gitlab_http_status(:ok)
2016-11-03 12:29:30 +05:30
expect(json_response['content']).to start_with("# This file is a template,")
end
end
2017-08-17 22:00:37 +05:30
context 'the License Template Entity' do
2017-09-10 17:25:29 +05:30
before do
get api('/templates/licenses/mit')
end
2016-11-03 12:29:30 +05:30
it 'returns a license template' do
2020-04-08 14:13:33 +05:30
expect(response).to have_gitlab_http_status(:ok)
2018-11-20 20:47:30 +05:30
2016-11-03 12:29:30 +05:30
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/')
2021-03-11 19:13:27 +05:30
# This was dropped:
# https://github.com/github/choosealicense.com/commit/325806b42aa3d5b78e84120327ec877bc936dbdd#diff-66df8f1997786f7052d29010f2cbb4c66391d60d24ca624c356acc0ab986f139
expect(json_response['source_url']).to be_nil
2017-08-17 22:00:37 +05:30
expect(json_response['description']).to include('A short and simple permissive license with conditions')
2016-11-03 12:29:30 +05:30
expect(json_response['conditions']).to eq(%w[include-copyright])
expect(json_response['permissions']).to eq(%w[commercial-use modifications distribution private-use])
2018-05-09 12:01:36 +05:30
expect(json_response['limitations']).to eq(%w[liability warranty])
2017-08-17 22:00:37 +05:30
expect(json_response['content']).to include('MIT License')
2016-11-03 12:29:30 +05:30
end
end
2016-06-22 15:30:34 +05:30
2017-08-17 22:00:37 +05:30
context 'GET templates/licenses' do
2016-11-03 12:29:30 +05:30
it 'returns a list of available license templates' do
2017-08-17 22:00:37 +05:30
get api('/templates/licenses')
2016-06-22 15:30:34 +05:30
2020-04-08 14:13:33 +05:30
expect(response).to have_gitlab_http_status(:ok)
2017-08-17 22:00:37 +05:30
expect(response).to include_pagination_headers
2016-11-03 12:29:30 +05:30
expect(json_response).to be_an Array
2021-03-11 19:13:27 +05:30
expect(json_response.size).to eq(13)
2016-11-03 12:29:30 +05:30
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
2017-08-17 22:00:37 +05:30
get api('/templates/licenses?popular=1')
2016-11-03 12:29:30 +05:30
2020-04-08 14:13:33 +05:30
expect(response).to have_gitlab_http_status(:ok)
2017-08-17 22:00:37 +05:30
expect(response).to include_pagination_headers
2016-09-13 17:45:13 +05:30
expect(json_response).to be_an Array
2016-11-03 12:29:30 +05:30
expect(json_response.size).to eq(3)
expect(json_response.map { |l| l['key'] }).to include('apache-2.0')
2016-09-13 17:45:13 +05:30
end
2016-06-22 15:30:34 +05:30
end
end
2016-11-03 12:29:30 +05:30
end
2016-06-22 15:30:34 +05:30
2017-08-17 22:00:37 +05:30
context 'GET templates/licenses/:name' do
2016-11-03 12:29:30 +05:30
context 'with :project and :fullname given' do
before do
2017-08-17 22:00:37 +05:30
get api("/templates/licenses/#{license_type}?project=My+Awesome+Project&fullname=Anton+#{license_type.upcase}")
2016-11-03 12:29:30 +05:30
end
2016-06-22 15:30:34 +05:30
2016-11-03 12:29:30 +05:30
context 'for the mit license' do
let(:license_type) { 'mit' }
it 'returns the license text' do
2017-08-17 22:00:37 +05:30
expect(json_response['content']).to include('MIT License')
2016-11-03 12:29:30 +05:30
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
2020-04-08 14:13:33 +05:30
expect(response).to have_gitlab_http_status(:not_found)
2016-09-13 17:45:13 +05:30
end
2016-06-22 15:30:34 +05:30
end
end
2016-11-03 12:29:30 +05:30
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 api('/templates/licenses/mit', user)
2016-06-22 15:30:34 +05:30
2020-04-08 14:13:33 +05:30
expect(response).to have_gitlab_http_status(:ok)
2016-11-03 12:29:30 +05:30
expect(json_response['content']).to include("Copyright (c) #{Time.now.year} #{user.name}")
end
2016-09-13 17:45:13 +05:30
end
2016-06-22 15:30:34 +05:30
end
end
end