Añade el plugin Redmine Git Hosting 5.0.0

This commit is contained in:
Manuel Cillero 2021-03-20 13:29:16 +01:00
parent cfa0d58b18
commit a3bddad233
458 changed files with 30396 additions and 1 deletions

View file

@ -0,0 +1,82 @@
require File.expand_path('../spec_helper', __dir__)
describe GoRedirectorController do
def check_response_with_smart_http(repository, opts = {})
enable_go_url(repository)
yield
call_page(repository, opts[:status])
end
def check_response_without_smart_http(repository, opts = {})
disable_go_url(repository)
yield
call_page(repository, opts[:status])
end
def call_page(repository, status)
get :index, params: { repo_path: repository.redmine_repository_path }
expect(response.status).to eq status
end
def enable_go_url(repository)
repository.extra[:git_http] = true
repository.extra[:git_go] = true
repository.extra.save!
end
def disable_go_url(repository)
repository.extra[:git_http] = false
repository.extra[:git_go] = false
repository.extra.save!
end
def enable_public_repo(repository)
repository.extra[:public_repo] = true
repository.extra.save!
end
describe 'GET #index' do
context 'when project is public' do
let(:project) { FactoryBot.create(:project, is_public: true) }
let(:repository) { create_git_repository(project: project) }
let(:anonymous_user) { create_anonymous_user }
context 'and SmartHTTP is enabled' do
it 'renders 200' do
check_response_with_smart_http(repository, status: 200) { set_session_user(anonymous_user) }
end
end
context 'and SmartHTTP is disabled' do
it 'renders 403' do
check_response_without_smart_http(repository, status: 403) { set_session_user(anonymous_user) }
end
end
end
context 'when project is private' do
let(:project) { FactoryBot.create(:project, is_public: false) }
let(:repository) { create_git_repository(project: project) }
let(:anonymous_user) { create_anonymous_user }
context 'and SmartHTTP is enabled' do
it 'renders 403' do
check_response_with_smart_http(repository, status: 403) { set_session_user(anonymous_user) }
end
context 'when repository is public' do
it 'renders 200' do
enable_public_repo(repository)
check_response_with_smart_http(repository, status: 200) { set_session_user(anonymous_user) }
end
end
end
context 'and SmartHTTP is disabled' do
it 'renders 403' do
check_response_without_smart_http(repository, status: 403) { set_session_user(anonymous_user) }
end
end
end
end
end

View file

@ -0,0 +1,70 @@
require File.expand_path "#{File.dirname __FILE__}/../spec_helper"
require 'sshkey'
describe RepositoryDeploymentCredentialsController do
def self.skip_actions
['show']
end
include CrudControllerSpec::Base
def permissions
%i[manage_repository create_repository_deployment_credentials view_repository_deployment_credentials
edit_repository_deployment_credentials]
end
def create_object
FactoryBot.create(:repository_deployment_credential,
repository_id: @repository.id,
user_id: @member_user.id,
gitolite_public_key_id: FactoryBot.create(:gitolite_public_key,
user_id: @member_user.id,
key_type: 1,
key: SSHKey.generate.ssh_public_key).id)
end
def success_url
"/repositories/#{@repository.id}/edit?tab=repository_deployment_credentials"
end
def variable_for_index
:repository_deployment_credentials
end
def main_variable
:credential
end
def tested_klass
RepositoryDeploymentCredential
end
def valid_params_for_create
public_key = FactoryBot.create(:gitolite_public_key,
user_id: @member_user.id,
key_type: 1,
key: SSHKey.generate.ssh_public_key)
{ repository_deployment_credential: { gitolite_public_key_id: public_key.id, perm: 'RW+' } }
end
def invalid_params_for_create
{ repository_deployment_credential: { url: 'git@example.com:john_doe3/john_doe3/john_doe3.git', push_mode: 0 } }
end
def valid_params_for_update
{ id: @object.id, repository_deployment_credential: { perm: 'R' } }
end
def updated_attribute
:perm
end
def updated_attribute_value
'R'
end
def invalid_params_for_update
{ id: @object.id, repository_deployment_credential: { perm: '' } }
end
end

View file

@ -0,0 +1,59 @@
require File.expand_path "#{File.dirname __FILE__}/../spec_helper"
describe RepositoryGitConfigKeysController do
include CrudControllerSpec::Base
def permissions
%i[manage_repository create_repository_git_config_keys view_repository_git_config_keys edit_repository_git_config_keys]
end
def create_object
FactoryBot.create(:repository_git_config_key, repository_id: @repository.id)
end
def success_url
"/repositories/#{@repository.id}/edit?tab=repository_git_config_keys"
end
def variable_for_index
:repository_git_config_keys
end
def main_variable
:git_config_key
end
def tested_klass
RepositoryGitConfigKey
end
def valid_params_for_create
{ repository_git_config_key: { key: 'foo.bar1', value: 0, type: 'RepositoryGitConfigKey::GitConfig' } }
end
def invalid_params_for_create
{ repository_git_config_key: { key: '', value: 0 } }
end
def valid_params_for_update
{ id: @object.id, repository_git_config_key: { key: 'foo.bar1', value: 1 } }
end
def updated_attribute
:value
end
def updated_attribute_value
'1'
end
def invalid_params_for_update
{ id: @object.id, repository_git_config_key: { key: 'foo', value: 1 } }
end
private
def base_options
{ repository_id: @repository.id, type: 'git_keys' }.clone
end
end

