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
path: root/spec
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2019-11-30 00:06:13 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2019-11-30 00:06:13 +0300
commit839c080dd0976f19c274eee1331c47985490cd41 (patch)
treeda3af62d5469f80c7555f9e8df11c18049e0334e /spec
parent8263f6ee3131cdea3c6041785c32771a6af0b24f (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec')
-rw-r--r--spec/controllers/snippets_controller_spec.rb24
-rw-r--r--spec/features/snippets/show_spec.rb17
-rw-r--r--spec/javascripts/environments/environment_item_spec.js28
-rw-r--r--spec/policies/global_policy_spec.rb18
-rw-r--r--spec/views/layouts/header/_new_dropdown.haml_spec.rb10
5 files changed, 97 insertions, 0 deletions
diff --git a/spec/controllers/snippets_controller_spec.rb b/spec/controllers/snippets_controller_spec.rb
index 054d448c28d..510db4374c0 100644
--- a/spec/controllers/snippets_controller_spec.rb
+++ b/spec/controllers/snippets_controller_spec.rb
@@ -53,6 +53,16 @@ describe SnippetsController do
expect(response).to have_gitlab_http_status(200)
end
+
+ context 'when user is not allowed to create a personal snippet' do
+ let(:user) { create(:user, :external) }
+
+ it 'responds with status 404' do
+ get :new
+
+ expect(response).to have_gitlab_http_status(404)
+ end
+ end
end
context 'when not signed in' do
@@ -215,6 +225,20 @@ describe SnippetsController do
expect(snippet.description).to eq('Description')
end
+ context 'when user is not allowed to create a personal snippet' do
+ let(:user) { create(:user, :external) }
+
+ it 'responds with status 404' do
+ aggregate_failures do
+ expect do
+ create_snippet(visibility_level: Snippet::PUBLIC)
+ end.not_to change { Snippet.count }
+
+ expect(response).to have_gitlab_http_status(404)
+ end
+ end
+ end
+
context 'when the snippet description contains a file' do
include FileMoverHelpers
diff --git a/spec/features/snippets/show_spec.rb b/spec/features/snippets/show_spec.rb
index edf7d37fd6d..450e520e293 100644
--- a/spec/features/snippets/show_spec.rb
+++ b/spec/features/snippets/show_spec.rb
@@ -158,4 +158,21 @@ describe 'Snippet', :js do
subject { visit snippet_path(snippet) }
end
+
+ context 'when user cannot create snippets' do
+ let(:user) { create(:user, :external) }
+ let(:snippet) { create(:personal_snippet, :public) }
+
+ before do
+ sign_in(user)
+
+ visit snippet_path(snippet)
+
+ wait_for_requests
+ end
+
+ it 'does not show the "New Snippet" button' do
+ expect(page).not_to have_link('New snippet')
+ end
+ end
end
diff --git a/spec/javascripts/environments/environment_item_spec.js b/spec/javascripts/environments/environment_item_spec.js
index 4ab9a3998c0..09209ba2513 100644
--- a/spec/javascripts/environments/environment_item_spec.js
+++ b/spec/javascripts/environments/environment_item_spec.js
@@ -2,6 +2,32 @@ import { format } from 'timeago.js';
import Vue from 'vue';
import environmentItemComp from '~/environments/components/environment_item.vue';
+const tableData = {
+ name: {
+ title: 'Environment',
+ spacing: 'section-15',
+ },
+ deploy: {
+ title: 'Deployment',
+ spacing: 'section-10',
+ },
+ build: {
+ title: 'Job',
+ spacing: 'section-15',
+ },
+ commit: {
+ title: 'Commit',
+ spacing: 'section-20',
+ },
+ date: {
+ title: 'Updated',
+ spacing: 'section-10',
+ },
+ actions: {
+ spacing: 'section-25',
+ },
+};
+
describe('Environment item', () => {
let EnvironmentItem;
@@ -27,6 +53,7 @@ describe('Environment item', () => {
propsData: {
model: mockItem,
canReadEnvironment: true,
+ tableData,
},
}).$mount();
});
@@ -119,6 +146,7 @@ describe('Environment item', () => {
propsData: {
model: environment,
canReadEnvironment: true,
+ tableData,
},
}).$mount();
});
diff --git a/spec/policies/global_policy_spec.rb b/spec/policies/global_policy_spec.rb
index c18cc245468..f715ecae347 100644
--- a/spec/policies/global_policy_spec.rb
+++ b/spec/policies/global_policy_spec.rb
@@ -306,4 +306,22 @@ describe GlobalPolicy do
it { is_expected.not_to be_allowed(:use_slash_commands) }
end
end
+
+ describe 'create_personal_snippet' do
+ context 'when anonymous' do
+ let(:current_user) { nil }
+
+ it { is_expected.not_to be_allowed(:create_personal_snippet) }
+ end
+
+ context 'regular user' do
+ it { is_expected.to be_allowed(:create_personal_snippet) }
+ end
+
+ context 'when external' do
+ let(:current_user) { build(:user, :external) }
+
+ it { is_expected.not_to be_allowed(:create_personal_snippet) }
+ end
+ end
end
diff --git a/spec/views/layouts/header/_new_dropdown.haml_spec.rb b/spec/views/layouts/header/_new_dropdown.haml_spec.rb
index 26e429ac5d0..1a04ffed103 100644
--- a/spec/views/layouts/header/_new_dropdown.haml_spec.rb
+++ b/spec/views/layouts/header/_new_dropdown.haml_spec.rb
@@ -126,6 +126,16 @@ describe 'layouts/header/_new_dropdown' do
expect(rendered).to have_link('New snippet', href: new_snippet_path)
end
+
+ context 'when the user is not allowed to create snippets' do
+ let(:user) { create(:user, :external)}
+
+ it 'has no "New snippet" link' do
+ render
+
+ expect(rendered).not_to have_link('New snippet', href: new_snippet_path)
+ end
+ end
end
def stub_current_user(current_user)