diff options
Diffstat (limited to 'spec/models/clusters/agent_spec.rb')
-rw-r--r-- | spec/models/clusters/agent_spec.rb | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/spec/models/clusters/agent_spec.rb b/spec/models/clusters/agent_spec.rb new file mode 100644 index 00000000000..bb1fc021e66 --- /dev/null +++ b/spec/models/clusters/agent_spec.rb @@ -0,0 +1,35 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Clusters::Agent do + subject { create(:cluster_agent) } + + it { is_expected.to belong_to(:project).class_name('::Project') } + it { is_expected.to have_many(:agent_tokens).class_name('Clusters::AgentToken') } + + it { is_expected.to validate_presence_of(:name) } + it { is_expected.to validate_length_of(:name).is_at_most(63) } + it { is_expected.to validate_uniqueness_of(:name).scoped_to(:project_id) } + + describe 'validation' do + describe 'name validation' do + it 'rejects names that do not conform to RFC 1123', :aggregate_failures do + %w[Agent agentA agentAagain gent- -agent agent.a agent/a agent>a].each do |name| + agent = build(:cluster_agent, name: name) + + expect(agent).not_to be_valid + expect(agent.errors[:name]).to eq(["can contain only lowercase letters, digits, and '-', but cannot start or end with '-'"]) + end + end + + it 'accepts valid names', :aggregate_failures do + %w[agent agent123 agent-123].each do |name| + agent = build(:cluster_agent, name: name) + + expect(agent).to be_valid + end + end + end + end +end |