ruby-openid 1.1.4 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (207) hide show
  1. data/INSTALL +0 -9
  2. data/README +21 -22
  3. data/UPGRADE +117 -0
  4. data/admin/runtests.rb +36 -0
  5. data/examples/README +13 -21
  6. data/examples/active_record_openid_store/README +8 -3
  7. data/examples/active_record_openid_store/XXX_add_open_id_store_to_db.rb +4 -8
  8. data/examples/active_record_openid_store/XXX_upgrade_open_id_store.rb +26 -0
  9. data/examples/active_record_openid_store/lib/association.rb +2 -0
  10. data/examples/active_record_openid_store/lib/openid_ar_store.rb +22 -47
  11. data/examples/active_record_openid_store/test/store_test.rb +78 -48
  12. data/examples/discover +46 -0
  13. data/examples/{rails_server → rails_openid}/README +0 -0
  14. data/examples/{rails_server → rails_openid}/Rakefile +0 -0
  15. data/examples/{rails_server → rails_openid}/app/controllers/application.rb +0 -0
  16. data/examples/rails_openid/app/controllers/consumer_controller.rb +115 -0
  17. data/examples/{rails_server → rails_openid}/app/controllers/login_controller.rb +10 -2
  18. data/examples/rails_openid/app/controllers/server_controller.rb +265 -0
  19. data/examples/{rails_server → rails_openid}/app/helpers/application_helper.rb +0 -0
  20. data/examples/{rails_server → rails_openid}/app/helpers/login_helper.rb +0 -0
  21. data/examples/{rails_server → rails_openid}/app/helpers/server_helper.rb +0 -0
  22. data/examples/rails_openid/app/views/consumer/index.rhtml +81 -0
  23. data/examples/rails_openid/app/views/consumer/start.rhtml +8 -0
  24. data/examples/{rails_server → rails_openid}/app/views/layouts/server.rhtml +0 -0
  25. data/examples/{rails_server → rails_openid}/app/views/login/index.rhtml +1 -1
  26. data/examples/rails_openid/app/views/server/decide.rhtml +26 -0
  27. data/examples/{rails_server → rails_openid}/config/boot.rb +0 -0
  28. data/examples/{rails_server → rails_openid}/config/database.yml +0 -0
  29. data/examples/{rails_server → rails_openid}/config/environment.rb +0 -0
  30. data/examples/{rails_server → rails_openid}/config/environments/development.rb +0 -0
  31. data/examples/{rails_server → rails_openid}/config/environments/production.rb +0 -0
  32. data/examples/{rails_server → rails_openid}/config/environments/test.rb +0 -0
  33. data/examples/{rails_server → rails_openid}/config/routes.rb +2 -1
  34. data/examples/{rails_server → rails_openid}/doc/README_FOR_APP +0 -0
  35. data/examples/{rails_server → rails_openid}/public/404.html +0 -0
  36. data/examples/{rails_server → rails_openid}/public/500.html +0 -0
  37. data/examples/{rails_server → rails_openid}/public/dispatch.cgi +0 -0
  38. data/examples/{rails_server → rails_openid}/public/dispatch.fcgi +0 -0
  39. data/examples/{rails_server → rails_openid}/public/dispatch.rb +0 -0
  40. data/examples/{rails_server → rails_openid}/public/favicon.ico +0 -0
  41. data/examples/rails_openid/public/images/openid_login_bg.gif +0 -0
  42. data/examples/{rails_server → rails_openid}/public/javascripts/controls.js +0 -0
  43. data/examples/{rails_server → rails_openid}/public/javascripts/dragdrop.js +0 -0
  44. data/examples/{rails_server → rails_openid}/public/javascripts/effects.js +0 -0
  45. data/examples/{rails_server → rails_openid}/public/javascripts/prototype.js +0 -0
  46. data/examples/{rails_server → rails_openid}/public/robots.txt +0 -0
  47. data/examples/{rails_server → rails_openid}/script/about +0 -0
  48. data/examples/{rails_server → rails_openid}/script/breakpointer +0 -0
  49. data/examples/{rails_server → rails_openid}/script/console +0 -0
  50. data/examples/{rails_server → rails_openid}/script/destroy +0 -0
  51. data/examples/{rails_server → rails_openid}/script/generate +0 -0
  52. data/examples/{rails_server → rails_openid}/script/performance/benchmarker +0 -0
  53. data/examples/{rails_server → rails_openid}/script/performance/profiler +0 -0
  54. data/examples/{rails_server → rails_openid}/script/plugin +0 -0
  55. data/examples/{rails_server → rails_openid}/script/process/reaper +0 -0
  56. data/examples/{rails_server → rails_openid}/script/process/spawner +0 -0
  57. data/examples/{rails_server → rails_openid}/script/process/spinner +0 -0
  58. data/examples/{rails_server → rails_openid}/script/runner +0 -0
  59. data/examples/{rails_server → rails_openid}/script/server +0 -0
  60. data/examples/{rails_server → rails_openid}/test/functional/login_controller_test.rb +0 -0
  61. data/examples/{rails_server → rails_openid}/test/functional/server_controller_test.rb +0 -0
  62. data/examples/{rails_server → rails_openid}/test/test_helper.rb +0 -0
  63. data/lib/{hmac.rb → hmac/hmac.rb} +0 -0
  64. data/lib/{hmac-sha1.rb → hmac/sha1.rb} +1 -1
  65. data/lib/{hmac-sha2.rb → hmac/sha2.rb} +1 -1
  66. data/lib/openid/association.rb +213 -73
  67. data/lib/openid/consumer/associationmanager.rb +338 -0
  68. data/lib/openid/consumer/checkid_request.rb +175 -0
  69. data/lib/openid/consumer/discovery.rb +480 -0
  70. data/lib/openid/consumer/discovery_manager.rb +123 -0
  71. data/lib/openid/consumer/html_parse.rb +136 -0
  72. data/lib/openid/consumer/idres.rb +525 -0
  73. data/lib/openid/consumer/responses.rb +133 -0
  74. data/lib/openid/consumer.rb +280 -807
  75. data/lib/openid/cryptutil.rb +85 -0
  76. data/lib/openid/dh.rb +60 -23
  77. data/lib/openid/extension.rb +31 -0
  78. data/lib/openid/extensions/ax.rb +506 -0
  79. data/lib/openid/extensions/pape.rb +182 -0
  80. data/lib/openid/extensions/sreg.rb +275 -0
  81. data/lib/openid/extras.rb +11 -0
  82. data/lib/openid/fetchers.rb +132 -93
  83. data/lib/openid/kvform.rb +133 -0
  84. data/lib/openid/kvpost.rb +56 -0
  85. data/lib/openid/message.rb +534 -0
  86. data/lib/openid/protocolerror.rb +6 -0
  87. data/lib/openid/server.rb +1215 -666
  88. data/lib/openid/store/filesystem.rb +271 -0
  89. data/lib/openid/store/interface.rb +75 -0
  90. data/lib/openid/store/memory.rb +84 -0
  91. data/lib/openid/store/nonce.rb +68 -0
  92. data/lib/openid/trustroot.rb +314 -87
  93. data/lib/openid/urinorm.rb +37 -34
  94. data/lib/openid/util.rb +42 -220
  95. data/lib/openid/yadis/accept.rb +148 -0
  96. data/lib/openid/yadis/constants.rb +21 -0
  97. data/lib/openid/yadis/discovery.rb +153 -0
  98. data/lib/openid/yadis/filters.rb +205 -0
  99. data/lib/openid/{htmltokenizer.rb → yadis/htmltokenizer.rb} +1 -54
  100. data/lib/openid/yadis/parsehtml.rb +36 -0
  101. data/lib/openid/yadis/services.rb +42 -0
  102. data/lib/openid/yadis/xrds.rb +171 -0
  103. data/lib/openid/yadis/xri.rb +90 -0
  104. data/lib/openid/yadis/xrires.rb +106 -0
  105. data/lib/openid.rb +1 -4
  106. data/test/data/accept.txt +124 -0
  107. data/test/data/dh.txt +29 -0
  108. data/test/data/example-xrds.xml +14 -0
  109. data/test/data/linkparse.txt +587 -0
  110. data/test/data/n2b64 +650 -0
  111. data/test/data/test1-discover.txt +137 -0
  112. data/test/data/test1-parsehtml.txt +128 -0
  113. data/test/data/test_discover/openid.html +11 -0
  114. data/test/data/test_discover/openid2.html +11 -0
  115. data/test/data/test_discover/openid2_xrds.xml +12 -0
  116. data/test/data/test_discover/openid2_xrds_no_local_id.xml +11 -0
  117. data/test/data/test_discover/openid_1_and_2.html +11 -0
  118. data/test/data/test_discover/openid_1_and_2_xrds.xml +16 -0
  119. data/test/data/test_discover/openid_1_and_2_xrds_bad_delegate.xml +17 -0
  120. data/test/data/test_discover/openid_and_yadis.html +12 -0
  121. data/test/data/test_discover/openid_no_delegate.html +10 -0
  122. data/test/data/test_discover/yadis_0entries.xml +12 -0
  123. data/test/data/test_discover/yadis_2_bad_local_id.xml +15 -0
  124. data/test/data/test_discover/yadis_2entries_delegate.xml +22 -0
  125. data/test/data/test_discover/yadis_2entries_idp.xml +21 -0
  126. data/test/data/test_discover/yadis_another_delegate.xml +14 -0
  127. data/test/data/test_discover/yadis_idp.xml +12 -0
  128. data/test/data/test_discover/yadis_idp_delegate.xml +13 -0
  129. data/test/data/test_discover/yadis_no_delegate.xml +11 -0
  130. data/test/data/test_xrds/=j3h.2007.11.14.xrds +25 -0
  131. data/test/data/test_xrds/README +12 -0
  132. data/test/data/test_xrds/delegated-20060809-r1.xrds +34 -0
  133. data/test/data/test_xrds/delegated-20060809-r2.xrds +34 -0
  134. data/test/data/test_xrds/delegated-20060809.xrds +34 -0
  135. data/test/data/test_xrds/no-xrd.xml +7 -0
  136. data/test/data/test_xrds/not-xrds.xml +2 -0
  137. data/test/data/test_xrds/prefixsometimes.xrds +34 -0
  138. data/test/data/test_xrds/ref.xrds +109 -0
  139. data/test/data/test_xrds/sometimesprefix.xrds +34 -0
  140. data/test/data/test_xrds/spoof1.xrds +25 -0
  141. data/test/data/test_xrds/spoof2.xrds +25 -0
  142. data/test/data/test_xrds/spoof3.xrds +37 -0
  143. data/test/data/test_xrds/status222.xrds +9 -0
  144. data/test/data/test_xrds/valid-populated-xrds.xml +39 -0
  145. data/test/data/trustroot.txt +147 -0
  146. data/test/discoverdata.rb +131 -0
  147. data/test/test_accept.rb +170 -0
  148. data/test/test_association.rb +266 -0
  149. data/test/test_associationmanager.rb +899 -0
  150. data/test/test_ax.rb +587 -0
  151. data/test/test_checkid_request.rb +297 -0
  152. data/test/test_consumer.rb +257 -0
  153. data/test/test_cryptutil.rb +117 -0
  154. data/test/test_dh.rb +86 -0
  155. data/test/test_discover.rb +772 -0
  156. data/test/test_discovery_manager.rb +262 -0
  157. data/test/test_extras.rb +35 -0
  158. data/test/test_fetchers.rb +472 -0
  159. data/test/test_filters.rb +270 -0
  160. data/test/test_idres.rb +816 -0
  161. data/test/test_kvform.rb +165 -0
  162. data/test/test_kvpost.rb +65 -0
  163. data/test/test_linkparse.rb +101 -0
  164. data/test/test_message.rb +1058 -0
  165. data/test/test_nonce.rb +89 -0
  166. data/test/test_openid_yadis.rb +178 -0
  167. data/test/test_pape.rb +233 -0
  168. data/test/test_parsehtml.rb +80 -0
  169. data/test/test_responses.rb +63 -0
  170. data/test/test_server.rb +2270 -0
  171. data/test/test_sreg.rb +479 -0
  172. data/test/test_stores.rb +269 -0
  173. data/test/test_trustroot.rb +112 -0
  174. data/test/{urinorm.rb → test_urinorm.rb} +6 -3
  175. data/test/test_util.rb +144 -0
  176. data/test/test_xrds.rb +160 -0
  177. data/test/test_xri.rb +48 -0
  178. data/test/test_xrires.rb +63 -0
  179. data/test/test_yadis_discovery.rb +207 -0
  180. data/test/testutil.rb +116 -0
  181. data/test/util.rb +47 -50
  182. metadata +233 -143
  183. data/examples/consumer.rb +0 -290
  184. data/examples/rails_openid_login_generator/openid_login_generator-0.1.gem +0 -0
  185. data/examples/rails_server/app/controllers/server_controller.rb +0 -190
  186. data/examples/rails_server/app/views/server/decide.rhtml +0 -11
  187. data/examples/rails_server/public/images/rails.png +0 -0
  188. data/lib/hmac-md5.rb +0 -11
  189. data/lib/hmac-rmd160.rb +0 -11
  190. data/lib/openid/discovery.rb +0 -122
  191. data/lib/openid/filestore.rb +0 -315
  192. data/lib/openid/parse.rb +0 -23
  193. data/lib/openid/service.rb +0 -147
  194. data/lib/openid/stores.rb +0 -178
  195. data/test/assoc.rb +0 -38
  196. data/test/consumer.rb +0 -376
  197. data/test/data/brian.xrds +0 -16
  198. data/test/data/brianellin.mylid.xrds +0 -42
  199. data/test/dh.rb +0 -20
  200. data/test/extensions.rb +0 -30
  201. data/test/linkparse.rb +0 -305
  202. data/test/runtests.rb +0 -22
  203. data/test/server2.rb +0 -1053
  204. data/test/service.rb +0 -47
  205. data/test/storetestcase.rb +0 -172
  206. data/test/teststore.rb +0 -47
  207. data/test/trustroot.rb +0 -117
