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:
authorMayra Cabrera <mcabrera@gitlab.com>2018-04-06 22:48:17 +0300
committerMayra Cabrera <mcabrera@gitlab.com>2018-04-07 06:28:44 +0300
commit5bc58bac2678aed9c8b2318f9f4d4825baa2b110 (patch)
treef35313fd689afa287f6c93a3d78ce8a0d61cc71c /spec
parentd6450717abefbe4dbf891cb4d285f6c84e44f168 (diff)
Handle limit for datetime attributes on MySQL
The TIMESTAMP data type is used for values that contain both date and time parts. TIMESTAMP has a range of '1970-01-01 00:00:01' UTC to '2038-01-19 03:14:07' UTC. A Forever lib class was included to handle future dates for PostgreSQL and MySQL, also changes were made to DeployToken to enforce Forever.date Also removes extra conditional from JwtController
Diffstat (limited to 'spec')
-rw-r--r--spec/features/projects/settings/repository_settings_spec.rb14
-rw-r--r--spec/lib/forever_spec.rb21
-rw-r--r--spec/models/deploy_token_spec.rb38
-rw-r--r--spec/services/deploy_tokens/create_service_spec.rb4
4 files changed, 62 insertions, 15 deletions
diff --git a/spec/features/projects/settings/repository_settings_spec.rb b/spec/features/projects/settings/repository_settings_spec.rb
index 2528c7f437d..f2c371b7df5 100644
--- a/spec/features/projects/settings/repository_settings_spec.rb
+++ b/spec/features/projects/settings/repository_settings_spec.rb
@@ -90,8 +90,7 @@ feature 'Repository settings' do
end
context 'Deploy tokens' do
- let(:deploy_token_project) { create(:project_deploy_token, project: project) }
- let!(:deploy_token) { deploy_token_project.deploy_token }
+ let!(:deploy_token) { create(:deploy_token, projects: [project]) }
before do
stub_container_registry_config(enabled: true)
@@ -115,17 +114,6 @@ feature 'Repository settings' do
expect(page).to have_content('Your new project deploy token has been created')
end
-
- scenario 'revoke a deploy token', :js do
- within('.deploy-tokens') do
- click_link 'Revoke'
- click_link "Revoke #{deploy_token.name}"
-
- expect(page).not_to have_content(deploy_token.name)
- expect(page).not_to have_content('read_repository')
- expect(page).not_to have_content('read_registry')
- end
- end
end
end
end
diff --git a/spec/lib/forever_spec.rb b/spec/lib/forever_spec.rb
new file mode 100644
index 00000000000..cf40c467c72
--- /dev/null
+++ b/spec/lib/forever_spec.rb
@@ -0,0 +1,21 @@
+require 'spec_helper'
+
+describe Forever do
+ describe '.date' do
+ subject { described_class.date }
+
+ context 'when using PostgreSQL' do
+ it 'should return Postgresql future date' do
+ allow(Gitlab::Database).to receive(:postgresql?).and_return(true)
+ expect(subject).to eq(described_class::POSTGRESQL_DATE)
+ end
+ end
+
+ context 'when using MySQL' do
+ it 'should return MySQL future date' do
+ allow(Gitlab::Database).to receive(:postgresql?).and_return(false)
+ expect(subject).to eq(described_class::MYSQL_DATE)
+ end
+ end
+ end
+end
diff --git a/spec/models/deploy_token_spec.rb b/spec/models/deploy_token_spec.rb
index 1adc049ca58..5a15c23def4 100644
--- a/spec/models/deploy_token_spec.rb
+++ b/spec/models/deploy_token_spec.rb
@@ -93,4 +93,42 @@ describe DeployToken do
end
end
end
+
+ describe '#expires_at' do
+ context 'when using Forever.date' do
+ let(:deploy_token) { create(:deploy_token, expires_at: nil) }
+
+ it 'should return nil' do
+ expect(deploy_token.expires_at).to be_nil
+ end
+ end
+
+ context 'when using a personalized date' do
+ let(:expires_at) { Date.today + 5.months }
+ let(:deploy_token) { create(:deploy_token, expires_at: expires_at) }
+
+ it 'should return the personalized date' do
+ expect(deploy_token.expires_at).to eq(expires_at)
+ end
+ end
+ end
+
+ describe '#expires_at=' do
+ context 'when passing nil' do
+ let(:deploy_token) { create(:deploy_token, expires_at: nil) }
+
+ it 'should assign Forever.date' do
+ expect(deploy_token.read_attribute(:expires_at)).to eq(Forever.date)
+ end
+ end
+
+ context 'when passign a value' do
+ let(:expires_at) { Date.today + 5.months }
+ let(:deploy_token) { create(:deploy_token, expires_at: expires_at) }
+
+ it 'should respect the value' do
+ expect(deploy_token.read_attribute(:expires_at)).to eq(expires_at)
+ end
+ end
+ end
end
diff --git a/spec/services/deploy_tokens/create_service_spec.rb b/spec/services/deploy_tokens/create_service_spec.rb
index 2e02b7a28b5..3a2bbf1ecd1 100644
--- a/spec/services/deploy_tokens/create_service_spec.rb
+++ b/spec/services/deploy_tokens/create_service_spec.rb
@@ -25,8 +25,8 @@ describe DeployTokens::CreateService do
context 'when expires at date is not passed' do
let(:deploy_token_params) { attributes_for(:deploy_token, expires_at: '') }
- it 'should set FOREVER date' do
- expect(subject.expires_at).to eq(DeployToken::FOREVER)
+ it 'should set Forever.date' do
+ expect(subject.read_attribute(:expires_at)).to eq(Forever.date)
end
end