public
Fork of NZKoz/koz-rails
Description: Koz's rails git-svn clone
Homepage: http://www.rubyonrails.org
Clone URL: git://github.com/eventualbuddha/koz-rails.git
Search Repo:
URI.decode site username/password. Closes #11169 [Ernesto Jimenez]


git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@8900 
5ecf4fe2-1ee6-0310-87b1-e25e094e27de
bitsweat (author)
Tue Feb 19 15:06:09 -0800 2008
commit  969e24e9c7a239993b515f783c6fd9e01d58c27b
tree    79262724491f5f66975ce57c6a650e483b21a43a
parent  0833ae16396d6803f383643aa559d00a52903d1f
...
204
205
206
207
208
 
 
209
210
211
...
204
205
206
 
 
207
208
209
210
211
0
@@ -204,8 +204,8 @@
0
           @site = nil
0
         else
0
           @site = create_site_uri_from(site)
0
- @user = @site.user if @site.user
0
- @password = @site.password if @site.password
0
+ @user = URI.decode(@site.user) if @site.user
0
+ @password = URI.decode(@site.password) if @site.password
0
         end
0
       end
0
 
...
76
77
78
79
80
 
 
81
82
83
...
76
77
78
 
 
79
80
81
82
83
0
@@ -76,8 +76,8 @@
0
     # Set URI for remote service.
0
     def site=(site)
0
       @site = site.is_a?(URI) ? site : URI.parse(site)
0
- @user = @site.user if @site.user
0
- @password = @site.password if @site.password
0
+ @user = URI.decode(@site.user) if @site.user
0
+ @password = URI.decode(@site.password) if @site.password
0
     end
0
 
0
     # Set user for remote service.
...
45
46
47
 
 
 
 
 
 
 
 
 
48
49
50
...
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
0
@@ -45,6 +45,15 @@
0
     assert_equal ["", "test123"], ActiveSupport::Base64.decode64(authorization[1]).split(":")[0..1]
0
   end
0
   
0
+ def test_authorization_header_with_decoded_credentials_from_url
0
+ @conn = ActiveResource::Connection.new("http://my%40email.com:%31%32%33@localhost")
0
+ authorization_header = @conn.send!(:authorization_header)
0
+ authorization = authorization_header["Authorization"].to_s.split
0
+
0
+ assert_equal "Basic", authorization[0]
0
+ assert_equal ["my@email.com", "123"], ActiveSupport::Base64.decode64(authorization[1]).split(":")[0..1]
0
+ end
0
+
0
   def test_authorization_header_explicitly_setting_username_and_password
0
     @authenticated_conn = ActiveResource::Connection.new("http://@localhost")
0
     @authenticated_conn.user = 'david'
...
103
104
105
 
 
 
 
 
 
 
106
107
108
...
103
104
105
106
107
108
109
110
111
112
113
114
115
0
@@ -103,6 +103,13 @@
0
     assert_nil actor.connection.password
0
   end
0
 
0
+ def test_credentials_from_site_are_decoded
0
+ actor = Class.new(ActiveResource::Base)
0
+ actor.site = 'http://my%40email.com:%31%32%33@cinema'
0
+ assert_equal("my@email.com", actor.user)
0
+ assert_equal("123", actor.password)
0
+ end
0
+
0
   def test_site_reader_uses_superclass_site_until_written
0
     # Superclass is Object so returns nil.
0
     assert_nil ActiveResource::Base.site

Comments

    No one has commented yet.