data/test/consumer.rb DELETED
@@ -1,376 +0,0 @@
1
- require 'cgi'
2
- require 'uri'
3
- require 'test/unit'
4
-
5
- require 'openid/util'
6
- require 'openid/dh'
7
- require 'openid/stores'
8
- require 'openid/consumer'
9
- require 'openid/service'
10
- require 'openid/association'
11
-
12
- ASSOCS = [
13
- ['another 20-byte key.', 'Snarky'],
14
- ["\x00" * 20, 'Zeros']
15
- ]
16
-
17
- HTTP_SERVER_URL = 'http://server.example.com/'
18
- HTTPS_SERVER_URL = 'https://server.example.com/'
19
- CONSUMER_URL = 'http://consumer.example.com/'
20
-
21
-
22
- # extract a hash from an application/x-www-form-urlencoded string
23
- def parse_query(qs)
24
- query = {}
25
- CGI::parse(qs).each {|k,v| query[k] = v[0]}
26
- return query
27
- end
28
-
29
- # do the server side associate using the given secret and handle
30
- def associate(qs, assoc_secret, assoc_handle)
31
- q = parse_query(qs)
32
- raise ArgumentError unless q['openid.mode'] == 'associate'
33
- raise ArgumentError unless q['openid.assoc_type'] == 'HMAC-SHA1'
34
-
35
- if q['openid.session_type'] == 'DH-SHA1'
36
- raise ArgumentError unless [4,6].member?(q.length)
37
- d = OpenID::DiffieHellman.from_base64(q['openid.dh_modulus'],
38
- q['openid.dh_gen'])
39
- composite = OpenID::Util.base64_to_num(q['openid.dh_consumer_public'])
40
- enc_mac_key = OpenID::Util.to_base64(d.xor_secrect(composite,
41
- assoc_secret))
42
- reply = {
43
- 'assoc_type' => 'HMAC-SHA1',
44
- 'assoc_handle' => assoc_handle,
45
- 'expires_in' => '600',
46
- 'session_type' => 'DH-SHA1',
47
- 'dh_server_public' => OpenID::Util.num_to_base64(d.public),
48
- 'enc_mac_key' => enc_mac_key
49
- }
50
- else
51
- # dumb mode
52
- raise ArgumentError unless q.length == 2
53
- mac_key = OpenID::Util.to_base64(assoc_secret)
54
- reply = {
55
- 'assoc_type' => 'HMAC-SHA1',
56
- 'assoc_handle' => assoc_handle,
57
- 'expires_in' => '600',
58
- 'mac_key' => mac_key
59
- }
60
- end
61
-
62
- return OpenID::Util.kvform(reply)
63
- end
64
-
65
-
66
- class TestFetcher
67
-
68
- attr_accessor :get_responses, :assoc_secret, :assoc_handle, :num_assocs
69
-
70
- def initialize(assoc_secret, assoc_handle)
71
- @get_responses = {}
72
- @assoc_secret = assoc_secret
73
- @assoc_handle = assoc_handle
74
- @num_assocs = 0
75
- end
76
-
77
- def response(url, status, body)
78
- return [url, body]
79
- end
80
-
81
- def fetch(url, body=nil, headers=nil)
82
- if body.nil?
83
- return @get_responses[url] if @get_responses.has_key?(url)
84
-
85
- else
86
- if body.include?('openid.mode=associate')
87
- response = associate(body, @assoc_secret, @assoc_handle)
88
- @num_assocs += 1
89
- return [url, response]
90
- end
91
- end
92
-
93
- return [url, 'not found']
94
- end
95
-
96
- def get(url)
97
- return self.fetch(url)
98
- end
99
-
100
- def post(url, body)
101
- return self.fetch(url, body)
102
- end
103
-
104
- end
105
-
106
- class SuccessFlowTest < Test::Unit::TestCase
107
-
108
- def _test_success(service, immediate=false)
109
- store = OpenID::MemoryStore.new
110
- mode = immediate ? 'checkid_immediate' : 'checkid_setup'
111
-
112
- assoc_secret, assoc_handle = ASSOCS[0]
113
- fetcher = TestFetcher.new(assoc_secret, assoc_handle)
114
-
115
- run = Proc.new {
116
- trust_root = CONSUMER_URL
117
- return_to = CONSUMER_URL
118
- session = {}
119
-
120
- consumer = OpenID::Consumer.new(session, store, fetcher)
121
- req = consumer.begin_without_discovery(service)
122
-
123
- # need to extract the return_to url
124
-
125
- return_to = req.return_to(return_to)
126
-
127
- assert_equal(OpenID::SUCCESS, req.status)
128
-
129
- redirect_url = req.redirect_url(trust_root, return_to, immediate)
130
- assert redirect_url.starts_with?(service.server_url)
131
-
132
- # make sure the query in the redirect URL is what we want
133
- q = parse_query(URI.parse(redirect_url).query)
134
-
135
- assert_equal(mode, q['openid.mode'])
136
- assert_equal(service.server_id, q['openid.identity'])
137
- assert_equal(trust_root, q['openid.trust_root'])
138
- assert_equal(fetcher.assoc_handle, q['openid.assoc_handle'])
139
-
140
- # make sure the return_to has the nonce in it
141
- return_to_query = parse_query(URI.parse(q['openid.return_to']).query)
142
- assert return_to_query.has_key?('nonce')
143
-
144
- # build a fake response from the OpenID server
145
- query = {
146
- 'openid.mode' => 'id_res',
147
- 'openid.return_to' => 'return_to',
148
- 'openid.identity' => service.server_id,
149
- 'openid.assoc_handle' => fetcher.assoc_handle,
150
- 'nonce' => return_to_query['nonce']
151
- }
152
-
153
- # sign the fake response with our assoc
154
- assoc = store.get_association(service.server_url, fetcher.assoc_handle)
155
- assoc.add_signature(['mode','return_to','identity'], query)
156
-
157
- # complete the auth
158
- resp = consumer.complete(query)
159
-
160
- if resp.status == OpenID::FAILURE
161
- p 'Failure Message', resp.msg
162
- end
163
-
164
- # we're testing success here, so make sure we have a success response
165
- assert_equal(OpenID::SUCCESS, resp.status)
166
-
167
- # make sure we've got the right identity url
168
- assert_equal(service.consumer_id, resp.identity_url)
169
- }
170
-
171
- assert_equal(0, fetcher.num_assocs)
172
- run.call
173
- assert_equal(1, fetcher.num_assocs)
174
-
175
- # make sure we use the same association
176
- run.call
177
- assert_equal(1, fetcher.num_assocs)
178
-
179
- # another assoc is created if we remove the existing one
180
- store.remove_association(service.server_url, fetcher.assoc_handle)
181
- run.call
182
- assert_equal(2, fetcher.num_assocs)
183
- run.call
184
- assert_equal(2, fetcher.num_assocs)
185
- end
186
-
187
- def test_no_delegate
188
- service = OpenID::FakeOpenIDServiceEndpoint.new(
189
- 'http://example.com/user.html',
190
- 'http://example.com/user.html',
191
- HTTP_SERVER_URL)
192
- self._test_success(service)
193
- end
194
-
195
- def test_nodelegate_immediate
196
- service = OpenID::FakeOpenIDServiceEndpoint.new(
197
- 'http://example.com/user.html',
198
- 'http://example.com/user.html',
199
- HTTP_SERVER_URL)
200
- self._test_success(service, true)
201
- end
202
-
203
- def test_delegate
204
- s = OpenID::FakeOpenIDServiceEndpoint.new(
205
- 'http://example.com/user.html',
206
- 'http://server.com/user.html',
207
- HTTP_SERVER_URL)
208
- self._test_success(s)
209
- end
210
-
211
- def test_delegate_immediate
212
- s = OpenID::FakeOpenIDServiceEndpoint.new(
213
- 'http://example.com/user.html',
214
- 'http://server.com/user.html',
215
- HTTP_SERVER_URL)
216
- self._test_success(s, true)
217
- end
218
-
219
- def test_https
220
- service = OpenID::FakeOpenIDServiceEndpoint.new(
221
- 'http://example.com/user.html',
222
- 'http://example.com/user.html',
223
- HTTPS_SERVER_URL)
224
- self._test_success(service)
225
- end
226
-
227
- end
228
-
229
-
230
- class TestIdRes < Test::Unit::TestCase
231
-
232
- def test_setup_needed
233
- store = OpenID::MemoryStore.new
234
- consumer = OpenID::GenericConsumer.new(store)
235
- return_to = "nonny"
236
- server_id = "sirod"
237
- server_url = "serlie"
238
- consumer_id = "consu"
239
- setup_url = "http://example.com/setup-here"
240
-
241
- query = {
242
- 'openid.mode' => 'id_res',
243
- 'openid.user_setup_url' => setup_url
244
- }
245
-
246
- nonce = consumer.create_nonce
247
- ret = consumer.do_id_res(nonce, consumer_id, server_id, server_url, query)
248
-
249
- assert_equal(OpenID::SETUP_NEEDED, ret.status)
250
- assert_equal(setup_url, ret.setup_url)
251
- end
252
-
253
- end
254
-
255
-
256
- class CheckAuthHappened < Exception; end
257
-
258
- class CheckAuthDetectingConsumer < OpenID::GenericConsumer
259
-
260
- def check_auth(nonce, query, server_url)
261
- raise CheckAuthHappened
262
- end
263
-
264
- end
265
-
266
- class TestCheckAuth < Test::Unit::TestCase
267
-
268
- def setup
269
- @store = OpenID::MemoryStore.new
270
- @consumer = CheckAuthDetectingConsumer.new(@store)
271
- @return_to = "nonny"
272
- @server_id = "sirod"
273
- @server_url = "http://server.com/url"
274
- @consumer_id = "consu"
275
- @nonce = @consumer.create_nonce
276
- @setup_url = "http://example.com/setup-here"
277
- end
278
-
279
-
280
- def _do_id_res(query)
281
- return @consumer.do_id_res(@nonce, @consumer_id, @server_id, @server_url,
282
- query)
283
- end
284
-
285
- def test_chech_auth_triggered
286
- query = {
287
- 'openid.return_to' => @return_to,
288
- 'openid.identity' => @server_id,
289
- 'openid.assoc_handle' => 'not_found'
290
- }
291
- begin
292
- self._do_id_res(query)
293
- rescue CheckAuthHappened
294
- assert true
295
- else
296
- raise 'CheckAuthDidntHappen'
297
- end
298
- end
299
-
300
- def test_check_auth_triggered_with_assoc
301
- issued = Time.now.to_i
302
- lifetime = 1000
303
- assoc = OpenID::Association.new('handle',
304
- 'secret',
305
- issued,
306
- lifetime, 'HMAC-SHA1')
307
-
308
- @store.store_association(@server_url, assoc)
309
-
310
- query = {
311
- 'openid.return_to' => @return_to,
312
- 'openid.identity' => @server_id,
313
- 'openid.assoc_handle' => 'bad_assoc_handle_for_assoc!'
314
- }
315
-
316
- begin
317
- result = self._do_id_res(query)
318
- rescue CheckAuthHappened
319
- assert true
320
- else
321
- raise ArgumentError.new(result.msg)
322
- end
323
- end
324
-
325
- def test_expired_assoc
326
- issued = Time.now.to_i - 10
327
- lifetime = 0
328
- handle = 'handle'
329
- assoc = OpenID::Association.new(handle, 'secret', issued, lifetime,
330
- 'HMAC-SHA1')
331
- assert assoc.expires_in <= 0
332
- @store.store_association(@server_url, assoc)
333
-
334
- query = {
335
- 'openid.return_to' => @return_to,
336
- 'openid.identity' => @server_id,
337
- 'openid.assoc_handle' => handle
338
- }
339
-
340
- info = self._do_id_res(query)
341
- assert_equal(OpenID::FAILURE, info.status)
342
- assert_equal(@consumer_id, info.identity_url)
343
- end
344
-
345
- def test_newer_assoc
346
- lifetime = 1000
347
- good_issued = Time.now.to_i - 10
348
- good_handle = 'handle'
349
- good_assoc = OpenID::Association.new(good_handle, 'secret',
350
- good_issued, lifetime, 'HMAC-SHA1')
351
- @store.store_association(@server_url, good_assoc)
352
-
353
- bad_issued = Time.now.to_i - 5
354
- bad_handle = 'handle2'
355
- bad_assoc = OpenID::Association.new(bad_handle, 'secret',
356
- bad_issued, lifetime, 'HMAC-SHA1')
357
- @store.store_association(@server_url, bad_assoc)
358
-
359
- query = {
360
- 'openid.return_to' => @return_to,
361
- 'openid.identity' => @server_id,
362
- 'openid.assoc_handle' => good_handle
363
- }
364
-
365
- good_assoc.add_signature(['return_to','identity'], query)
366
- info = self._do_id_res(query)
367
-
368
- if info.status != OpenID::SUCCESS
369
- p 'Failure Message', info.msg
370
- end
371
-
372
- assert_equal(OpenID::SUCCESS, info.status)
373
- assert_equal(@consumer_id, info.identity_url)
374
- end
375
-
376
- end
data/test/data/brian.xrds DELETED
@@ -1,16 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <xrds:XRDS
3
- xmlns:xrds="xri://$xrds"
4
- xmlns:openid="http://openid.net/xmlns/1.0"
5
- xmlns="xri://$xrd*($v*2.0)">
6
- <XRD>
7
-
8
- <Service priority="0">
9
- <Type>http://openid.net/signon/1.0</Type>
10
- <URI>http://www.myopenid.com/server</URI>
11
- <openid:Delegate>http://brian.myopenid.com/</openid:Delegate>
12
- </Service>
13
-
14
- </XRD>
15
- </xrds:XRDS>
16
-
@@ -1,42 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <XRDS xmlns="xri://$xrds" xmlns:xrd="xri://$xrd*($v*2.0)">
3
- <xrd:XRD>
4
- <xrd:Service priority="1">
5
- <xrd:Type>http://lid.netmesh.org/minimum-lid/2.0b9</xrd:Type>
6
- <xrd:URI>http://mylid.net/brianellin</xrd:URI>
7
- </xrd:Service>
8
- <xrd:Service priority="2">
9
- <xrd:Type>http://lid.netmesh.org/sso/2.0b9</xrd:Type>
10
- <xrd:URI>http://mylid.net/brianellin</xrd:URI>
11
- </xrd:Service>
12
- <xrd:Service priority="3">
13
- <xrd:Type>http://lid.netmesh.org/sso/1.0</xrd:Type>
14
- <xrd:URI>http://mylid.net/brianellin</xrd:URI>
15
- </xrd:Service>
16
- <xrd:Service priority="4">
17
- <xrd:Type>http://lid.netmesh.org/relying-party/2.0b9</xrd:Type>
18
- <xrd:URI>http://mylid.net/brianellin</xrd:URI>
19
- </xrd:Service>
20
- <xrd:Service priority="5">
21
- <xrd:Type>http://lid.netmesh.org/traversal/2.0b9</xrd:Type>
22
- <xrd:URI>http://mylid.net/brianellin</xrd:URI>
23
- </xrd:Service>
24
- <xrd:Service priority="6">
25
- <xrd:Type>http://lid.netmesh.org/format-negotiation/2.0b9</xrd:Type>
26
- <xrd:URI>http://mylid.net/brianellin</xrd:URI>
27
- </xrd:Service>
28
- <xrd:Service priority="7">
29
- <xrd:Type>http://lid.netmesh.org/post/sender/2.0b9</xrd:Type>
30
- <xrd:URI>http://mylid.net/brianellin</xrd:URI>
31
- </xrd:Service>
32
- <xrd:Service priority="8">
33
- <xrd:Type>http://lid.netmesh.org/post/receiver/2.0b9</xrd:Type>
34
- <xrd:URI>http://mylid.net/brianellin</xrd:URI>
35
- </xrd:Service>
36
- <xrd:Service priority="9">
37
- <xrd:Type>http://openid.net/signon/1.0</xrd:Type>
38
- <xrd:URI>http://mylid.net/brianellin</xrd:URI>
39
- <openid:Delegate xmlns:openid="http://openid.net/xmlns/1.0">http://mylid.net/brianellin</openid:Delegate>
40
- </xrd:Service>
41
- </xrd:XRD>
42
- </XRDS>
data/test/dh.rb DELETED
@@ -1,20 +0,0 @@
1
- require 'test/unit'
2
-
3
- require "openid/dh"
4
- require "openid/util"
5
-
6
- # Diffie Hellman test case
7
-
8
- class DiffieHellmanTestCase < Test::Unit::TestCase
9
-
10
- def test_dh
11
- dh1 = OpenID::DiffieHellman.new
12
- dh2 = OpenID::DiffieHellman.new
13
-
14
- secret1 = dh1.get_shared_secret(dh2.public)
15
- secret2 = dh2.get_shared_secret(dh1.public)
16
- assert(secret1 == secret2)
17
- end
18
-
19
- end
20
-
data/test/extensions.rb DELETED
@@ -1,30 +0,0 @@
1
- require "test/unit"
2
-
3
- require "openid/extensions"
4
- require "openid/sreg"
5
- require "openid/util"
6
-
7
- class UtilTestCase < Test::Unit::TestCase
8
-
9
- def test_sreg
10
- secret = 'foo'
11
- openid_sig = 'xxx'
12
-
13
- ext_content = "openid.sig:xxx\nsreg.dob:0000-00-00\nsreg.email:foo@bar.com\n"
14
- ext_sig = OpenID::Util.to_base64(OpenID::Util.hmac_sha1(secret, ext_content))
15
- query = {
16
- 'openid.sig' => openid_sig,
17
- 'sreg.email' => 'foo@bar.com',
18
- 'sreg.dob' => '0000-00-00',
19
- 'sreg.sig' => ext_sig
20
- }
21
-
22
- sreg = OpenID::SREG.create(secret, query)
23
- assert_not_nil(sreg)
24
- assert_equal(ext_content, sreg.ext_content)
25
- assert_equal(ext_sig, sreg.gen_sig)
26
- assert_equal(true, sreg.check_sig)
27
- assert_equal(true, OpenID::SREG.check(secret, query))
28
- end
29
-
30
- end