Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2020-04-15 12:09:46 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2020-04-15 12:09:46 +0300
commit221b529789f4090341a825695aeb49b8df6dd11d (patch)
treec8843e4ca5ef1034752eb68712fcf338b24950db /spec/controllers
parent00a8c64ffd18e74df4b1cdeda7776b5221fddafe (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/controllers')
-rw-r--r--spec/controllers/groups/registry/repositories_controller_spec.rb119
-rw-r--r--spec/controllers/projects/static_site_editor_controller_spec.rb16
2 files changed, 91 insertions, 44 deletions
diff --git a/spec/controllers/groups/registry/repositories_controller_spec.rb b/spec/controllers/groups/registry/repositories_controller_spec.rb
index eadc3a7f739..a84664c6c04 100644
--- a/spec/controllers/groups/registry/repositories_controller_spec.rb
+++ b/spec/controllers/groups/registry/repositories_controller_spec.rb
@@ -7,6 +7,13 @@ describe Groups::Registry::RepositoriesController do
let_it_be(:guest) { create(:user) }
let_it_be(:group, reload: true) { create(:group) }
+ subject do
+ get :index, params: {
+ group_id: group,
+ format: format
+ }
+ end
+
before do
stub_container_registry_config(enabled: true)
group.add_owner(user)
@@ -15,51 +22,67 @@ describe Groups::Registry::RepositoriesController do
end
shared_examples 'renders a list of repositories' do
+ let_it_be(:repo) { create_project_with_repo(test_group) }
+
+ it 'returns a list of projects for json format' do
+ subject
+
+ expect(response).to have_gitlab_http_status(:ok)
+ expect(json_response).to be_kind_of(Array)
+ expect(json_response.first).to include(
+ 'id' => repo.id,
+ 'name' => repo.name
+ )
+ end
+ end
+
+ shared_examples 'renders correctly' do
context 'when user has access to registry' do
- it 'show index page' do
- expect(Gitlab::Tracking).not_to receive(:event)
+ let_it_be(:test_group) { group }
- get :index, params: {
- group_id: group
- }
+ context 'html format' do
+ let(:format) { :html }
- expect(response).to have_gitlab_http_status(:ok)
- end
+ it 'show index page' do
+ expect(Gitlab::Tracking).not_to receive(:event)
- it 'has the correct response schema' do
- get :index, params: {
- group_id: group,
- format: :json
- }
+ subject
- expect(response).to match_response_schema('registry/repositories')
- expect(response).to include_pagination_headers
+ expect(response).to have_gitlab_http_status(:ok)
+ end
end
- it 'returns a list of projects for json format' do
- project = create(:project, group: group)
- repo = create(:container_repository, project: project)
-
- get :index, params: {
- group_id: group,
- format: :json
- }
-
- expect(response).to have_gitlab_http_status(:ok)
- expect(json_response).to be_kind_of(Array)
- expect(json_response.first).to include(
- 'id' => repo.id,
- 'name' => repo.name
- )
- end
+ context 'json format' do
+ let(:format) { :json }
+
+ it 'has the correct response schema' do
+ subject
+
+ expect(response).to match_response_schema('registry/repositories')
+ expect(response).to include_pagination_headers
+ end
- it 'tracks the event' do
- expect(Gitlab::Tracking).to receive(:event).with(anything, 'list_repositories', {})
+ it_behaves_like 'renders a list of repositories'
- get :index, params: {
- group_id: group,
- format: :json
- }
+ it_behaves_like 'a gitlab tracking event', described_class.name, 'list_repositories'
+
+ context 'with project in subgroup' do
+ let_it_be(:test_group) { create(:group, parent: group ) }
+
+ it_behaves_like 'renders a list of repositories'
+
+ context 'with project in subgroup and group' do
+ let_it_be(:repo_in_test_group) { create_project_with_repo(test_group) }
+ let_it_be(:repo_in_group) { create_project_with_repo(group) }
+
+ it 'returns all the projects' do
+ subject
+
+ expect(json_response).to be_kind_of(Array)
+ expect(json_response.length).to eq 2
+ end
+ end
+ end
end
end
@@ -69,20 +92,30 @@ describe Groups::Registry::RepositoriesController do
sign_in(guest)
end
- it 'renders not found' do
- get :index, params: {
- group_id: group
- }
- expect(response).to have_gitlab_http_status(:not_found)
+ context 'json format' do
+ let(:format) { :json }
+
+ it_behaves_like 'returning response status', :not_found
+ end
+
+ context 'html format' do
+ let(:format) { :html }
+
+ it_behaves_like 'returning response status', :not_found
end
end
end
context 'GET #index' do
- it_behaves_like 'renders a list of repositories'
+ it_behaves_like 'renders correctly'
end
context 'GET #show' do
- it_behaves_like 'renders a list of repositories'
+ it_behaves_like 'renders correctly'
+ end
+
+ def create_project_with_repo(group)
+ project = create(:project, group: test_group)
+ create(:container_repository, project: project)
end
end
diff --git a/spec/controllers/projects/static_site_editor_controller_spec.rb b/spec/controllers/projects/static_site_editor_controller_spec.rb
index d1224bb75c0..f7c8848b8cf 100644
--- a/spec/controllers/projects/static_site_editor_controller_spec.rb
+++ b/spec/controllers/projects/static_site_editor_controller_spec.rb
@@ -26,7 +26,21 @@ describe Projects::StaticSiteEditorController do
end
end
- %w[guest developer maintainer].each do |role|
+ context 'as guest' do
+ let(:user) { create(:user) }
+
+ before do
+ project.add_guest(user)
+ sign_in(user)
+ get :show, params: default_params
+ end
+
+ it 'responds with 404 page' do
+ expect(response).to have_gitlab_http_status(:not_found)
+ end
+ end
+
+ %w[developer maintainer].each do |role|
context "as #{role}" do
let(:user) { create(:user) }