1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130
|
# frozen_string_literal: true
require 'spec_helper'
RSpec.describe 'Infrastructure Registry', feature_category: :package_registry do
let_it_be(:user) { create(:user) }
let_it_be(:group) { create(:group) }
let_it_be(:project) { create(:project, :public, group: group) }
context 'when user is not signed in' do
before do
visit_group_infrastructure_registry
end
it 'returns 200' do
expect(status_code).to eq(200)
end
context 'when there are modules' do
let_it_be(:terraform_module) do
create(:terraform_module_package, project: project, created_at: 1.day.ago, version: '1.0.0')
end
it 'does not allow you to delete package', :js do
expect(page).to have_button('Remove package', disabled: true)
end
end
end
context 'when user is signed in' do
before do
sign_in(user)
end
context 'when user is not a group member' do
before do
visit_group_infrastructure_registry
end
it 'returns 200' do
expect(status_code).to eq(200)
end
context 'when there are modules' do
let_it_be(:terraform_module) do
create(:terraform_module_package, project: project, created_at: 1.day.ago, version: '1.0.0')
end
it 'does not allow you to delete package', :js do
expect(page).to have_button('Remove package', disabled: true)
end
end
end
context 'when user is a group member' do
before_all do
group.add_maintainer(user)
end
context 'when packages registry is not enabled' do
before do
stub_config(packages: { enabled: false })
end
it 'returns 404' do
visit_group_infrastructure_registry
expect(status_code).to eq(404)
end
end
context 'when packages registry is enabled', :js do
before do
visit_group_infrastructure_registry
end
context 'when there are modules' do
let_it_be(:terraform_module) do
create(:terraform_module_package, project: project, created_at: 1.day.ago, version: '1.0.0')
end
context 'and there is more than one' do
let_it_be(:terraform_module2) do
create(:terraform_module_package, project: project, created_at: 2.days.ago, version: '2.0.0')
end
let_it_be(:packages) { [terraform_module, terraform_module2] }
it_behaves_like 'packages list'
end
describe 'details link' do
it 'navigates to the correct url' do
page.within(packages_table_selector) do
click_link terraform_module.name
end
expect(page).to have_current_path(project_infrastructure_registry_path(terraform_module.project,
terraform_module))
expect(page).to have_css('.packages-app h1[data-testid="page-heading"]', text: terraform_module.name)
expect(page).to have_content('Provision instructions')
expect(page).to have_content('Registry setup')
end
end
context 'when deleting a package' do
it 'allows you to delete a module', :aggregate_failures do
# this is still using the package copy in the UI too
click_button('Remove package')
click_button('Permanently delete')
expect(page).to have_content 'Package deleted successfully'
expect(page).not_to have_content(terraform_module.name)
end
end
end
it 'displays the empty message' do
expect(page).to have_content('You have no Terraform modules in your group')
end
end
end
end
def visit_group_infrastructure_registry
visit group_infrastructure_registry_index_path(group)
end
end
|