Añade el plugin Redmine Git Hosting 5.0.0
This commit is contained in:
parent
cfa0d58b18
commit
a3bddad233
458 changed files with 30396 additions and 1 deletions
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
Loading…
Add table
Add a link
Reference in a new issue