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 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152
|
# frozen_string_literal: true
require 'spec_helper'
RSpec.describe 'User creates a project', :js, feature_category: :groups_and_projects do
include ListboxHelpers
let(:user) { create(:user) }
before do
sign_in(user)
create(:personal_key, user: user)
end
it 'creates a new project' do
visit(new_project_path)
click_link 'Create blank project'
fill_in(:project_name, with: 'Empty')
expect(page).to have_checked_field 'Initialize repository with a README'
uncheck 'Initialize repository with a README'
page.within('#content-body') do
click_button('Create project')
end
project = Project.last
expect(page).to have_current_path(project_path(project), ignore_query: true)
expect(page).to have_content('Empty')
expect(page).to have_content('git init')
expect(page).to have_content('git remote')
expect(page).to have_content(project.url_to_repo)
end
it 'creates a new project that is not blank' do
visit(new_project_path)
click_link 'Create blank project'
fill_in(:project_name, with: 'With initial commits')
expect(page).to have_checked_field 'Initialize repository with a README'
expect(page).to have_unchecked_field 'Enable Static Application Security Testing (SAST)'
check 'Enable Static Application Security Testing (SAST)'
page.within('#content-body') do
click_button('Create project')
end
project = Project.last
expect(page).to have_current_path(project_path(project), ignore_query: true)
expect(page).to have_content('With initial commits')
expect(page).to have_content('Configure SAST in `.gitlab-ci.yml`, creating this file if it does not already exist')
expect(page).to have_content('README.md Initial commit')
end
context 'when creating a project with SHA256 repository' do
let(:sha256_field) { 'Use SHA-256 for repository hashing algorithm' }
it 'creates a new project' do
visit(new_project_path)
click_link 'Create blank project'
click_button 'Experimental settings'
fill_in(:project_name, with: 'With initial commits')
expect(page).to have_checked_field 'Initialize repository with a README'
expect(page).to have_unchecked_field sha256_field
check sha256_field
page.within('#content-body') do
click_button('Create project')
end
project = Project.last
expect(page).to have_current_path(project_path(project), ignore_query: true)
expect(page).to have_content('With initial commits')
end
context 'when "support_sha256_repositories" feature flag is disabled' do
before do
stub_feature_flags(support_sha256_repositories: false)
end
it 'does not display a SHA256 option' do
visit(new_project_path)
click_link 'Create blank project'
expect(page).not_to have_content(sha256_field)
end
end
end
context 'in a subgroup they do not own' do
let(:parent) { create(:group) }
let!(:subgroup) { create(:group, parent: parent) }
before do
parent.add_owner(user)
end
it 'creates a new project' do
visit(new_project_path)
click_link 'Create blank project'
fill_in :project_name, with: 'A Subgroup Project'
fill_in :project_path, with: 'a-subgroup-project'
click_on 'Pick a group or namespace'
select_listbox_item subgroup.full_path
click_button('Create project')
expect(page).to have_content("Project 'A Subgroup Project' was successfully created")
project = Project.last
expect(project.namespace).to eq(subgroup)
end
end
context 'in a group with DEVELOPER_MAINTAINER_PROJECT_ACCESS project_creation_level' do
let(:group) { create(:group, project_creation_level: ::Gitlab::Access::DEVELOPER_MAINTAINER_PROJECT_ACCESS) }
before do
group.add_developer(user)
end
it 'creates a new project' do
visit(new_project_path)
click_link 'Create blank project'
fill_in :project_name, with: 'a-new-project'
fill_in :project_path, with: 'a-new-project'
page.within('#content-body') do
click_button('Create project')
end
expect(page).to have_content("Project 'a-new-project' was successfully created")
project = Project.find_by(name: 'a-new-project')
expect(project.namespace).to eq(group)
end
end
end
|