spec/akami/wsse_spec.rb in akami-1.2.2 vs spec/akami/wsse_spec.rb in akami-1.3.0

- old
+ new

@@ -4,257 +4,262 @@ describe Akami do let(:wsse) { Akami.wsse } it "contains the namespace for WS Security Secext" do - Akami::WSSE::WSE_NAMESPACE.should == + expect(Akami::WSSE::WSE_NAMESPACE).to eq( "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" + ) end it "contains the namespace for WS Security Utility" do - Akami::WSSE::WSU_NAMESPACE.should == + expect(Akami::WSSE::WSU_NAMESPACE).to eq( "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" + ) end it "contains the namespace for the PasswordText type" do - Akami::WSSE::PASSWORD_TEXT_URI.should == + expect(Akami::WSSE::PASSWORD_TEXT_URI).to eq( "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText" + ) end it "contains the namespace for the PasswordDigest type" do - Akami::WSSE::PASSWORD_DIGEST_URI.should == + expect(Akami::WSSE::PASSWORD_DIGEST_URI).to eq( "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordDigest" + ) end it "contains the namespace for Base64 Encoding type" do - Akami::WSSE::BASE64_URI.should == + expect(Akami::WSSE::BASE64_URI).to eq( "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary" + ) end describe "#credentials" do it "sets the username" do wsse.credentials "username", "password" - wsse.username.should == "username" + expect(wsse.username).to eq("username") end it "sets the password" do wsse.credentials "username", "password" - wsse.password.should == "password" + expect(wsse.password).to eq("password") end it "defaults to set digest to false" do wsse.credentials "username", "password" - wsse.should_not be_digest + expect(wsse).not_to be_digest end it "sets digest to true if specified" do wsse.credentials "username", "password", :digest - wsse.should be_digest + expect(wsse).to be_digest end end describe "#username" do it "sets the username" do wsse.username = "username" - wsse.username.should == "username" + expect(wsse.username).to eq("username") end end describe "#password" do it "sets the password" do wsse.password = "password" - wsse.password.should == "password" + expect(wsse.password).to eq("password") end end describe "#digest" do it "defaults to false" do - wsse.should_not be_digest + expect(wsse).not_to be_digest end it "specifies whether to use digest auth" do wsse.digest = true - wsse.should be_digest + expect(wsse).to be_digest end end describe "#to_xml" do context "with no credentials" do it "returns an empty String" do - wsse.to_xml.should == "" + expect(wsse.to_xml).to eq("") end end context "with only a username" do before { wsse.username = "username" } it "returns an empty String" do - wsse.to_xml.should == "" + expect(wsse.to_xml).to eq("") end end context "with only a password" do before { wsse.password = "password" } it "returns an empty String" do - wsse.to_xml.should == "" + expect(wsse.to_xml).to eq("") end end context "with credentials" do before { wsse.credentials "username", "password" } it "contains a wsse:Security tag" do namespace = "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" - wsse.to_xml.should include("<wsse:Security xmlns:wsse=\"#{namespace}\">") + expect(wsse.to_xml).to include("<wsse:Security xmlns:wsse=\"#{namespace}\">") end it "contains a wsu:Id attribute" do - wsse.to_xml.should include('<wsse:UsernameToken wsu:Id="UsernameToken-1"') + expect(wsse.to_xml).to include('<wsse:UsernameToken wsu:Id="UsernameToken-1"') end it "increments the wsu:Id attribute count" do - wsse.to_xml.should include('<wsse:UsernameToken wsu:Id="UsernameToken-1"') - wsse.to_xml.should include('<wsse:UsernameToken wsu:Id="UsernameToken-2"') + expect(wsse.to_xml).to include('<wsse:UsernameToken wsu:Id="UsernameToken-1"') + expect(wsse.to_xml).to include('<wsse:UsernameToken wsu:Id="UsernameToken-2"') end it "contains the WSE and WSU namespaces" do - wsse.to_xml.should include(Akami::WSSE::WSE_NAMESPACE, Akami::WSSE::WSU_NAMESPACE) + expect(wsse.to_xml).to include(Akami::WSSE::WSE_NAMESPACE, Akami::WSSE::WSU_NAMESPACE) end it "contains the username and password" do - wsse.to_xml.should include("username", "password") + expect(wsse.to_xml).to include("username", "password") end it "does not contain a wsse:Nonce tag" do - wsse.to_xml.should_not match(/<wsse:Nonce.*>.*<\/wsse:Nonce>/) + expect(wsse.to_xml).not_to match(/<wsse:Nonce.*>.*<\/wsse:Nonce>/) end it "does not contain a wsu:Created tag" do - wsse.to_xml.should_not match(/<wsu:Created>.*<\/wsu:Created>/) + expect(wsse.to_xml).not_to match(/<wsu:Created>.*<\/wsu:Created>/) end it "contains the PasswordText type attribute" do - wsse.to_xml.should include(Akami::WSSE::PASSWORD_TEXT_URI) + expect(wsse.to_xml).to include(Akami::WSSE::PASSWORD_TEXT_URI) end end context "with credentials and digest auth" do before { wsse.credentials "username", "password", :digest } it "contains the WSE and WSU namespaces" do - wsse.to_xml.should include(Akami::WSSE::WSE_NAMESPACE, Akami::WSSE::WSU_NAMESPACE) + expect(wsse.to_xml).to include(Akami::WSSE::WSE_NAMESPACE, Akami::WSSE::WSU_NAMESPACE) end it "contains the username" do - wsse.to_xml.should include("username") + expect(wsse.to_xml).to include("username") end it "does not contain the (original) password" do - wsse.to_xml.should_not include("password") + expect(wsse.to_xml).not_to include("password") end it "contains the Nonce base64 type attribute" do - wsse.to_xml.should include(Akami::WSSE::BASE64_URI) + expect(wsse.to_xml).to include(Akami::WSSE::BASE64_URI) end it "contains a wsu:Created tag" do created_at = Time.now Timecop.freeze created_at do - wsse.to_xml.should include("<wsu:Created>#{created_at.utc.xmlschema}</wsu:Created>") + expect(wsse.to_xml).to include("<wsu:Created>#{created_at.utc.xmlschema}</wsu:Created>") end end it "contains the PasswordDigest type attribute" do - wsse.to_xml.should include(Akami::WSSE::PASSWORD_DIGEST_URI) + expect(wsse.to_xml).to include(Akami::WSSE::PASSWORD_DIGEST_URI) end it "should reset the nonce every time" do created_at = Time.now Timecop.freeze created_at do nonce_regexp = /<wsse:Nonce.*>([^<]+)<\/wsse:Nonce>/ nonce_first = Base64.decode64(nonce_regexp.match(wsse.to_xml)[1]) nonce_second = Base64.decode64(nonce_regexp.match(wsse.to_xml)[1]) - nonce_first.should_not == nonce_second + expect(nonce_first).not_to eq(nonce_second) end end it "has contains a properly hashed password" do xml_header = Nokogiri::XML(wsse.to_xml) xml_header.remove_namespaces! nonce = Base64.decode64(xml_header.xpath('//Nonce').first.content) created_at = xml_header.xpath('//Created').first.content password_hash = Base64.decode64(xml_header.xpath('//Password').first.content) - password_hash.should == Digest::SHA1.digest((nonce + created_at + "password")) + expect(password_hash).to eq(Digest::SHA1.digest((nonce + created_at + "password"))) end end context "with #timestamp set to true" do before { wsse.timestamp = true } it "contains a wsse:Timestamp node" do - wsse.to_xml.should include('<wsu:Timestamp wsu:Id="Timestamp-1" ' + + expect(wsse.to_xml).to include('<wsu:Timestamp wsu:Id="Timestamp-1" ' + 'xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">') end it "contains a wsu:Created node defaulting to Time.now" do created_at = Time.now Timecop.freeze created_at do - wsse.to_xml.should include("<wsu:Created>#{created_at.utc.xmlschema}</wsu:Created>") + expect(wsse.to_xml).to include("<wsu:Created>#{created_at.utc.xmlschema}</wsu:Created>") end end it "contains a wsu:Expires node defaulting to Time.now + 60 seconds" do created_at = Time.now Timecop.freeze created_at do - wsse.to_xml.should include("<wsu:Expires>#{(created_at + 60).utc.xmlschema}</wsu:Expires>") + expect(wsse.to_xml).to include("<wsu:Expires>#{(created_at + 60).utc.xmlschema}</wsu:Expires>") end end end context "with #created_at" do before { wsse.created_at = Time.now + 86400 } it "contains a wsu:Created node with the given time" do - wsse.to_xml.should include("<wsu:Created>#{wsse.created_at.utc.xmlschema}</wsu:Created>") + expect(wsse.to_xml).to include("<wsu:Created>#{wsse.created_at.utc.xmlschema}</wsu:Created>") end it "contains a wsu:Expires node set to #created_at + 60 seconds" do - wsse.to_xml.should include("<wsu:Expires>#{(wsse.created_at + 60).utc.xmlschema}</wsu:Expires>") + expect(wsse.to_xml).to include("<wsu:Expires>#{(wsse.created_at + 60).utc.xmlschema}</wsu:Expires>") end end context "with #expires_at" do before { wsse.expires_at = Time.now + 86400 } it "contains a wsu:Created node defaulting to Time.now" do created_at = Time.now Timecop.freeze created_at do - wsse.to_xml.should include("<wsu:Created>#{created_at.utc.xmlschema}</wsu:Created>") + expect(wsse.to_xml).to include("<wsu:Created>#{created_at.utc.xmlschema}</wsu:Created>") end end it "contains a wsu:Expires node set to the given time" do - wsse.to_xml.should include("<wsu:Expires>#{wsse.expires_at.utc.xmlschema}</wsu:Expires>") + expect(wsse.to_xml).to include("<wsu:Expires>#{wsse.expires_at.utc.xmlschema}</wsu:Expires>") end end context "whith credentials and timestamp" do before do wsse.credentials "username", "password" wsse.timestamp = true end it "contains a wsu:Created node" do - wsse.to_xml.should include("<wsu:Created>") + expect(wsse.to_xml).to include("<wsu:Created>") end it "contains a wsu:Expires node" do - wsse.to_xml.should include("<wsu:Expires>") + expect(wsse.to_xml).to include("<wsu:Expires>") end it "contains the username and password" do - wsse.to_xml.should include("username", "password") + expect(wsse.to_xml).to include("username", "password") end end end end