+ describe 'validation' do
+ context "domain begin with dash" do
+ let(:params) do{
+ :server => '-pgp.mit.edu',
+ } end
+ it 'fails' do
+ expect { subject.call } .to raise_error(/does not match/)
+ end
+ end
+
+ context "domain begin with dot" do
+ let(:params) do{
+ :server => '.pgp.mit.edu',
+ } end
+ it 'fails' do
+ expect { subject.call } .to raise_error(/does not match/)
+ end
+ end
+
+ context "domain end with dot" do
+ let(:params) do{
+ :server => "pgp.mit.edu.",
+ } end
+ it 'fails' do
+ expect { subject.call } .to raise_error(/does not match/)
+ end
+ end
+ context "exceed character url" do
+ let :params do
+ {
+ :server => 'hkp://pgpiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii.mit.edu'
+ }
+ end
+ it 'fails' do
+ expect { subject.call }.to raise_error(/does not match/)
+ end
+ end
+ context "incorrect port number url" do
+ let :params do
+ {
+ :server => 'hkp://pgp.mit.edu:8008080'
+ }
+ end
+ it 'fails' do
+ expect { subject.call }.to raise_error(/does not match/)
+ end
+ end
+ context "incorrect protocol for url" do
+ let :params do
+ {
+ :server => 'abc://pgp.mit.edu:80'
+ }
+ end
+ it 'fails' do
+ expect { subject.call }.to raise_error(/does not match/)
+ end
+ end
+ context "missing port number url" do
+ let :params do
+ {
+ :server => 'hkp://pgp.mit.edu:'
+ }
+ end
+ it 'fails' do
+ expect { subject.call }.to raise_error(/does not match/)
+ end
+ end
+ context "url ending with a dot" do
+ let :params do
+ {
+ :server => 'hkp://pgp.mit.edu.'
+ }
+ end
+ it 'fails' do
+ expect { subject.call }.to raise_error(/does not match/)
+ end
+ end
+ context "url begin with a dash" do
+ let(:params) do{
+ :server => "hkp://-pgp.mit.edu",
+ } end
+ it 'fails' do
+ expect { subject.call }.to raise_error(/does not match/)
+ end
+ end
+ context 'invalid key' do
+ let :title do
+ 'Out of rum. Why? Why are we out of rum?'
+ end
+ it 'fails' do
+ expect { subject.call }.to raise_error(/does not match/)
+ end
+ end
+
+ context 'invalid source' do
+ let :params do {
+ :source => 'afp://puppetlabs.com/key.gpg',
+ } end
+ it 'fails' do
+ expect { subject.call }.to raise_error(/does not match/)
+ end
+ end
+
+ context 'invalid content' do
+ let :params do {
+ :content => [],
+ } end
+ it 'fails' do
+ expect { subject.call }.to raise_error(/is not a string/)
+ end
+ end
+
+ context 'invalid server' do
+ let :params do {
+ :server => 'two bottles of rum',
+ } end
+ it 'fails' do
+ expect { subject.call }.to raise_error(/does not match/)
+ end
+ end