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 -~----------~----~----~----~------~----~------~--~---
