summaryrefslogtreecommitdiffstats
path: root/spec
diff options
context:
space:
mode:
authorMarkus Roberts <Markus@reality.com>2009-08-14 19:41:54 -0700
committerJames Turnbull <james@lovedthanlost.net>2009-08-18 07:36:56 +1000
commita35e9bf918db0f6fca45d8b0b002a372cff4f982 (patch)
tree0bea447ae749c985c7e20d2c00a24fc7a7c0b000 /spec
parent299eadb7d903d250c8340049bd78611f0c705920 (diff)
downloadpuppet-a35e9bf918db0f6fca45d8b0b002a372cff4f982.tar.gz
puppet-a35e9bf918db0f6fca45d8b0b002a372cff4f982.tar.xz
puppet-a35e9bf918db0f6fca45d8b0b002a372cff4f982.zip
Fix for #2531; adds tests to confirm problem and related cases,
notes fixes specific issue by eliminating the specal case for opaque strings which caused them to be strings when everything else was arrays; adds nots and pending tests where FQDN support could be added but stops short of a full refactor.
Diffstat (limited to 'spec')
-rw-r--r--spec/unit/network/authstore.rb94
1 files changed, 94 insertions, 0 deletions
diff --git a/spec/unit/network/authstore.rb b/spec/unit/network/authstore.rb
new file mode 100644
index 000000000..224d67130
--- /dev/null
+++ b/spec/unit/network/authstore.rb
@@ -0,0 +1,94 @@
+#!/usr/bin/env ruby
+
+require File.dirname(__FILE__) + '/../../spec_helper'
+
+require 'puppet/network/authconfig'
+
+describe Puppet::Network::AuthStore::Declaration do
+
+ describe "when the pattern is simple numeric IP" do
+ before :each do
+ @ip = '100.101.99.98'
+ @declaration = Puppet::Network::AuthStore::Declaration.new(:allow,@ip)
+ end
+ it "should match the specified IP" do
+ @declaration.should be_match('www.testsite.org',@ip)
+ end
+ it "should not match other IPs" do
+ @declaration.should_not be_match('www.testsite.org','200.101.99.98')
+ end
+ end
+
+ describe "when the pattern is a numeric IP with a back reference" do
+ before :each do
+ @ip = '100.101.$1'
+ @declaration = Puppet::Network::AuthStore::Declaration.new(:allow,@ip).interpolate('12.34'.match /(.*)/)
+ end
+ it "should match an IP with the apropriate interpolation" do
+ @declaration.should be_match('www.testsite.org',@ip.sub(/\$1/,'12.34'))
+ end
+ it "should not match other IPs" do
+ @declaration.should_not be_match('www.testsite.org',@ip.sub(/\$1/,'66.34'))
+ end
+ end
+
+ describe "when the pattern is a PQDN" do
+ before :each do
+ @host = 'spirit.mars.nasa.gov'
+ @declaration = Puppet::Network::AuthStore::Declaration.new(:allow,@host)
+ end
+ it "should match the specified PQDN" do
+ pending "FQDN consensus"
+ @declaration.should be_match(@host,'200.101.99.98')
+ end
+ it "should not match a similar FQDN" do
+ pending "FQDN consensus"
+ @declaration.should_not be_match(@host+'.','200.101.99.98')
+ end
+ end
+
+ describe "when the pattern is a FQDN" do
+ before :each do
+ @host = 'spirit.mars.nasa.gov.'
+ @declaration = Puppet::Network::AuthStore::Declaration.new(:allow,@host)
+ end
+ it "should match the specified FQDN" do
+ pending "FQDN consensus"
+ @declaration.should be_match(@host,'200.101.99.98')
+ end
+ it "should not match a similar PQDN" do
+ pending "FQDN consensus"
+ @declaration.should_not be_match(@host[0..-2],'200.101.99.98')
+ end
+ end
+
+
+ describe "when the pattern is an opaque string with a back reference" do
+ before :each do
+ @host = 'c216f41a-f902-4bfb-a222-850dd957bebb'
+ @item = "/catalog/#{@host}"
+ @pattern = %{^/catalog/([^/]+)$}
+ @declaration = Puppet::Network::AuthStore::Declaration.new(:allow,'$1')
+ end
+ it "should match an IP with the apropriate interpolation" do
+ @declaration.interpolate(@item.match(@pattern)).should be_match(@host,'10.0.0.5')
+ end
+ end
+
+ describe "when comparing patterns" do
+ before :each do
+ @ip = Puppet::Network::AuthStore::Declaration.new(:allow,'127.0.0.1')
+ @host_name = Puppet::Network::AuthStore::Declaration.new(:allow,'www.hard_knocks.edu')
+ @opaque = Puppet::Network::AuthStore::Declaration.new(:allow,'hey_dude')
+ end
+ it "should consider ip addresses before host names" do
+ (@ip < @host_name).should be_true
+ end
+ it "should consider ip addresses before opaque strings" do
+ (@ip < @opaque).should be_true
+ end
+ it "should consider host_names before opaque strings" do
+ (@host_name < @opaque).should be_true
+ end
+ end
+end