From f27f974c90d2d19d41f78592843d993f2e991488 Mon Sep 17 00:00:00 2001 From: Nils Caspar Date: Thu, 20 Mar 2014 12:44:36 +0100 Subject: [PATCH] Normalize it all --- app/models/casino/service_ticket.rb | 5 ++--- spec/model/service_ticket_spec.rb | 6 ++++++ 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/app/models/casino/service_ticket.rb b/app/models/casino/service_ticket.rb index 54c5c43d..80842317 100644 --- a/app/models/casino/service_ticket.rb +++ b/app/models/casino/service_ticket.rb @@ -21,9 +21,8 @@ def self.cleanup_consumed_hard def service=(service) - unencoded_service = Addressable::URI.unencode(service) - encoded_service = Addressable::URI.encode(unencoded_service) - super(encoded_service) + normalized_encoded_service = Addressable::URI.parse(service).normalize.to_str + super(normalized_encoded_service) end diff --git a/spec/model/service_ticket_spec.rb b/spec/model/service_ticket_spec.rb index 49980816..2f2fbd73 100644 --- a/spec/model/service_ticket_spec.rb +++ b/spec/model/service_ticket_spec.rb @@ -140,5 +140,11 @@ unconsumed_ticket.service = unconsumed_ticket.service unconsumed_ticket.service.should eq('https://example.org/this%20is%20a%20test/j%C3%B6.png') end + + it 'does correctly reencode slashes' do + unconsumed_ticket.service = 'https://example.com/login?os_destination=http%3A%2F%2Fexample.com%2Fdisplay%2FTesting%2F%3Fa%3D1%26b%3D2' + unconsumed_ticket.service = unconsumed_ticket.service + unconsumed_ticket.service.should eq('https://example.com/login?os_destination=http://example.com/display/Testing/?a=1%26b=2') + end end end