google-authsub 0.0.4
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.
- data/.gitignore +1 -0
- data/MIT-LICENSE +20 -0
- data/README +98 -0
- data/Rakefile +19 -0
- data/VERSION +1 -0
- data/coverage/-Library-Ruby-Gems-1_8-gems-FakeWeb-1_1_2-lib-fake_net_http_rb.html +679 -0
- data/coverage/-Library-Ruby-Gems-1_8-gems-FakeWeb-1_1_2-lib-fake_web_rb.html +843 -0
- data/coverage/-Library-Ruby-Gems-1_8-gems-rcov-0_8_1_2_0-lib-rcov_rb.html +1598 -0
- data/coverage/index.html +360 -0
- data/coverage/lib-googleauthsub_rb.html +877 -0
- data/coverage/spec-googleauthsub_spec_rb.html +950 -0
- data/coverage/spec-spec_helper_rb.html +640 -0
- data/doc/classes/AuthEchoServlet.html +152 -0
- data/doc/classes/AuthEchoServlet.src/M000001.html +20 -0
- data/doc/classes/AuthEchoServlet.src/M000002.html +18 -0
- data/doc/classes/GData/AuthSubError.html +139 -0
- data/doc/classes/GData/AuthSubError.src/M000019.html +18 -0
- data/doc/classes/GData/Error.html +111 -0
- data/doc/classes/GData/GoogleAuthSub.html +521 -0
- data/doc/classes/GData/GoogleAuthSub.src/M000001.html +29 -0
- data/doc/classes/GData/GoogleAuthSub.src/M000002.html +22 -0
- data/doc/classes/GData/GoogleAuthSub.src/M000003.html +29 -0
- data/doc/classes/GData/GoogleAuthSub.src/M000004.html +22 -0
- data/doc/classes/GData/GoogleAuthSub.src/M000005.html +24 -0
- data/doc/classes/GData/GoogleAuthSub.src/M000006.html +19 -0
- data/doc/classes/GData/GoogleAuthSub.src/M000007.html +18 -0
- data/doc/classes/GData/GoogleAuthSub.src/M000008.html +18 -0
- data/doc/classes/GData/GoogleAuthSub.src/M000009.html +24 -0
- data/doc/classes/GData/GoogleAuthSub.src/M000010.html +25 -0
- data/doc/classes/GData/GoogleAuthSub.src/M000011.html +30 -0
- data/doc/classes/GData/GoogleAuthSub.src/M000012.html +18 -0
- data/doc/classes/GData/GoogleAuthSub.src/M000013.html +18 -0
- data/doc/classes/GData/GoogleAuthSub.src/M000014.html +18 -0
- data/doc/classes/GData/GoogleAuthSub.src/M000015.html +18 -0
- data/doc/classes/GData/GoogleAuthSub.src/M000016.html +20 -0
- data/doc/classes/GData/GoogleAuthSub.src/M000017.html +20 -0
- data/doc/classes/GData/GoogleAuthSub.src/M000018.html +19 -0
- data/doc/classes/GData.html +162 -0
- data/doc/created.rid +1 -0
- data/doc/files/googleauthsub_rb.html +140 -0
- data/doc/files/lib/googleauthsub_rb.html +140 -0
- data/doc/files/spec/googleauthsub_spec_rb.html +146 -0
- data/doc/files/spec/googleresponder_rb.html +121 -0
- data/doc/files/spec/spec_helper_rb.html +149 -0
- data/doc/fr_class_index.html +31 -0
- data/doc/fr_file_index.html +30 -0
- data/doc/fr_method_index.html +45 -0
- data/doc/index.html +24 -0
- data/doc/rdoc-style.css +208 -0
- data/google-authsub-0.0.2.gem +0 -0
- data/google-authsub-0.0.3.gem +0 -0
- data/google-authsub.gemspec +109 -0
- data/lib/googleauthsub.rb +271 -0
- data/live test/authsub_test.html +40 -0
- data/live test/gastest.rb +90 -0
- data/spec/googleauthsub_spec.rb +350 -0
- data/spec/googleresponder.rb +26 -0
- data/spec/mock responses/bad_token_info.txt +11 -0
- data/spec/mock responses/calendar.txt +11 -0
- data/spec/mock responses/revoke_token.txt +7 -0
- data/spec/mock responses/revoked_token.txt +17 -0
- data/spec/mock responses/session_token.txt +9 -0
- data/spec/mock responses/token_info.txt +11 -0
- data/spec/mock responses/unauthorized.txt +18 -0
- data/spec/mock_certs/test_private_key.pem +15 -0
- data/spec/mock_certs/test_public_key.pem +6 -0
- data/spec/spec_helper.rb +30 -0
- data/spec/spec_opts +7 -0
- metadata +125 -0
|
@@ -0,0 +1,950 @@
|
|
|
1
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
2
|
+
<html lang='en' xml:lang='en' xmlns='http://www.w3.org/1999/xhtml'><head><title>spec/googleauthsub_spec.rb - C0 code coverage information</title>
|
|
3
|
+
<style type='text/css'>body { background-color: rgb(240, 240, 245); }</style>
|
|
4
|
+
<style type='text/css'>span.cross-ref-title {
|
|
5
|
+
font-size: 140%;
|
|
6
|
+
}
|
|
7
|
+
span.cross-ref a {
|
|
8
|
+
text-decoration: none;
|
|
9
|
+
}
|
|
10
|
+
span.cross-ref {
|
|
11
|
+
background-color:#f3f7fa;
|
|
12
|
+
border: 1px dashed #333;
|
|
13
|
+
margin: 1em;
|
|
14
|
+
padding: 0.5em;
|
|
15
|
+
overflow: hidden;
|
|
16
|
+
}
|
|
17
|
+
a.crossref-toggle {
|
|
18
|
+
text-decoration: none;
|
|
19
|
+
}
|
|
20
|
+
span.marked0 {
|
|
21
|
+
background-color: rgb(185, 210, 200);
|
|
22
|
+
display: block;
|
|
23
|
+
}
|
|
24
|
+
span.marked1 {
|
|
25
|
+
background-color: rgb(190, 215, 205);
|
|
26
|
+
display: block;
|
|
27
|
+
}
|
|
28
|
+
span.inferred0 {
|
|
29
|
+
background-color: rgb(175, 200, 200);
|
|
30
|
+
display: block;
|
|
31
|
+
}
|
|
32
|
+
span.inferred1 {
|
|
33
|
+
background-color: rgb(180, 205, 205);
|
|
34
|
+
display: block;
|
|
35
|
+
}
|
|
36
|
+
span.uncovered0 {
|
|
37
|
+
background-color: rgb(225, 110, 110);
|
|
38
|
+
display: block;
|
|
39
|
+
}
|
|
40
|
+
span.uncovered1 {
|
|
41
|
+
background-color: rgb(235, 120, 120);
|
|
42
|
+
display: block;
|
|
43
|
+
}
|
|
44
|
+
span.overview {
|
|
45
|
+
border-bottom: 8px solid black;
|
|
46
|
+
}
|
|
47
|
+
div.overview {
|
|
48
|
+
border-bottom: 8px solid black;
|
|
49
|
+
}
|
|
50
|
+
body {
|
|
51
|
+
font-family: verdana, arial, helvetica;
|
|
52
|
+
}
|
|
53
|
+
div.footer {
|
|
54
|
+
font-size: 68%;
|
|
55
|
+
margin-top: 1.5em;
|
|
56
|
+
}
|
|
57
|
+
h1, h2, h3, h4, h5, h6 {
|
|
58
|
+
margin-bottom: 0.5em;
|
|
59
|
+
}
|
|
60
|
+
h5 {
|
|
61
|
+
margin-top: 0.5em;
|
|
62
|
+
}
|
|
63
|
+
.hidden {
|
|
64
|
+
display: none;
|
|
65
|
+
}
|
|
66
|
+
div.separator {
|
|
67
|
+
height: 10px;
|
|
68
|
+
}
|
|
69
|
+
/* Commented out for better readability, esp. on IE */
|
|
70
|
+
/*
|
|
71
|
+
table tr td, table tr th {
|
|
72
|
+
font-size: 68%;
|
|
73
|
+
}
|
|
74
|
+
td.value table tr td {
|
|
75
|
+
font-size: 11px;
|
|
76
|
+
}
|
|
77
|
+
*/
|
|
78
|
+
table.percent_graph {
|
|
79
|
+
height: 12px;
|
|
80
|
+
border: #808080 1px solid;
|
|
81
|
+
empty-cells: show;
|
|
82
|
+
}
|
|
83
|
+
table.percent_graph td.covered {
|
|
84
|
+
height: 10px;
|
|
85
|
+
background: #00f000;
|
|
86
|
+
}
|
|
87
|
+
table.percent_graph td.uncovered {
|
|
88
|
+
height: 10px;
|
|
89
|
+
background: #e00000;
|
|
90
|
+
}
|
|
91
|
+
table.percent_graph td.NA {
|
|
92
|
+
height: 10px;
|
|
93
|
+
background: #eaeaea;
|
|
94
|
+
}
|
|
95
|
+
table.report {
|
|
96
|
+
border-collapse: collapse;
|
|
97
|
+
width: 100%;
|
|
98
|
+
}
|
|
99
|
+
table.report td.heading {
|
|
100
|
+
background: #dcecff;
|
|
101
|
+
border: #d0d0d0 1px solid;
|
|
102
|
+
font-weight: bold;
|
|
103
|
+
text-align: center;
|
|
104
|
+
}
|
|
105
|
+
table.report td.heading:hover {
|
|
106
|
+
background: #c0ffc0;
|
|
107
|
+
}
|
|
108
|
+
table.report td.text {
|
|
109
|
+
border: #d0d0d0 1px solid;
|
|
110
|
+
}
|
|
111
|
+
table.report td.value,
|
|
112
|
+
table.report td.lines_total,
|
|
113
|
+
table.report td.lines_code {
|
|
114
|
+
text-align: right;
|
|
115
|
+
border: #d0d0d0 1px solid;
|
|
116
|
+
}
|
|
117
|
+
table.report tr.light {
|
|
118
|
+
background-color: rgb(240, 240, 245);
|
|
119
|
+
}
|
|
120
|
+
table.report tr.dark {
|
|
121
|
+
background-color: rgb(230, 230, 235);
|
|
122
|
+
}
|
|
123
|
+
</style>
|
|
124
|
+
<script type='text/javascript'>
|
|
125
|
+
// <![CDATA[
|
|
126
|
+
function toggleCode( id ) {
|
|
127
|
+
if ( document.getElementById )
|
|
128
|
+
elem = document.getElementById( id );
|
|
129
|
+
else if ( document.all )
|
|
130
|
+
elem = eval( "document.all." + id );
|
|
131
|
+
else
|
|
132
|
+
return false;
|
|
133
|
+
|
|
134
|
+
elemStyle = elem.style;
|
|
135
|
+
|
|
136
|
+
if ( elemStyle.display != "block" ) {
|
|
137
|
+
elemStyle.display = "block"
|
|
138
|
+
} else {
|
|
139
|
+
elemStyle.display = "none"
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
return true;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
// Make cross-references hidden by default
|
|
146
|
+
document.writeln( "<style type=\"text/css\">span.cross-ref { display: none }</style>" )
|
|
147
|
+
// ]]>
|
|
148
|
+
</script>
|
|
149
|
+
<style type='text/css'>span.run0 {
|
|
150
|
+
background-color: rgb(178, 204, 255);
|
|
151
|
+
display: block;
|
|
152
|
+
}
|
|
153
|
+
span.run1 {
|
|
154
|
+
background-color: rgb(178, 206, 255);
|
|
155
|
+
display: block;
|
|
156
|
+
}
|
|
157
|
+
span.run2 {
|
|
158
|
+
background-color: rgb(178, 209, 255);
|
|
159
|
+
display: block;
|
|
160
|
+
}
|
|
161
|
+
span.run3 {
|
|
162
|
+
background-color: rgb(178, 211, 255);
|
|
163
|
+
display: block;
|
|
164
|
+
}
|
|
165
|
+
span.run4 {
|
|
166
|
+
background-color: rgb(178, 214, 255);
|
|
167
|
+
display: block;
|
|
168
|
+
}
|
|
169
|
+
span.run5 {
|
|
170
|
+
background-color: rgb(178, 218, 255);
|
|
171
|
+
display: block;
|
|
172
|
+
}
|
|
173
|
+
span.run6 {
|
|
174
|
+
background-color: rgb(178, 220, 255);
|
|
175
|
+
display: block;
|
|
176
|
+
}
|
|
177
|
+
span.run7 {
|
|
178
|
+
background-color: rgb(178, 223, 255);
|
|
179
|
+
display: block;
|
|
180
|
+
}
|
|
181
|
+
span.run8 {
|
|
182
|
+
background-color: rgb(178, 225, 255);
|
|
183
|
+
display: block;
|
|
184
|
+
}
|
|
185
|
+
span.run9 {
|
|
186
|
+
background-color: rgb(178, 228, 255);
|
|
187
|
+
display: block;
|
|
188
|
+
}
|
|
189
|
+
span.run10 {
|
|
190
|
+
background-color: rgb(178, 232, 255);
|
|
191
|
+
display: block;
|
|
192
|
+
}
|
|
193
|
+
span.run11 {
|
|
194
|
+
background-color: rgb(178, 234, 255);
|
|
195
|
+
display: block;
|
|
196
|
+
}
|
|
197
|
+
span.run12 {
|
|
198
|
+
background-color: rgb(178, 237, 255);
|
|
199
|
+
display: block;
|
|
200
|
+
}
|
|
201
|
+
span.run13 {
|
|
202
|
+
background-color: rgb(178, 239, 255);
|
|
203
|
+
display: block;
|
|
204
|
+
}
|
|
205
|
+
span.run14 {
|
|
206
|
+
background-color: rgb(178, 242, 255);
|
|
207
|
+
display: block;
|
|
208
|
+
}
|
|
209
|
+
span.run15 {
|
|
210
|
+
background-color: rgb(178, 246, 255);
|
|
211
|
+
display: block;
|
|
212
|
+
}
|
|
213
|
+
span.run16 {
|
|
214
|
+
background-color: rgb(178, 248, 255);
|
|
215
|
+
display: block;
|
|
216
|
+
}
|
|
217
|
+
span.run17 {
|
|
218
|
+
background-color: rgb(178, 251, 255);
|
|
219
|
+
display: block;
|
|
220
|
+
}
|
|
221
|
+
span.run18 {
|
|
222
|
+
background-color: rgb(178, 253, 255);
|
|
223
|
+
display: block;
|
|
224
|
+
}
|
|
225
|
+
span.run19 {
|
|
226
|
+
background-color: rgb(178, 255, 253);
|
|
227
|
+
display: block;
|
|
228
|
+
}
|
|
229
|
+
span.run20 {
|
|
230
|
+
background-color: rgb(178, 255, 249);
|
|
231
|
+
display: block;
|
|
232
|
+
}
|
|
233
|
+
span.run21 {
|
|
234
|
+
background-color: rgb(178, 255, 247);
|
|
235
|
+
display: block;
|
|
236
|
+
}
|
|
237
|
+
span.run22 {
|
|
238
|
+
background-color: rgb(178, 255, 244);
|
|
239
|
+
display: block;
|
|
240
|
+
}
|
|
241
|
+
span.run23 {
|
|
242
|
+
background-color: rgb(178, 255, 242);
|
|
243
|
+
display: block;
|
|
244
|
+
}
|
|
245
|
+
span.run24 {
|
|
246
|
+
background-color: rgb(178, 255, 239);
|
|
247
|
+
display: block;
|
|
248
|
+
}
|
|
249
|
+
span.run25 {
|
|
250
|
+
background-color: rgb(178, 255, 235);
|
|
251
|
+
display: block;
|
|
252
|
+
}
|
|
253
|
+
span.run26 {
|
|
254
|
+
background-color: rgb(178, 255, 233);
|
|
255
|
+
display: block;
|
|
256
|
+
}
|
|
257
|
+
span.run27 {
|
|
258
|
+
background-color: rgb(178, 255, 230);
|
|
259
|
+
display: block;
|
|
260
|
+
}
|
|
261
|
+
span.run28 {
|
|
262
|
+
background-color: rgb(178, 255, 228);
|
|
263
|
+
display: block;
|
|
264
|
+
}
|
|
265
|
+
span.run29 {
|
|
266
|
+
background-color: rgb(178, 255, 225);
|
|
267
|
+
display: block;
|
|
268
|
+
}
|
|
269
|
+
span.run30 {
|
|
270
|
+
background-color: rgb(178, 255, 221);
|
|
271
|
+
display: block;
|
|
272
|
+
}
|
|
273
|
+
span.run31 {
|
|
274
|
+
background-color: rgb(178, 255, 219);
|
|
275
|
+
display: block;
|
|
276
|
+
}
|
|
277
|
+
span.run32 {
|
|
278
|
+
background-color: rgb(178, 255, 216);
|
|
279
|
+
display: block;
|
|
280
|
+
}
|
|
281
|
+
span.run33 {
|
|
282
|
+
background-color: rgb(178, 255, 214);
|
|
283
|
+
display: block;
|
|
284
|
+
}
|
|
285
|
+
span.run34 {
|
|
286
|
+
background-color: rgb(178, 255, 211);
|
|
287
|
+
display: block;
|
|
288
|
+
}
|
|
289
|
+
span.run35 {
|
|
290
|
+
background-color: rgb(178, 255, 207);
|
|
291
|
+
display: block;
|
|
292
|
+
}
|
|
293
|
+
span.run36 {
|
|
294
|
+
background-color: rgb(178, 255, 205);
|
|
295
|
+
display: block;
|
|
296
|
+
}
|
|
297
|
+
span.run37 {
|
|
298
|
+
background-color: rgb(178, 255, 202);
|
|
299
|
+
display: block;
|
|
300
|
+
}
|
|
301
|
+
span.run38 {
|
|
302
|
+
background-color: rgb(178, 255, 200);
|
|
303
|
+
display: block;
|
|
304
|
+
}
|
|
305
|
+
span.run39 {
|
|
306
|
+
background-color: rgb(178, 255, 197);
|
|
307
|
+
display: block;
|
|
308
|
+
}
|
|
309
|
+
span.run40 {
|
|
310
|
+
background-color: rgb(178, 255, 193);
|
|
311
|
+
display: block;
|
|
312
|
+
}
|
|
313
|
+
span.run41 {
|
|
314
|
+
background-color: rgb(178, 255, 191);
|
|
315
|
+
display: block;
|
|
316
|
+
}
|
|
317
|
+
span.run42 {
|
|
318
|
+
background-color: rgb(178, 255, 188);
|
|
319
|
+
display: block;
|
|
320
|
+
}
|
|
321
|
+
span.run43 {
|
|
322
|
+
background-color: rgb(178, 255, 186);
|
|
323
|
+
display: block;
|
|
324
|
+
}
|
|
325
|
+
span.run44 {
|
|
326
|
+
background-color: rgb(178, 255, 183);
|
|
327
|
+
display: block;
|
|
328
|
+
}
|
|
329
|
+
span.run45 {
|
|
330
|
+
background-color: rgb(178, 255, 179);
|
|
331
|
+
display: block;
|
|
332
|
+
}
|
|
333
|
+
span.run46 {
|
|
334
|
+
background-color: rgb(179, 255, 178);
|
|
335
|
+
display: block;
|
|
336
|
+
}
|
|
337
|
+
span.run47 {
|
|
338
|
+
background-color: rgb(182, 255, 178);
|
|
339
|
+
display: block;
|
|
340
|
+
}
|
|
341
|
+
span.run48 {
|
|
342
|
+
background-color: rgb(184, 255, 178);
|
|
343
|
+
display: block;
|
|
344
|
+
}
|
|
345
|
+
span.run49 {
|
|
346
|
+
background-color: rgb(187, 255, 178);
|
|
347
|
+
display: block;
|
|
348
|
+
}
|
|
349
|
+
span.run50 {
|
|
350
|
+
background-color: rgb(191, 255, 178);
|
|
351
|
+
display: block;
|
|
352
|
+
}
|
|
353
|
+
span.run51 {
|
|
354
|
+
background-color: rgb(193, 255, 178);
|
|
355
|
+
display: block;
|
|
356
|
+
}
|
|
357
|
+
span.run52 {
|
|
358
|
+
background-color: rgb(196, 255, 178);
|
|
359
|
+
display: block;
|
|
360
|
+
}
|
|
361
|
+
span.run53 {
|
|
362
|
+
background-color: rgb(198, 255, 178);
|
|
363
|
+
display: block;
|
|
364
|
+
}
|
|
365
|
+
span.run54 {
|
|
366
|
+
background-color: rgb(201, 255, 178);
|
|
367
|
+
display: block;
|
|
368
|
+
}
|
|
369
|
+
span.run55 {
|
|
370
|
+
background-color: rgb(205, 255, 178);
|
|
371
|
+
display: block;
|
|
372
|
+
}
|
|
373
|
+
span.run56 {
|
|
374
|
+
background-color: rgb(207, 255, 178);
|
|
375
|
+
display: block;
|
|
376
|
+
}
|
|
377
|
+
span.run57 {
|
|
378
|
+
background-color: rgb(210, 255, 178);
|
|
379
|
+
display: block;
|
|
380
|
+
}
|
|
381
|
+
span.run58 {
|
|
382
|
+
background-color: rgb(212, 255, 178);
|
|
383
|
+
display: block;
|
|
384
|
+
}
|
|
385
|
+
span.run59 {
|
|
386
|
+
background-color: rgb(215, 255, 178);
|
|
387
|
+
display: block;
|
|
388
|
+
}
|
|
389
|
+
span.run60 {
|
|
390
|
+
background-color: rgb(219, 255, 178);
|
|
391
|
+
display: block;
|
|
392
|
+
}
|
|
393
|
+
span.run61 {
|
|
394
|
+
background-color: rgb(221, 255, 178);
|
|
395
|
+
display: block;
|
|
396
|
+
}
|
|
397
|
+
span.run62 {
|
|
398
|
+
background-color: rgb(224, 255, 178);
|
|
399
|
+
display: block;
|
|
400
|
+
}
|
|
401
|
+
span.run63 {
|
|
402
|
+
background-color: rgb(226, 255, 178);
|
|
403
|
+
display: block;
|
|
404
|
+
}
|
|
405
|
+
span.run64 {
|
|
406
|
+
background-color: rgb(229, 255, 178);
|
|
407
|
+
display: block;
|
|
408
|
+
}
|
|
409
|
+
span.run65 {
|
|
410
|
+
background-color: rgb(233, 255, 178);
|
|
411
|
+
display: block;
|
|
412
|
+
}
|
|
413
|
+
span.run66 {
|
|
414
|
+
background-color: rgb(235, 255, 178);
|
|
415
|
+
display: block;
|
|
416
|
+
}
|
|
417
|
+
span.run67 {
|
|
418
|
+
background-color: rgb(238, 255, 178);
|
|
419
|
+
display: block;
|
|
420
|
+
}
|
|
421
|
+
span.run68 {
|
|
422
|
+
background-color: rgb(240, 255, 178);
|
|
423
|
+
display: block;
|
|
424
|
+
}
|
|
425
|
+
span.run69 {
|
|
426
|
+
background-color: rgb(243, 255, 178);
|
|
427
|
+
display: block;
|
|
428
|
+
}
|
|
429
|
+
span.run70 {
|
|
430
|
+
background-color: rgb(247, 255, 178);
|
|
431
|
+
display: block;
|
|
432
|
+
}
|
|
433
|
+
span.run71 {
|
|
434
|
+
background-color: rgb(249, 255, 178);
|
|
435
|
+
display: block;
|
|
436
|
+
}
|
|
437
|
+
span.run72 {
|
|
438
|
+
background-color: rgb(252, 255, 178);
|
|
439
|
+
display: block;
|
|
440
|
+
}
|
|
441
|
+
span.run73 {
|
|
442
|
+
background-color: rgb(255, 255, 178);
|
|
443
|
+
display: block;
|
|
444
|
+
}
|
|
445
|
+
span.run74 {
|
|
446
|
+
background-color: rgb(255, 252, 178);
|
|
447
|
+
display: block;
|
|
448
|
+
}
|
|
449
|
+
span.run75 {
|
|
450
|
+
background-color: rgb(255, 248, 178);
|
|
451
|
+
display: block;
|
|
452
|
+
}
|
|
453
|
+
span.run76 {
|
|
454
|
+
background-color: rgb(255, 246, 178);
|
|
455
|
+
display: block;
|
|
456
|
+
}
|
|
457
|
+
span.run77 {
|
|
458
|
+
background-color: rgb(255, 243, 178);
|
|
459
|
+
display: block;
|
|
460
|
+
}
|
|
461
|
+
span.run78 {
|
|
462
|
+
background-color: rgb(255, 240, 178);
|
|
463
|
+
display: block;
|
|
464
|
+
}
|
|
465
|
+
span.run79 {
|
|
466
|
+
background-color: rgb(255, 238, 178);
|
|
467
|
+
display: block;
|
|
468
|
+
}
|
|
469
|
+
span.run80 {
|
|
470
|
+
background-color: rgb(255, 234, 178);
|
|
471
|
+
display: block;
|
|
472
|
+
}
|
|
473
|
+
span.run81 {
|
|
474
|
+
background-color: rgb(255, 232, 178);
|
|
475
|
+
display: block;
|
|
476
|
+
}
|
|
477
|
+
span.run82 {
|
|
478
|
+
background-color: rgb(255, 229, 178);
|
|
479
|
+
display: block;
|
|
480
|
+
}
|
|
481
|
+
span.run83 {
|
|
482
|
+
background-color: rgb(255, 226, 178);
|
|
483
|
+
display: block;
|
|
484
|
+
}
|
|
485
|
+
span.run84 {
|
|
486
|
+
background-color: rgb(255, 224, 178);
|
|
487
|
+
display: block;
|
|
488
|
+
}
|
|
489
|
+
span.run85 {
|
|
490
|
+
background-color: rgb(255, 220, 178);
|
|
491
|
+
display: block;
|
|
492
|
+
}
|
|
493
|
+
span.run86 {
|
|
494
|
+
background-color: rgb(255, 218, 178);
|
|
495
|
+
display: block;
|
|
496
|
+
}
|
|
497
|
+
span.run87 {
|
|
498
|
+
background-color: rgb(255, 215, 178);
|
|
499
|
+
display: block;
|
|
500
|
+
}
|
|
501
|
+
span.run88 {
|
|
502
|
+
background-color: rgb(255, 212, 178);
|
|
503
|
+
display: block;
|
|
504
|
+
}
|
|
505
|
+
span.run89 {
|
|
506
|
+
background-color: rgb(255, 210, 178);
|
|
507
|
+
display: block;
|
|
508
|
+
}
|
|
509
|
+
span.run90 {
|
|
510
|
+
background-color: rgb(255, 206, 178);
|
|
511
|
+
display: block;
|
|
512
|
+
}
|
|
513
|
+
span.run91 {
|
|
514
|
+
background-color: rgb(255, 204, 178);
|
|
515
|
+
display: block;
|
|
516
|
+
}
|
|
517
|
+
span.run92 {
|
|
518
|
+
background-color: rgb(255, 201, 178);
|
|
519
|
+
display: block;
|
|
520
|
+
}
|
|
521
|
+
span.run93 {
|
|
522
|
+
background-color: rgb(255, 198, 178);
|
|
523
|
+
display: block;
|
|
524
|
+
}
|
|
525
|
+
span.run94 {
|
|
526
|
+
background-color: rgb(255, 196, 178);
|
|
527
|
+
display: block;
|
|
528
|
+
}
|
|
529
|
+
span.run95 {
|
|
530
|
+
background-color: rgb(255, 192, 178);
|
|
531
|
+
display: block;
|
|
532
|
+
}
|
|
533
|
+
span.run96 {
|
|
534
|
+
background-color: rgb(255, 189, 178);
|
|
535
|
+
display: block;
|
|
536
|
+
}
|
|
537
|
+
span.run97 {
|
|
538
|
+
background-color: rgb(255, 187, 178);
|
|
539
|
+
display: block;
|
|
540
|
+
}
|
|
541
|
+
span.run98 {
|
|
542
|
+
background-color: rgb(255, 184, 178);
|
|
543
|
+
display: block;
|
|
544
|
+
}
|
|
545
|
+
span.run99 {
|
|
546
|
+
background-color: rgb(255, 182, 178);
|
|
547
|
+
display: block;
|
|
548
|
+
}
|
|
549
|
+
span.run100 {
|
|
550
|
+
background-color: rgb(255, 178, 178);
|
|
551
|
+
display: block;
|
|
552
|
+
}
|
|
553
|
+
</style>
|
|
554
|
+
</head>
|
|
555
|
+
<body><h3>C0 code coverage information</h3>
|
|
556
|
+
<p>Generated on Sat Jun 07 16:45:06 +1000 2008 with <a href='http://eigenclass.org/hiki/rcov'>rcov 0.8.1.2</a>
|
|
557
|
+
</p>
|
|
558
|
+
<hr/>
|
|
559
|
+
<pre><span class='marked0'>Code reported as executed by Ruby looks like this...
|
|
560
|
+
</span><span class='marked1'>and this: this line is also marked as covered.
|
|
561
|
+
</span><span class='inferred0'>Lines considered as run by rcov, but not reported by Ruby, look like this,
|
|
562
|
+
</span><span class='inferred1'>and this: these lines were inferred by rcov (using simple heuristics).
|
|
563
|
+
</span><span class='uncovered0'>Finally, here's a line marked as not executed.
|
|
564
|
+
</span></pre>
|
|
565
|
+
<table class='report'><thead><tr><td class='heading'>Name</td>
|
|
566
|
+
<td class='heading'>Total lines</td>
|
|
567
|
+
<td class='heading'>Lines of code</td>
|
|
568
|
+
<td class='heading'>Total coverage</td>
|
|
569
|
+
<td class='heading'>Code coverage</td>
|
|
570
|
+
</tr>
|
|
571
|
+
</thead>
|
|
572
|
+
<tbody><tr class='light'><td><a href='spec-googleauthsub_spec_rb.html'>spec/googleauthsub_spec.rb</a>
|
|
573
|
+
</td>
|
|
574
|
+
<td class='lines_total'><tt>340</tt>
|
|
575
|
+
</td>
|
|
576
|
+
<td class='lines_code'><tt>248</tt>
|
|
577
|
+
</td>
|
|
578
|
+
<td><table cellspacing='0' cellpadding='0' align='right'><tr><td><tt class='coverage_total'>9.1%</tt>
|
|
579
|
+
</td>
|
|
580
|
+
<td><table cellspacing='0' class='percent_graph' cellpadding='0' width='100'><tr><td class='covered' width='9'/>
|
|
581
|
+
<td class='uncovered' width='91'/>
|
|
582
|
+
</tr>
|
|
583
|
+
</table>
|
|
584
|
+
</td>
|
|
585
|
+
</tr>
|
|
586
|
+
</table>
|
|
587
|
+
</td>
|
|
588
|
+
<td><table cellspacing='0' cellpadding='0' align='right'><tr><td><tt class='coverage_code'>2.4%</tt>
|
|
589
|
+
</td>
|
|
590
|
+
<td><table cellspacing='0' class='percent_graph' cellpadding='0' width='100'><tr><td class='covered' width='2'/>
|
|
591
|
+
<td class='uncovered' width='98'/>
|
|
592
|
+
</tr>
|
|
593
|
+
</table>
|
|
594
|
+
</td>
|
|
595
|
+
</tr>
|
|
596
|
+
</table>
|
|
597
|
+
</td>
|
|
598
|
+
</tr>
|
|
599
|
+
</tbody>
|
|
600
|
+
</table>
|
|
601
|
+
<pre><span class="inferred0"><a name="line1"></a> 1 # GoogleAuthSub - Ruby on Rails plugin for Google Authorization
|
|
602
|
+
</span><span class="inferred1"><a name="line2"></a> 2 # # Copyright 2008 Stuart Coyle <stuart.coyle@gmail.com>
|
|
603
|
+
</span><span class="inferred0"><a name="line3"></a> 3 #
|
|
604
|
+
</span><span class="inferred1"><a name="line4"></a> 4 # Permission is hereby granted, free of charge, to any person obtaining
|
|
605
|
+
</span><span class="inferred0"><a name="line5"></a> 5 # a copy of this software and associated documentation files (the
|
|
606
|
+
</span><span class="inferred1"><a name="line6"></a> 6 # "Software"), to deal in the Software without restriction, including
|
|
607
|
+
</span><span class="inferred0"><a name="line7"></a> 7 # without limitation the rights to use, copy, modify, merge, publish,
|
|
608
|
+
</span><span class="inferred1"><a name="line8"></a> 8 # distribute, sublicense, and/or sell copies of the Software, and to
|
|
609
|
+
</span><span class="inferred0"><a name="line9"></a> 9 # permit persons to whom the Software is furnished to do so, subject to
|
|
610
|
+
</span><span class="inferred1"><a name="line10"></a> 10 # the following conditions:
|
|
611
|
+
</span><span class="inferred0"><a name="line11"></a> 11 #
|
|
612
|
+
</span><span class="inferred1"><a name="line12"></a> 12 # The above copyright notice and this permission notice shall be
|
|
613
|
+
</span><span class="inferred0"><a name="line13"></a> 13 # included in all copies or substantial portions of the Software.
|
|
614
|
+
</span><span class="inferred1"><a name="line14"></a> 14 #
|
|
615
|
+
</span><span class="inferred0"><a name="line15"></a> 15 # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
616
|
+
</span><span class="inferred1"><a name="line16"></a> 16 # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
617
|
+
</span><span class="inferred0"><a name="line17"></a> 17 # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
618
|
+
</span><span class="inferred1"><a name="line18"></a> 18 # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
619
|
+
</span><span class="inferred0"><a name="line19"></a> 19 # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
620
|
+
</span><span class="inferred1"><a name="line20"></a> 20 # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
621
|
+
</span><span class="inferred0"><a name="line21"></a> 21 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
622
|
+
</span><span class="inferred1"><a name="line22"></a> 22
|
|
623
|
+
</span><span class="inferred0"><a name="line23"></a> 23
|
|
624
|
+
</span><span class="marked1"><a name="line24"></a> 24 require File.dirname(__FILE__) + '/spec_helper'
|
|
625
|
+
</span><span class="marked0"><a name="line25"></a> 25 require 'fake_web'
|
|
626
|
+
</span><span class="marked1"><a name="line26"></a> 26 require 'net/http'
|
|
627
|
+
</span><span class="marked0"><a name="line27"></a> 27 require 'openssl'
|
|
628
|
+
</span><span class="inferred1"><a name="line28"></a> 28
|
|
629
|
+
</span><span class="marked0"><a name="line29"></a> 29 include GData
|
|
630
|
+
</span><span class="inferred1"><a name="line30"></a> 30
|
|
631
|
+
</span><span class="marked0"><a name="line31"></a> 31 describe GoogleAuthSub do
|
|
632
|
+
</span><span class="uncovered1"><a name="line32"></a> 32
|
|
633
|
+
</span><span class="uncovered0"><a name="line33"></a> 33 before do
|
|
634
|
+
</span><span class="uncovered1"><a name="line34"></a> 34
|
|
635
|
+
</span><span class="uncovered0"><a name="line35"></a> 35 @test_next_url = "http://www.example.com/next"
|
|
636
|
+
</span><span class="uncovered1"><a name="line36"></a> 36 @test_scope_url = "http://www.google.com/calendar/feeds"
|
|
637
|
+
</span><span class="uncovered0"><a name="line37"></a> 37
|
|
638
|
+
</span><span class="uncovered1"><a name="line38"></a> 38 # Valid test token
|
|
639
|
+
</span><span class="uncovered0"><a name="line39"></a> 39 @token = TOKEN
|
|
640
|
+
</span><span class="uncovered1"><a name="line40"></a> 40
|
|
641
|
+
</span><span class="uncovered0"><a name="line41"></a> 41 # Invalid test token
|
|
642
|
+
</span><span class="uncovered1"><a name="line42"></a> 42 @invalid_token = INVALID_TOKEN
|
|
643
|
+
</span><span class="uncovered0"><a name="line43"></a> 43 @session_token = SESSION_TOKEN
|
|
644
|
+
</span><span class="uncovered1"><a name="line44"></a> 44
|
|
645
|
+
</span><span class="uncovered0"><a name="line45"></a> 45 # Various URLs we expect to call
|
|
646
|
+
</span><span class="uncovered1"><a name="line46"></a> 46 @valid_request_url = AUTHSUB_REQUEST_URL + "?next=http://www.example.com/next&scope=http://www.google.com/calendar/feeds&session=0&secure=0"
|
|
647
|
+
</span><span class="uncovered0"><a name="line47"></a> 47 @valid_session_request_url = AUTHSUB_REQUEST_URL + "?next=http://www.example.com/next&scope=http://www.google.com/calendar/feeds&session=1&secure=0"
|
|
648
|
+
</span><span class="uncovered1"><a name="line48"></a> 48 @valid_secure_session_url = AUTHSUB_REQUEST_URL + "?next=http://www.example.com/next&scope=http://www.google.com/calendar/feeds&session=1&secure=1"
|
|
649
|
+
</span><span class="uncovered0"><a name="line49"></a> 49 @session_token_request_url = AUTHSUB_SESSION_TOKEN_URL
|
|
650
|
+
</span><span class="uncovered1"><a name="line50"></a> 50 @token_revoke_url = AUTHSUB_REVOKE_TOKEN_URL
|
|
651
|
+
</span><span class="uncovered0"><a name="line51"></a> 51 @token_info_url = AUTHSUB_TOKEN_INFO_URL
|
|
652
|
+
</span><span class="uncovered1"><a name="line52"></a> 52 @data_request_url = @test_scope_url + "/default/private/full"
|
|
653
|
+
</span><span class="uncovered0"><a name="line53"></a> 53
|
|
654
|
+
</span><span class="uncovered1"><a name="line54"></a> 54 @authsub = GoogleAuthSub.new({:next_url => @test_next_url, :scope_url => @test_scope_url})
|
|
655
|
+
</span><span class="uncovered0"><a name="line55"></a> 55 end
|
|
656
|
+
</span><span class="uncovered1"><a name="line56"></a> 56
|
|
657
|
+
</span><span class="uncovered0"><a name="line57"></a> 57 describe "Methods GoogleAuthsubToken should have" do
|
|
658
|
+
</span><span class="uncovered1"><a name="line58"></a> 58
|
|
659
|
+
</span><span class="uncovered0"><a name="line59"></a> 59 it "should have a request_url method" do
|
|
660
|
+
</span><span class="uncovered1"><a name="line60"></a> 60 @authsub.should respond_to(:request_url)
|
|
661
|
+
</span><span class="uncovered0"><a name="line61"></a> 61 end
|
|
662
|
+
</span><span class="uncovered1"><a name="line62"></a> 62
|
|
663
|
+
</span><span class="uncovered0"><a name="line63"></a> 63 it "should have a get_session_token method" do
|
|
664
|
+
</span><span class="uncovered1"><a name="line64"></a> 64 @authsub.should respond_to(:session_token)
|
|
665
|
+
</span><span class="uncovered0"><a name="line65"></a> 65 end
|
|
666
|
+
</span><span class="uncovered1"><a name="line66"></a> 66
|
|
667
|
+
</span><span class="uncovered0"><a name="line67"></a> 67 it "should have an revoke_token method" do
|
|
668
|
+
</span><span class="uncovered1"><a name="line68"></a> 68 @authsub.should respond_to(:revoke_token)
|
|
669
|
+
</span><span class="uncovered0"><a name="line69"></a> 69 end
|
|
670
|
+
</span><span class="uncovered1"><a name="line70"></a> 70
|
|
671
|
+
</span><span class="uncovered0"><a name="line71"></a> 71 it "should have a token_info method" do
|
|
672
|
+
</span><span class="uncovered1"><a name="line72"></a> 72 @authsub.should respond_to(:token_info)
|
|
673
|
+
</span><span class="uncovered0"><a name="line73"></a> 73 end
|
|
674
|
+
</span><span class="uncovered1"><a name="line74"></a> 74
|
|
675
|
+
</span><span class="uncovered0"><a name="line75"></a> 75 it "should have a get method" do
|
|
676
|
+
</span><span class="uncovered1"><a name="line76"></a> 76 @authsub.should respond_to(:get)
|
|
677
|
+
</span><span class="uncovered0"><a name="line77"></a> 77 end
|
|
678
|
+
</span><span class="uncovered1"><a name="line78"></a> 78
|
|
679
|
+
</span><span class="uncovered0"><a name="line79"></a> 79 it "should have a post method" do
|
|
680
|
+
</span><span class="uncovered1"><a name="line80"></a> 80 @authsub.should respond_to(:post)
|
|
681
|
+
</span><span class="uncovered0"><a name="line81"></a> 81 end
|
|
682
|
+
</span><span class="uncovered1"><a name="line82"></a> 82
|
|
683
|
+
</span><span class="uncovered0"><a name="line83"></a> 83 it "should have a put method" do
|
|
684
|
+
</span><span class="uncovered1"><a name="line84"></a> 84 @authsub.should respond_to(:put)
|
|
685
|
+
</span><span class="uncovered0"><a name="line85"></a> 85 end
|
|
686
|
+
</span><span class="uncovered1"><a name="line86"></a> 86
|
|
687
|
+
</span><span class="uncovered0"><a name="line87"></a> 87 it "should have a delete method" do
|
|
688
|
+
</span><span class="uncovered1"><a name="line88"></a> 88 @authsub.should respond_to(:delete)
|
|
689
|
+
</span><span class="uncovered0"><a name="line89"></a> 89 end
|
|
690
|
+
</span><span class="uncovered1"><a name="line90"></a> 90 end
|
|
691
|
+
</span><span class="uncovered0"><a name="line91"></a> 91
|
|
692
|
+
</span><span class="uncovered1"><a name="line92"></a> 92 describe "Request method - getting a single use token from Google" do
|
|
693
|
+
</span><span class="uncovered0"><a name="line93"></a> 93
|
|
694
|
+
</span><span class="uncovered1"><a name="line94"></a> 94 it "should redirect to request url" do
|
|
695
|
+
</span><span class="uncovered0"><a name="line95"></a> 95 @authsub.request_url.to_s.should == @valid_request_url
|
|
696
|
+
</span><span class="uncovered1"><a name="line96"></a> 96 end
|
|
697
|
+
</span><span class="uncovered0"><a name="line97"></a> 97
|
|
698
|
+
</span><span class="uncovered1"><a name="line98"></a> 98 it "should redirect to request url with session = true" do
|
|
699
|
+
</span><span class="uncovered0"><a name="line99"></a> 99 @authsub.session = true
|
|
700
|
+
</span><span class="uncovered1"><a name="line100"></a>100 @authsub.request_url.to_s.should == @valid_session_request_url
|
|
701
|
+
</span><span class="uncovered0"><a name="line101"></a>101 end
|
|
702
|
+
</span><span class="uncovered1"><a name="line102"></a>102
|
|
703
|
+
</span><span class="uncovered0"><a name="line103"></a>103 it "should redirect to request url with secure = true" do
|
|
704
|
+
</span><span class="uncovered1"><a name="line104"></a>104 @authsub.session = true
|
|
705
|
+
</span><span class="uncovered0"><a name="line105"></a>105 @authsub.secure = true
|
|
706
|
+
</span><span class="uncovered1"><a name="line106"></a>106 @authsub.request_url.to_s.should == @valid_secure_session_url
|
|
707
|
+
</span><span class="uncovered0"><a name="line107"></a>107 end
|
|
708
|
+
</span><span class="uncovered1"><a name="line108"></a>108
|
|
709
|
+
</span><span class="uncovered0"><a name="line109"></a>109 it 'should raise an error if the scope URL is not a full path' do
|
|
710
|
+
</span><span class="uncovered1"><a name="line110"></a>110 @authsub.scope = "www.google.com/calendar/feeds"
|
|
711
|
+
</span><span class="uncovered0"><a name="line111"></a>111 lambda { @authsub.request_url }.should raise_error(AuthSubError)
|
|
712
|
+
</span><span class="uncovered1"><a name="line112"></a>112 end
|
|
713
|
+
</span><span class="uncovered0"><a name="line113"></a>113
|
|
714
|
+
</span><span class="uncovered1"><a name="line114"></a>114 it "should raise an error if the next_url is not a full path" do
|
|
715
|
+
</span><span class="uncovered0"><a name="line115"></a>115 @authsub.next_url = "www.schedy.com"
|
|
716
|
+
</span><span class="uncovered1"><a name="line116"></a>116 lambda { @authsub.request_url }.should raise_error(AuthSubError)
|
|
717
|
+
</span><span class="uncovered0"><a name="line117"></a>117 end
|
|
718
|
+
</span><span class="uncovered1"><a name="line118"></a>118 end
|
|
719
|
+
</span><span class="uncovered0"><a name="line119"></a>119
|
|
720
|
+
</span><span class="uncovered1"><a name="line120"></a>120 describe "Token Signatures" do
|
|
721
|
+
</span><span class="uncovered0"><a name="line121"></a>121 before(:all) do
|
|
722
|
+
</span><span class="uncovered1"><a name="line122"></a>122 # Private key for signing
|
|
723
|
+
</span><span class="uncovered0"><a name="line123"></a>123 f = File.open(File.dirname(__FILE__)+"/mock_certs/test_private_key.pem")
|
|
724
|
+
</span><span class="uncovered1"><a name="line124"></a>124 @private_key = OpenSSL::PKey::RSA.new(f.read)
|
|
725
|
+
</span><span class="uncovered0"><a name="line125"></a>125 @public_key = @private_key.public_key
|
|
726
|
+
</span><span class="uncovered1"><a name="line126"></a>126 GoogleAuthSub.set_private_key(@private_key)
|
|
727
|
+
</span><span class="uncovered0"><a name="line127"></a>127 end
|
|
728
|
+
</span><span class="uncovered1"><a name="line128"></a>128
|
|
729
|
+
</span><span class="uncovered0"><a name="line129"></a>129 before do
|
|
730
|
+
</span><span class="uncovered1"><a name="line130"></a>130 Time.stub!(:now).and_return(Time.local(2008,"mar",8,12,15,1)) # == 1204942501
|
|
731
|
+
</span><span class="uncovered0"><a name="line131"></a>131 OpenSSL::BN.stub!(:rand_range).and_return(100000000000000)
|
|
732
|
+
</span><span class="uncovered1"><a name="line132"></a>132 FakeWeb.register_uri(@data_request_url, :response => File.dirname(__FILE__)+"/mock responses/calendar.txt")
|
|
733
|
+
</span><span class="uncovered0"><a name="line133"></a>133 @authsub.secure = true
|
|
734
|
+
</span><span class="uncovered1"><a name="line134"></a>134 @authsub.token = @token
|
|
735
|
+
</span><span class="uncovered0"><a name="line135"></a>135 end
|
|
736
|
+
</span><span class="uncovered1"><a name="line136"></a>136
|
|
737
|
+
</span><span class="uncovered0"><a name="line137"></a>137 it "should have a signing algorithm" do
|
|
738
|
+
</span><span class="uncovered1"><a name="line138"></a>138 @authsub.should respond_to(:sigalg)
|
|
739
|
+
</span><span class="uncovered0"><a name="line139"></a>139 end
|
|
740
|
+
</span><span class="uncovered1"><a name="line140"></a>140
|
|
741
|
+
</span><span class="uncovered0"><a name="line141"></a>141 it "should have rsa-sha1 as the sigalg" do
|
|
742
|
+
</span><span class="uncovered1"><a name="line142"></a>142 @authsub.sigalg.should == 'rsa-sha1'
|
|
743
|
+
</span><span class="uncovered0"><a name="line143"></a>143 end
|
|
744
|
+
</span><span class="uncovered1"><a name="line144"></a>144
|
|
745
|
+
</span><span class="uncovered0"><a name="line145"></a>145 it "should generate a correct authorization header when not secure" do
|
|
746
|
+
</span><span class="uncovered1"><a name="line146"></a>146 @authsub.secure = false
|
|
747
|
+
</span><span class="uncovered0"><a name="line147"></a>147 @authsub.auth_header(Net::HTTP::Get.new(@data_request_url), @data_request_url).should == "AuthSub token=\"#{@token}\""
|
|
748
|
+
</span><span class="uncovered1"><a name="line148"></a>148 end
|
|
749
|
+
</span><span class="uncovered0"><a name="line149"></a>149
|
|
750
|
+
</span><span class="uncovered1"><a name="line150"></a>150 it "should generate a correct authorization header when secure" do
|
|
751
|
+
</span><span class="uncovered0"><a name="line151"></a>151 @authsub.auth_header(Net::HTTP::Get.new(@data_request_url), @data_request_url).should ==
|
|
752
|
+
</span><span class="uncovered1"><a name="line152"></a>152 "AuthSub token=\"CMScoaHmDxC80Y2pAg\" data=\"GET http://www.google.com/calendar/feeds/default/private/full 1204942501 100000000000000\" sig=\"5H44KRwb+B9dMraK0mxsVv3aSF+gCz1hz7FEMViYdl89rC/BXQkmW7Xb9/Xf\n226E5Q+RPtFd+DaK/mXFxtoOJBqlz7mZgV+QOrr/dxCM6HpjIpxF9Qxo9zCT\nKvz0IS4gxXCVMgEgJOdF3YjqZo2bMgiG/Wjm/774Yitkc2tKhL8=\n\" sigalg=\"rsa-sha1\""
|
|
753
|
+
</span><span class="uncovered0"><a name="line153"></a>153 end
|
|
754
|
+
</span><span class="uncovered1"><a name="line154"></a>154
|
|
755
|
+
</span><span class="uncovered0"><a name="line155"></a>155
|
|
756
|
+
</span><span class="uncovered1"><a name="line156"></a>156 it "should take private key as a file" do
|
|
757
|
+
</span><span class="uncovered0"><a name="line157"></a>157 f = File.open(File.dirname(__FILE__)+"/mock_certs/test_private_key.pem")
|
|
758
|
+
</span><span class="uncovered1"><a name="line158"></a>158 GoogleAuthSub.set_private_key(f)
|
|
759
|
+
</span><span class="uncovered0"><a name="line159"></a>159 end
|
|
760
|
+
</span><span class="uncovered1"><a name="line160"></a>160
|
|
761
|
+
</span><span class="uncovered0"><a name="line161"></a>161 it "should take private key as a string" do
|
|
762
|
+
</span><span class="uncovered1"><a name="line162"></a>162 s = File.open(File.dirname(__FILE__)+"/mock_certs/test_private_key.pem").read
|
|
763
|
+
</span><span class="uncovered0"><a name="line163"></a>163 GoogleAuthSub.set_private_key(s)
|
|
764
|
+
</span><span class="uncovered1"><a name="line164"></a>164 end
|
|
765
|
+
</span><span class="uncovered0"><a name="line165"></a>165
|
|
766
|
+
</span><span class="uncovered1"><a name="line166"></a>166 end
|
|
767
|
+
</span><span class="uncovered0"><a name="line167"></a>167
|
|
768
|
+
</span><span class="uncovered1"><a name="line168"></a>168 describe "Token received from Google in response url. Note: in Rails this is simply params[:token]" do
|
|
769
|
+
</span><span class="uncovered0"><a name="line169"></a>169 before do
|
|
770
|
+
</span><span class="uncovered1"><a name="line170"></a>170 url = URI::HTTP.build({:host => "www.example.com", :path => "/next", :query => "token=#{@token}"})
|
|
771
|
+
</span><span class="uncovered0"><a name="line171"></a>171 @authsub.receive_token(url)
|
|
772
|
+
</span><span class="uncovered1"><a name="line172"></a>172 end
|
|
773
|
+
</span><span class="uncovered0"><a name="line173"></a>173
|
|
774
|
+
</span><span class="uncovered1"><a name="line174"></a>174 it "should find the token in the headers and save it" do
|
|
775
|
+
</span><span class="uncovered0"><a name="line175"></a>175 @authsub.token.should == @token
|
|
776
|
+
</span><span class="uncovered1"><a name="line176"></a>176 end
|
|
777
|
+
</span><span class="uncovered0"><a name="line177"></a>177
|
|
778
|
+
</span><span class="uncovered1"><a name="line178"></a>178 it "should retain current token value if no token is found" do
|
|
779
|
+
</span><span class="uncovered0"><a name="line179"></a>179 url = URI::HTTP.build({:host => "www.example.com", :path => "/next", :query => ""})
|
|
780
|
+
</span><span class="uncovered1"><a name="line180"></a>180 @authsub.receive_token(url)
|
|
781
|
+
</span><span class="uncovered0"><a name="line181"></a>181 @authsub.token.should == @token
|
|
782
|
+
</span><span class="uncovered1"><a name="line182"></a>182 end
|
|
783
|
+
</span><span class="uncovered0"><a name="line183"></a>183
|
|
784
|
+
</span><span class="uncovered1"><a name="line184"></a>184 end
|
|
785
|
+
</span><span class="uncovered0"><a name="line185"></a>185
|
|
786
|
+
</span><span class="uncovered1"><a name="line186"></a>186 describe "Getting a session token from google" do
|
|
787
|
+
</span><span class="uncovered0"><a name="line187"></a>187 before do
|
|
788
|
+
</span><span class="uncovered1"><a name="line188"></a>188 FakeWeb.register_uri(@session_token_request_url, :response => File.dirname(__FILE__)+"/mock responses/session_token.txt")
|
|
789
|
+
</span><span class="uncovered0"><a name="line189"></a>189 end
|
|
790
|
+
</span><span class="uncovered1"><a name="line190"></a>190
|
|
791
|
+
</span><span class="uncovered0"><a name="line191"></a>191 it "should make request to correct url" do
|
|
792
|
+
</span><span class="uncovered1"><a name="line192"></a>192 FakeWeb.should_receive(:response_for).with(@session_token_request_url).
|
|
793
|
+
</span><span class="uncovered0"><a name="line193"></a>193 and_return(FakeWeb::Registry.instance.response_for(@session_token_request_url))
|
|
794
|
+
</span><span class="uncovered1"><a name="line194"></a>194 @authsub.session_token
|
|
795
|
+
</span><span class="uncovered0"><a name="line195"></a>195 end
|
|
796
|
+
</span><span class="uncovered1"><a name="line196"></a>196
|
|
797
|
+
</span><span class="uncovered0"><a name="line197"></a>197 end
|
|
798
|
+
</span><span class="uncovered1"><a name="line198"></a>198
|
|
799
|
+
</span><span class="uncovered0"><a name="line199"></a>199 describe "Succesful receipt of a session token" do
|
|
800
|
+
</span><span class="uncovered1"><a name="line200"></a>200 before do
|
|
801
|
+
</span><span class="uncovered0"><a name="line201"></a>201 FakeWeb.register_uri(@session_token_request_url, :response => File.dirname(__FILE__)+"/mock responses/session_token.txt")
|
|
802
|
+
</span><span class="uncovered1"><a name="line202"></a>202 end
|
|
803
|
+
</span><span class="uncovered0"><a name="line203"></a>203
|
|
804
|
+
</span><span class="uncovered1"><a name="line204"></a>204 it "should set session_token in session to correct value" do
|
|
805
|
+
</span><span class="uncovered0"><a name="line205"></a>205 @authsub.session_token
|
|
806
|
+
</span><span class="uncovered1"><a name="line206"></a>206 @authsub.token.should == @session_token
|
|
807
|
+
</span><span class="uncovered0"><a name="line207"></a>207 end
|
|
808
|
+
</span><span class="uncovered1"><a name="line208"></a>208 end
|
|
809
|
+
</span><span class="uncovered0"><a name="line209"></a>209
|
|
810
|
+
</span><span class="uncovered1"><a name="line210"></a>210 describe "Unsuccessful request for session token - revoked token" do
|
|
811
|
+
</span><span class="uncovered0"><a name="line211"></a>211 it "should raise a server exception error" do
|
|
812
|
+
</span><span class="uncovered1"><a name="line212"></a>212 FakeWeb.register_uri(@session_token_request_url, :response => File.dirname(__FILE__)+"/mock responses/revoked_token.txt")
|
|
813
|
+
</span><span class="uncovered0"><a name="line213"></a>213 lambda {
|
|
814
|
+
</span><span class="uncovered1"><a name="line214"></a>214 @authsub.session_token
|
|
815
|
+
</span><span class="uncovered0"><a name="line215"></a>215 }.should raise_error(AuthSubError)
|
|
816
|
+
</span><span class="uncovered1"><a name="line216"></a>216 end
|
|
817
|
+
</span><span class="uncovered0"><a name="line217"></a>217 end
|
|
818
|
+
</span><span class="uncovered1"><a name="line218"></a>218
|
|
819
|
+
</span><span class="uncovered0"><a name="line219"></a>219 describe "Revoking a session token" do
|
|
820
|
+
</span><span class="uncovered1"><a name="line220"></a>220 before do
|
|
821
|
+
</span><span class="uncovered0"><a name="line221"></a>221 FakeWeb.register_uri(@token_revoke_url, :response => File.dirname(__FILE__)+"/mock responses/revoke_token.txt")
|
|
822
|
+
</span><span class="uncovered1"><a name="line222"></a>222 @authsub.token = @token
|
|
823
|
+
</span><span class="uncovered0"><a name="line223"></a>223 end
|
|
824
|
+
</span><span class="uncovered1"><a name="line224"></a>224
|
|
825
|
+
</span><span class="uncovered0"><a name="line225"></a>225 it "should make request to correct url" do
|
|
826
|
+
</span><span class="uncovered1"><a name="line226"></a>226 FakeWeb.should_receive(:response_for).with(@token_revoke_url).
|
|
827
|
+
</span><span class="uncovered0"><a name="line227"></a>227 and_return(FakeWeb::Registry.instance.response_for(@token_revoke_url))
|
|
828
|
+
</span><span class="uncovered1"><a name="line228"></a>228 @authsub.revoke_token
|
|
829
|
+
</span><span class="uncovered0"><a name="line229"></a>229 end
|
|
830
|
+
</span><span class="uncovered1"><a name="line230"></a>230
|
|
831
|
+
</span><span class="uncovered0"><a name="line231"></a>231 it "should return true" do
|
|
832
|
+
</span><span class="uncovered1"><a name="line232"></a>232 @authsub.revoke_token.should be_true
|
|
833
|
+
</span><span class="uncovered0"><a name="line233"></a>233 end
|
|
834
|
+
</span><span class="uncovered1"><a name="line234"></a>234
|
|
835
|
+
</span><span class="uncovered0"><a name="line235"></a>235 it "should return false on an error" do
|
|
836
|
+
</span><span class="uncovered1"><a name="line236"></a>236 FakeWeb.register_uri(@token_revoke_url, :response => File.dirname(__FILE__)+"/mock responses/unauthorized.txt")
|
|
837
|
+
</span><span class="uncovered0"><a name="line237"></a>237 @authsub.revoke_token.should be_false
|
|
838
|
+
</span><span class="uncovered1"><a name="line238"></a>238 end
|
|
839
|
+
</span><span class="uncovered0"><a name="line239"></a>239 end
|
|
840
|
+
</span><span class="uncovered1"><a name="line240"></a>240
|
|
841
|
+
</span><span class="uncovered0"><a name="line241"></a>241 describe "Getting token info from google" do
|
|
842
|
+
</span><span class="uncovered1"><a name="line242"></a>242 before do
|
|
843
|
+
</span><span class="uncovered0"><a name="line243"></a>243 FakeWeb.register_uri(@token_info_url, :response => File.dirname(__FILE__)+"/mock responses/token_info.txt")
|
|
844
|
+
</span><span class="uncovered1"><a name="line244"></a>244 @authsub.token = @token
|
|
845
|
+
</span><span class="uncovered0"><a name="line245"></a>245 end
|
|
846
|
+
</span><span class="uncovered1"><a name="line246"></a>246
|
|
847
|
+
</span><span class="uncovered0"><a name="line247"></a>247 it "should make request to correct url" do
|
|
848
|
+
</span><span class="uncovered1"><a name="line248"></a>248 FakeWeb.should_receive(:response_for).with(@token_info_url).
|
|
849
|
+
</span><span class="uncovered0"><a name="line249"></a>249 and_return(FakeWeb::Registry.instance.response_for(@token_info_url))
|
|
850
|
+
</span><span class="uncovered1"><a name="line250"></a>250 @authsub.token_info
|
|
851
|
+
</span><span class="uncovered0"><a name="line251"></a>251 end
|
|
852
|
+
</span><span class="uncovered1"><a name="line252"></a>252
|
|
853
|
+
</span><span class="uncovered0"><a name="line253"></a>253 it "should return the info as [:target => target, :scope=> scope, :secure=> secure]" do
|
|
854
|
+
</span><span class="uncovered1"><a name="line254"></a>254 @authsub.token_info.should == {:target=>'http://www.example.com',
|
|
855
|
+
</span><span class="uncovered0"><a name="line255"></a>255 :scope=>'http://www.google.com/calendar/feeds/',
|
|
856
|
+
</span><span class="uncovered1"><a name="line256"></a>256 :secure=>true}
|
|
857
|
+
</span><span class="uncovered0"><a name="line257"></a>257 end
|
|
858
|
+
</span><span class="uncovered1"><a name="line258"></a>258
|
|
859
|
+
</span><span class="uncovered0"><a name="line259"></a>259 it "should throw an error on an incorrect response from Google" do
|
|
860
|
+
</span><span class="uncovered1"><a name="line260"></a>260 FakeWeb.register_uri(@token_info_url, :response => File.dirname(__FILE__)+"/mock responses/bad_token_info.txt")
|
|
861
|
+
</span><span class="uncovered0"><a name="line261"></a>261 lambda{
|
|
862
|
+
</span><span class="uncovered1"><a name="line262"></a>262 @authsub.token_info
|
|
863
|
+
</span><span class="uncovered0"><a name="line263"></a>263 }.should raise_error(AuthSubError)
|
|
864
|
+
</span><span class="uncovered1"><a name="line264"></a>264 end
|
|
865
|
+
</span><span class="uncovered0"><a name="line265"></a>265 end
|
|
866
|
+
</span><span class="uncovered1"><a name="line266"></a>266
|
|
867
|
+
</span><span class="uncovered0"><a name="line267"></a>267
|
|
868
|
+
</span><span class="uncovered1"><a name="line268"></a>268 describe "GET data from google using the token" do
|
|
869
|
+
</span><span class="uncovered0"><a name="line269"></a>269 before do
|
|
870
|
+
</span><span class="uncovered1"><a name="line270"></a>270 FakeWeb.register_uri(@data_request_url, :response => File.dirname(__FILE__)+"/mock responses/calendar.txt")
|
|
871
|
+
</span><span class="uncovered0"><a name="line271"></a>271 end
|
|
872
|
+
</span><span class="uncovered1"><a name="line272"></a>272
|
|
873
|
+
</span><span class="uncovered0"><a name="line273"></a>273 it "should append the scope to the url when it does not start with http://" do
|
|
874
|
+
</span><span class="uncovered1"><a name="line274"></a>274 FakeWeb.should_receive(:response_for).with(@data_request_url).
|
|
875
|
+
</span><span class="uncovered0"><a name="line275"></a>275 and_return(FakeWeb::Registry.instance.response_for(@data_request_url))
|
|
876
|
+
</span><span class="uncovered1"><a name="line276"></a>276 @authsub.get("/default/private/full")
|
|
877
|
+
</span><span class="uncovered0"><a name="line277"></a>277 end
|
|
878
|
+
</span><span class="uncovered1"><a name="line278"></a>278
|
|
879
|
+
</span><span class="uncovered0"><a name="line279"></a>279 it "should raise errors if there is an error in the response" do
|
|
880
|
+
</span><span class="uncovered1"><a name="line280"></a>280 FakeWeb.register_uri(@data_request_url, :response => File.dirname(__FILE__)+"/mock responses/unauthorized.txt")
|
|
881
|
+
</span><span class="uncovered0"><a name="line281"></a>281 lambda{@authsub.get(@data_request_url)}.should raise_error(Net::HTTPServerException)
|
|
882
|
+
</span><span class="uncovered1"><a name="line282"></a>282 end
|
|
883
|
+
</span><span class="uncovered0"><a name="line283"></a>283
|
|
884
|
+
</span><span class="uncovered1"><a name="line284"></a>284 it "should pass the entire response as a Net::HTTPResponse object" do
|
|
885
|
+
</span><span class="uncovered0"><a name="line285"></a>285 @authsub.get(@data_request_url).should be_a_kind_of(Net::HTTPResponse)
|
|
886
|
+
</span><span class="uncovered1"><a name="line286"></a>286 end
|
|
887
|
+
</span><span class="uncovered0"><a name="line287"></a>287
|
|
888
|
+
</span><span class="uncovered1"><a name="line288"></a>288 it "should have the correct body" do
|
|
889
|
+
</span><span class="uncovered0"><a name="line289"></a>289 @authsub.get(@data_request_url).body.should == "This is my wonderful calendar!\nEmpty as usual.\nHire me!!"
|
|
890
|
+
</span><span class="uncovered1"><a name="line290"></a>290 end
|
|
891
|
+
</span><span class="uncovered0"><a name="line291"></a>291 end
|
|
892
|
+
</span><span class="uncovered1"><a name="line292"></a>292
|
|
893
|
+
</span><span class="uncovered0"><a name="line293"></a>293 describe "POST Data to Google using the token" do
|
|
894
|
+
</span><span class="uncovered1"><a name="line294"></a>294 before do
|
|
895
|
+
</span><span class="uncovered0"><a name="line295"></a>295 FakeWeb.register_uri(@data_request_url, :response => File.dirname(__FILE__)+"/mock responses/calendar.txt")
|
|
896
|
+
</span><span class="uncovered1"><a name="line296"></a>296 end
|
|
897
|
+
</span><span class="uncovered0"><a name="line297"></a>297
|
|
898
|
+
</span><span class="uncovered1"><a name="line298"></a>298 it "should append the scope to the url when it does not start with http://" do
|
|
899
|
+
</span><span class="uncovered0"><a name="line299"></a>299 FakeWeb.should_receive(:response_for).with(@data_request_url).
|
|
900
|
+
</span><span class="uncovered1"><a name="line300"></a>300 and_return(FakeWeb::Registry.instance.response_for(@data_request_url))
|
|
901
|
+
</span><span class="uncovered0"><a name="line301"></a>301 @authsub.post("/default/private/full")
|
|
902
|
+
</span><span class="uncovered1"><a name="line302"></a>302 end
|
|
903
|
+
</span><span class="uncovered0"><a name="line303"></a>303
|
|
904
|
+
</span><span class="uncovered1"><a name="line304"></a>304 it "should raise errors if there is an error in the response" do
|
|
905
|
+
</span><span class="uncovered0"><a name="line305"></a>305 FakeWeb.register_uri(@data_request_url, :response => File.dirname(__FILE__)+"/mock responses/unauthorized.txt")
|
|
906
|
+
</span><span class="uncovered1"><a name="line306"></a>306 lambda{@authsub.post(@data_request_url)}.should raise_error(Net::HTTPServerException)
|
|
907
|
+
</span><span class="uncovered0"><a name="line307"></a>307 end
|
|
908
|
+
</span><span class="uncovered1"><a name="line308"></a>308
|
|
909
|
+
</span><span class="uncovered0"><a name="line309"></a>309 it "should pass the entire response as a Net::HTTPResponse object" do
|
|
910
|
+
</span><span class="uncovered1"><a name="line310"></a>310 @authsub.post(@data_request_url).should be_a_kind_of(Net::HTTPResponse)
|
|
911
|
+
</span><span class="uncovered0"><a name="line311"></a>311 end
|
|
912
|
+
</span><span class="uncovered1"><a name="line312"></a>312
|
|
913
|
+
</span><span class="uncovered0"><a name="line313"></a>313 it "should have the correct body" do
|
|
914
|
+
</span><span class="uncovered1"><a name="line314"></a>314 @authsub.post(@data_request_url).body.should == "This is my wonderful calendar!\nEmpty as usual.\nHire me!!"
|
|
915
|
+
</span><span class="uncovered0"><a name="line315"></a>315 end
|
|
916
|
+
</span><span class="uncovered1"><a name="line316"></a>316 end
|
|
917
|
+
</span><span class="uncovered0"><a name="line317"></a>317
|
|
918
|
+
</span><span class="uncovered1"><a name="line318"></a>318 describe "PUT to Google using the token" do
|
|
919
|
+
</span><span class="uncovered0"><a name="line319"></a>319 before do
|
|
920
|
+
</span><span class="uncovered1"><a name="line320"></a>320 FakeWeb.register_uri(@data_request_url, :response => File.dirname(__FILE__)+"/mock responses/calendar.txt")
|
|
921
|
+
</span><span class="uncovered0"><a name="line321"></a>321 end
|
|
922
|
+
</span><span class="uncovered1"><a name="line322"></a>322
|
|
923
|
+
</span><span class="uncovered0"><a name="line323"></a>323 it "should recieve a PUT" do
|
|
924
|
+
</span><span class="uncovered1"><a name="line324"></a>324 FakeWeb.should_receive(:response_for).with(@data_request_url).
|
|
925
|
+
</span><span class="uncovered0"><a name="line325"></a>325 and_return(FakeWeb::Registry.instance.response_for(@data_request_url))
|
|
926
|
+
</span><span class="uncovered1"><a name="line326"></a>326 @authsub.put(@data_request_url)
|
|
927
|
+
</span><span class="uncovered0"><a name="line327"></a>327 end
|
|
928
|
+
</span><span class="uncovered1"><a name="line328"></a>328 end
|
|
929
|
+
</span><span class="uncovered0"><a name="line329"></a>329
|
|
930
|
+
</span><span class="uncovered1"><a name="line330"></a>330 describe "DELETE request to Google using the token" do
|
|
931
|
+
</span><span class="uncovered0"><a name="line331"></a>331 before do
|
|
932
|
+
</span><span class="uncovered1"><a name="line332"></a>332 FakeWeb.register_uri(@data_request_url, :response => File.dirname(__FILE__)+"/mock responses/calendar.txt")
|
|
933
|
+
</span><span class="uncovered0"><a name="line333"></a>333 end
|
|
934
|
+
</span><span class="uncovered1"><a name="line334"></a>334 it "should recieve a DELETE" do
|
|
935
|
+
</span><span class="uncovered0"><a name="line335"></a>335 FakeWeb.should_receive(:response_for).with(@data_request_url).
|
|
936
|
+
</span><span class="uncovered1"><a name="line336"></a>336 and_return(FakeWeb::Registry.instance.response_for(@data_request_url))
|
|
937
|
+
</span><span class="uncovered0"><a name="line337"></a>337 @authsub.delete(@data_request_url)
|
|
938
|
+
</span><span class="uncovered1"><a name="line338"></a>338 end
|
|
939
|
+
</span><span class="uncovered0"><a name="line339"></a>339 end
|
|
940
|
+
</span><span class="uncovered1"><a name="line340"></a>340 end
|
|
941
|
+
</span></pre><hr/>
|
|
942
|
+
<p>Generated using the <a href='http://eigenclass.org/hiki.rb?rcov'>rcov code coverage analysis tool for Ruby</a>
|
|
943
|
+
version 0.8.1.2.</p>
|
|
944
|
+
<p><a href='http://validator.w3.org/check/referer'><img src='http://www.w3.org/Icons/valid-xhtml10' height='31' alt='Valid XHTML 1.0!' width='88'/>
|
|
945
|
+
</a>
|
|
946
|
+
<a href='http://jigsaw.w3.org/css-validator/check/referer'><img src='http://jigsaw.w3.org/css-validator/images/vcss' alt='Valid CSS!' style='border:0;width:88px;height:31px'/>
|
|
947
|
+
</a>
|
|
948
|
+
</p>
|
|
949
|
+
</body>
|
|
950
|
+
</html>
|