summaryrefslogtreecommitdiff
path: root/spec/models/clusters/providers/aws_spec.rb
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2019-10-16 21:07:22 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2019-10-16 21:07:22 +0000
commite924e9e7cb9df21b3bc3d51d5f955da28ba3a225 (patch)
tree598ccb6f09e55ad06e628a90d27628f20ae693fe /spec/models/clusters/providers/aws_spec.rb
parent8e45d25f7dde6508839ffee719c0ddc2cf6b12d3 (diff)
downloadgitlab-ce-e924e9e7cb9df21b3bc3d51d5f955da28ba3a225.tar.gz
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/models/clusters/providers/aws_spec.rb')
-rw-r--r--spec/models/clusters/providers/aws_spec.rb76
1 files changed, 76 insertions, 0 deletions
diff --git a/spec/models/clusters/providers/aws_spec.rb b/spec/models/clusters/providers/aws_spec.rb
new file mode 100644
index 00000000000..ec8159a7ee0
--- /dev/null
+++ b/spec/models/clusters/providers/aws_spec.rb
@@ -0,0 +1,76 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe Clusters::Providers::Aws do
+ it { is_expected.to belong_to(:cluster) }
+ it { is_expected.to belong_to(:created_by_user) }
+
+ it { is_expected.to validate_length_of(:key_name).is_at_least(1).is_at_most(255) }
+ it { is_expected.to validate_length_of(:region).is_at_least(1).is_at_most(255) }
+ it { is_expected.to validate_length_of(:instance_type).is_at_least(1).is_at_most(255) }
+ it { is_expected.to validate_length_of(:security_group_id).is_at_least(1).is_at_most(255) }
+ it { is_expected.to validate_presence_of(:subnet_ids) }
+
+ include_examples 'provider status', :cluster_provider_aws
+
+ describe 'default_value_for' do
+ let(:provider) { build(:cluster_provider_aws) }
+
+ it "sets default values" do
+ expect(provider.region).to eq('us-east-1')
+ expect(provider.num_nodes).to eq(3)
+ expect(provider.instance_type).to eq('m5.large')
+ end
+ end
+
+ describe 'custom validations' do
+ subject { provider.valid? }
+
+ context ':num_nodes' do
+ let(:provider) { build(:cluster_provider_aws, num_nodes: num_nodes) }
+
+ context 'contains non-digit characters' do
+ let(:num_nodes) { 'A3' }
+
+ it { is_expected.to be_falsey }
+ end
+
+ context 'is blank' do
+ let(:num_nodes) { nil }
+
+ it { is_expected.to be_falsey }
+ end
+
+ context 'is less than 1' do
+ let(:num_nodes) { 0 }
+
+ it { is_expected.to be_falsey }
+ end
+
+ context 'is a positive integer' do
+ let(:num_nodes) { 3 }
+
+ it { is_expected.to be_truthy }
+ end
+ end
+ end
+
+ describe '#nullify_credentials' do
+ let(:provider) { create(:cluster_provider_aws, :scheduled) }
+
+ subject { provider.nullify_credentials }
+
+ before do
+ expect(provider.access_key_id).to be_present
+ expect(provider.secret_access_key).to be_present
+ end
+
+ it 'removes access_key_id and secret_access_key' do
+ subject
+
+ expect(provider.access_key_id).to be_nil
+ expect(provider.secret_access_key).to be_nil
+ end
+ end
+end