View file

@ -0,0 +1,72 @@
require File.expand_path "#{File.dirname __FILE__}/../spec_helper"
describe RepositoryMirrorsController do
include CrudControllerSpec::Base
def permissions
%i[manage_repository create_repository_mirrors view_repository_mirrors edit_repository_mirrors push_repository_mirrors]
end
def create_object
FactoryBot.create(:repository_mirror, repository_id: @repository.id)
end
def success_url
"/repositories/#{@repository.id}/edit?tab=repository_mirrors"
end
def variable_for_index
:repository_mirrors
end
def main_variable
:mirror
end
def tested_klass
RepositoryMirror
end
def valid_params_for_create
{ repository_mirror: { url: 'ssh://git@example.com:22/john_doe2/john_doe2/john_doe2.git', push_mode: 0 } }
end
def invalid_params_for_create
{ repository_mirror: { url: 'git@example.com:john_doe3/john_doe3/john_doe3.git', push_mode: 0 } }
end
def valid_params_for_update
{ id: @object.id, repository_mirror: { url: 'ssh://git@redmine.example.org/project1/project2/project3/project14.git' } }
end
def updated_attribute
:url
end
def updated_attribute_value
'ssh://git@redmine.example.org/project1/project2/project3/project14.git'
end
def invalid_params_for_update
{ id: @object.id, repository_mirror: { url: 'git@example.com:john_doe3/john_doe3/john_doe3.git' } }
end
describe 'GET #push' do
context 'with sufficient permissions' do
it 'renders the :push view' do
set_session_user(@member_user)
get :push,
params: { repository_id: @repository.id, id: @object.id }
end
end
context 'with unsufficient permissions' do
it 'renders 403' do
set_session_user(@anonymous_user)
get :push,
params: { repository_id: @repository.id, id: @object.id }
check_status(403)
end
end
end
end

View file

@ -0,0 +1,53 @@
require File.expand_path "#{File.dirname __FILE__}/../spec_helper"
describe RepositoryPostReceiveUrlsController do
include CrudControllerSpec::Base
def permissions
%i[manage_repository create_repository_post_receive_urls view_repository_post_receive_urls edit_repository_post_receive_urls]
end
def create_object
FactoryBot.create(:repository_post_receive_url, repository_id: @repository.id)
end
def success_url
"/repositories/#{@repository.id}/edit?tab=repository_post_receive_urls"
end
def variable_for_index
:repository_post_receive_urls
end
def main_variable
:post_receive_url
end
def tested_klass
RepositoryPostReceiveUrl
end
def valid_params_for_create
{ repository_post_receive_url: { url: 'http://example.com', mode: :github } }
end
def invalid_params_for_create
{ repository_post_receive_url: { url: 'example.com', push_mode: 0 } }
end
def valid_params_for_update
{ id: @object.id, repository_post_receive_url: { url: 'http://example.com/toto.php' } }
end
def updated_attribute
:url
end
def updated_attribute_value
'http://example.com/toto.php'
end
def invalid_params_for_update
{ id: @object.id, repository_post_receive_url: { url: 'example.com' } }
end
end

View file

@ -0,0 +1,37 @@
require File.expand_path "#{File.dirname __FILE__}/../spec_helper"
require 'sshkey'
describe UsersController do
describe 'GET #edit' do
context 'with git hosting patch' do
let(:user) { create_admin_user }
let(:user_key) do
create_ssh_key(user_id: user.id,
title: 'user_key',
key: SSHKey.generate(comment: 'faker_user_key@john_doe').ssh_public_key,
key_type: 0)
end
let(:deploy_key) do
create_ssh_key(user_id: user.id,
title: 'deploy_key',
key: SSHKey.generate(comment: 'faker_deploy_key@john_doe').ssh_public_key,
key_type: 1)
end
it 'populates an array of gitolite_user_keys' do
set_session_user(user)
get :edit,
params: { id: user.id }
expect(assigns(:gitolite_user_keys)).to eq [user_key]
end
# it 'populates an array of gitolite_deploy_keys' do
# set_session_user(user)
# get :edit,
# params: { id: user.id }
# expect(assigns(:gitolite_deploy_keys)).to eq [deploy_key]
# end
end
end
end