This allows us to search for a cert, and we use the searched-for
term as the cert name (for the wrapper, not the actual cert object),
rather than the real cert name.

This allows us to use symbolic names like 'ca', as we're currently doing.

Signed-off-by: Luke Kanies <[email protected]>
---
 lib/puppet/indirector/certificate/rest.rb       |    6 ++++
 spec/integration/indirector/certificate/rest.rb |    4 ++-
 spec/unit/indirector/certificate/rest.rb        |   34 +++++++++++++++++++++++
 3 files changed, 43 insertions(+), 1 deletions(-)

diff --git a/lib/puppet/indirector/certificate/rest.rb 
b/lib/puppet/indirector/certificate/rest.rb
index 5999830..6f47c25 100644
--- a/lib/puppet/indirector/certificate/rest.rb
+++ b/lib/puppet/indirector/certificate/rest.rb
@@ -6,4 +6,10 @@ class Puppet::SSL::Certificate::Rest < Puppet::Indirector::REST
 
     use_server_setting(:ca_server)
     use_port_setting(:ca_port)
+
+    def find(request)
+        return nil unless result = super
+        result.name = request.key unless result.name == request.key
+        result
+    end
 end
diff --git a/spec/integration/indirector/certificate/rest.rb 
b/spec/integration/indirector/certificate/rest.rb
index 3ebd1e5..71ef443 100755
--- a/spec/integration/indirector/certificate/rest.rb
+++ b/spec/integration/indirector/certificate/rest.rb
@@ -64,6 +64,8 @@ describe "Certificate REST Terminus" do
 
         # There's no good '==' method on certs.
         result.content.to_s.should == @host.certificate.content.to_s
-        result.name.should == @host.certificate.name
+
+        # also make sure it uses the provided name, rather than the internal 
one.
+        result.name.should == "bar"
     end
 end
diff --git a/spec/unit/indirector/certificate/rest.rb 
b/spec/unit/indirector/certificate/rest.rb
index d5959c4..a325754 100755
--- a/spec/unit/indirector/certificate/rest.rb
+++ b/spec/unit/indirector/certificate/rest.rb
@@ -20,4 +20,38 @@ describe Puppet::SSL::Certificate::Rest do
     it "should set port_setting to :ca_port" do
         Puppet::SSL::Certificate::Rest.port_setting.should == :ca_port
     end
+
+    it "should make sure found certificates have their names set to the search 
string" do
+        terminus = Puppet::SSL::Certificate::Rest.new
+
+        # This has 'boo.com' in the CN
+        cert_string = "-----BEGIN CERTIFICATE-----
+MIICPzCCAaigAwIBAgIBBDANBgkqhkiG9w0BAQUFADAWMRQwEgYDVQQDDAtidWNr
+eS5sb2NhbDAeFw0wOTA5MTcxNzI1MzJaFw0xNDA5MTYxNzI1MzJaMBIxEDAOBgNV
+BAMMB2Jvby5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAKG9B+DkTCNh
+F5xHchNDfnbC9NzWKM600oxrr84pgUVAG6B2wAZcdfoEtXszhsY9Jzpwqkvxk4Mx
+AbYqo9+TCi4UoiH6e+vAKOOJD3DHrlf+/RW4hGtyaI41DBhf4+B4/oFz5PH9mvKe
+NSfHFI/yPW+1IXYjxKLQNwF9E7q3JbnzAgMBAAGjgaAwgZ0wOAYJYIZIAYb4QgEN
+BCsWKVB1cHBldCBSdWJ5L09wZW5TU0wgR2VuZXJhdGVkIENlcnRpZmljYXRlMAwG
+A1UdEwEB/wQCMAAwHQYDVR0OBBYEFJOxEUeyf4cNOBmf9zIaE1JTuNdLMAsGA1Ud
+DwQEAwIFoDAnBgNVHSUEIDAeBggrBgEFBQcDAQYIKwYBBQUHAwIGCCsGAQUFBwME
+MA0GCSqGSIb3DQEBBQUAA4GBAFTJxKprMg6tfhGnvEvURPmlJrINn9c2b5Y4AGYp
+tO86PFFkWw/EIJvvJzbj3s+Butr+eUo//+f1xxX7UCwwGqGxKqjtVS219oU/wkx8
+h7rW4Xk7MrLl0auSS1p4wLcAMm+ZImf94+j8Cj+tkr8eGozZceRV13b8+EkdaE3S
+rn/G
+-----END CERTIFICATE-----
+"
+
+        network = stub 'network'
+        terminus.stubs(:network).returns network
+
+        response = stub 'response', :code => "200", :body => cert_string
+        response.stubs(:[]).with('content-type').returns "text/plain"
+        network.expects(:get).returns response
+
+        request = Puppet::Indirector::Request.new(:certificate, :find, 
"foo.com")
+        result = terminus.find(request)
+        result.should_not be_nil
+        result.name.should == "foo.com"
+    end
 end
-- 
1.6.1


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Puppet Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/puppet-dev?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to