impostor 0.0.1 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,483 @@
1
+ require File.join(File.dirname(__FILE__), "..", "lib", "www", "impostor")
2
+ require File.join(File.dirname(__FILE__), "..", "lib", "www", "impostor", "phpbb3")
3
+ require File.join(File.dirname(__FILE__), "test_helper")
4
+
5
+ require 'test/unit'
6
+ require 'rubygems'
7
+ require 'mocha'
8
+ require 'mechanize'
9
+
10
+ class TestWwwImpostorPhpbb3 < Test::Unit::TestCase
11
+ include TestHelper
12
+
13
+ def setup
14
+ @cookie_jar = File.join(Dir.tmpdir, 'www_impostor_phpbb_test.yml')
15
+ @app_root = 'http://localhost/phpbb3/'
16
+ @im = WWW::Impostor.new(config())
17
+ end
18
+
19
+ def teardown
20
+ File.delete(@cookie_jar) if File.exist?(@cookie_jar)
21
+ end
22
+
23
+ def config(config={})
24
+ c = {:type => :phpbb3,
25
+ :app_root => @app_root,
26
+ :login_page => 'ucp.php?mode=login',
27
+ :posting_page => 'posting.php',
28
+ :user_agent => 'Windows IE 7',
29
+ :username => 'tester',
30
+ :password => 'test',
31
+ :cookie_jar => @cookie_jar
32
+ }.merge(config)
33
+ c
34
+ end
35
+
36
+ def phpbb3_good_submit_new_topic_form
37
+ load_page('phpbb3-get-new-topic-form-good-response.html').join
38
+ end
39
+
40
+ def phpbb3_good_submit_post_form
41
+ body = load_page('phpbb3-get-reply-form-good-response.html').join
42
+ end
43
+
44
+ def test_initialize_with_cookie_jar
45
+ FileUtils.touch(@cookie_jar)
46
+
47
+ WWW::Mechanize::CookieJar.any_instance.expects(:load).once.with(@cookie_jar)
48
+ im = WWW::Impostor.new(config())
49
+ assert im
50
+ end
51
+
52
+ def test_initialize_without_cookie_jar
53
+ WWW::Mechanize::CookieJar.any_instance.expects(:load).never
54
+ im = WWW::Impostor.new(config())
55
+ assert im
56
+ end
57
+
58
+ def test_version
59
+ assert_equal @im.version, "WWW::Impostor::Phpbb3"
60
+ end
61
+
62
+ def test_fetch_login_page
63
+ page = load_page('phpbb3-login.html').join
64
+ WWW::Mechanize.any_instance.expects(:get).once.with(
65
+ URI.join(@app_root, config[:login_page])
66
+ ).returns(page)
67
+
68
+ assert_equal page, @im.send(:fetch_login_page)
69
+ end
70
+
71
+ def test_login_form_and_button_should_return_a_form_and_button
72
+ response = {'content-type' => 'text/html'}
73
+ body = load_page('phpbb3-login.html').join
74
+ page = WWW::Mechanize::Page.new(uri=nil, response, body, code=nil, mech=nil)
75
+ form, button = @im.send(:login_form_and_button, page)
76
+ assert_equal "POST", form.method
77
+ assert_equal "./ucp.php?mode=login&sid=a9b66b7fedae3d5696d297194f940aa4", form.action
78
+ assert_equal true, form.is_a?(WWW::Mechanize::Form)
79
+ assert_equal true, button.is_a?(WWW::Mechanize::Form::Button)
80
+ end
81
+
82
+ def test_login_form_and_button_should_raise_login_error_when_form_is_missing
83
+ err = assert_raise(WWW::Impostor::LoginError) do
84
+ form, button = @im.send(:login_form_and_button, nil)
85
+ end
86
+ assert_equal "unknown login page format", err.original_exception.message
87
+ end
88
+
89
+ def test_post_login_should_return_page
90
+ response = {'content-type' => 'text/html'}
91
+ body = load_page('phpbb3-logged-in.html').join
92
+ page = WWW::Mechanize::Page.new(uri=nil, response, body, code=nil, mech=nil)
93
+ form = mock()
94
+ button = mock()
95
+ WWW::Mechanize.any_instance.expects(:submit).once.with(form, button).returns(page)
96
+
97
+ assert_equal page, @im.send(:post_login, form, button)
98
+ end
99
+
100
+ def test_post_login_should_raise_login_error
101
+ errmsg = "from test #{Time.now.to_s}"
102
+ WWW::Mechanize.any_instance.expects(:submit).raises(StandardError, errmsg)
103
+ err = assert_raise(WWW::Impostor::LoginError) do
104
+ page = @im.send(:post_login, nil, nil)
105
+ end
106
+ assert_equal errmsg, err.original_exception.message
107
+ end
108
+
109
+ def test_bad_login_page_should_raise_exception
110
+ errmsg = "from test #{Time.now.to_s}"
111
+ WWW::Mechanize.any_instance.expects(:get).once.with(
112
+ URI.join(@app_root, config[:login_page])
113
+ ).raises(StandardError, errmsg)
114
+
115
+ err = assert_raise(WWW::Impostor::LoginError) do
116
+ @im.send(:fetch_login_page)
117
+ end
118
+ assert_equal errmsg, err.original_exception.message
119
+ end
120
+
121
+ def test_already_logged_in_should_not_post_login_information_again_instance_varialbe
122
+ @im.instance_variable_set(:@loggedin, true)
123
+ @im.expects(:fetch_login_page).never
124
+ assert_equal true, @im.login
125
+ end
126
+
127
+ def test_already_logged_in_should_not_post_login_information_again
128
+ @im.instance_variable_set(:@loggedin, false)
129
+ page = mock()
130
+ @im.stubs(:fetch_login_page).returns(page)
131
+ @im.expects(:logged_in?).once.with(page).returns(true)
132
+ @im.expects(:login_form_and_button).with(page).never
133
+ @im.login
134
+ end
135
+
136
+ def test_login_should_login
137
+ @im.instance_variable_set(:@loggedin, false)
138
+ login_page = mock()
139
+ @im.stubs(:fetch_login_page).returns(login_page)
140
+ @im.expects(:logged_in?).once.with(login_page).returns(false)
141
+ form = mock()
142
+ button = mock()
143
+ @im.expects(:login_form_and_button).with(login_page).returns([form, button])
144
+ logged_in_page = mock()
145
+ @im.expects(:post_login).with(form, button).returns(logged_in_page)
146
+ @im.expects(:logged_in?).once.with(logged_in_page).returns(true)
147
+ @im.expects(:load_topics).once.returns(true)
148
+
149
+ assert_equal true, @im.login
150
+ end
151
+
152
+ def test_should_be_logged_in?
153
+ response = {'content-type' => 'text/html'}
154
+ body = load_page('phpbb3-logged-in.html').join
155
+ page = WWW::Mechanize::Page.new(uri=nil, response, body, code=nil, mech=nil)
156
+ assert_equal true, @im.send(:logged_in?, page)
157
+ end
158
+
159
+ def test_should_not_be_logged_in?
160
+ response = {'content-type' => 'text/html'}
161
+ body = load_page('phpbb3-not-logged-in.html').join
162
+ page = WWW::Mechanize::Page.new(uri=nil, response, body, code=nil, mech=nil)
163
+ assert_equal false, @im.send(:logged_in?, page)
164
+ end
165
+
166
+ def test_logout_does_nothing_if_logged_out
167
+ @im.instance_variable_set(:@loggedin, false)
168
+ @im.expects(:cookie_jar).never
169
+ @im.expects(:save_topics).never
170
+ assert_equal false, @im.logout
171
+ end
172
+
173
+ def test_logout
174
+ @im.instance_variable_set(:@loggedin, true)
175
+ cookie_jar = mock()
176
+ @im.expects(:cookie_jar).times(2).returns(cookie_jar)
177
+ WWW::Mechanize::CookieJar.any_instance.expects(:save_as).once.with(cookie_jar).returns(nil)
178
+ @im.expects(:save_topics).once
179
+ assert_equal true, @im.logout
180
+ assert_equal nil, @im.instance_variable_get(:@forum)
181
+ assert_equal nil, @im.instance_variable_get(:@topic)
182
+ assert_equal nil, @im.instance_variable_get(:@subject)
183
+ assert_equal nil, @im.instance_variable_get(:@message)
184
+ assert_equal false, @im.instance_variable_get(:@loggedin)
185
+ end
186
+
187
+
188
+ def test_new_topic_without_forum_set_should_raise_exception
189
+ @im.instance_variable_set(:@forum, nil)
190
+ err = assert_raise(WWW::Impostor::PostError) do
191
+ @im.new_topic
192
+ end
193
+ assert_equal "forum not set", err.original_exception.message
194
+ err = assert_raise(WWW::Impostor::PostError) do
195
+ @im.new_topic(f=nil,s="hello world",m="hello world")
196
+ end
197
+ assert_equal "forum not set", err.original_exception.message
198
+ end
199
+
200
+ def test_new_topic_without_subject_set_should_raise_exception
201
+ @im.instance_variable_set(:@forum, 1)
202
+ @im.instance_variable_set(:@subject, nil)
203
+ err = assert_raise(WWW::Impostor::PostError) do
204
+ assert @im.new_topic
205
+ end
206
+ assert_equal "topic name not given", err.original_exception.message
207
+ err = assert_raise(WWW::Impostor::PostError) do
208
+ @im.new_topic(f=1,s=nil,m="hello world")
209
+ end
210
+ assert_equal "topic name not given", err.original_exception.message
211
+ end
212
+
213
+ def test_new_topic_without_message_set_should_raise_exception
214
+ @im.instance_variable_set(:@forum, 1)
215
+ @im.instance_variable_set(:@subject, 'test')
216
+ @im.instance_variable_set(:@message, nil)
217
+ err = assert_raise(WWW::Impostor::PostError) do
218
+ @im.new_topic
219
+ end
220
+ assert_equal "message not set", err.original_exception.message
221
+ err = assert_raise(WWW::Impostor::PostError) do
222
+ @im.new_topic(f=1,s="hello world",m=nil)
223
+ end
224
+ assert_equal "message not set", err.original_exception.message
225
+ end
226
+
227
+ def test_new_topic_not_logged_in_should_raise_exception
228
+ @im.expects(:login).once.returns(false)
229
+ @im.instance_variable_set(:@loggedin, false)
230
+
231
+ err = assert_raise(WWW::Impostor::PostError) do
232
+ @im.new_topic(f=2,s="hello world",m="hello ruby")
233
+ end
234
+ assert_equal "not logged in", err.original_exception.message
235
+ end
236
+
237
+ def test_getting_bad_post_page_for_new_topic_should_raise_exception
238
+ @im.instance_variable_set(:@loggedin, true)
239
+ forum = 2
240
+ posting_page = @im.posting_page
241
+ posting_page.query = "mode=post&f=#{forum}"
242
+ errmsg = "from test #{Time.now.to_s}"
243
+ WWW::Mechanize.any_instance.expects(:get).once.with(
244
+ posting_page
245
+ ).raises(StandardError, errmsg)
246
+
247
+ err = assert_raise(WWW::Impostor::PostError) do
248
+ @im.new_topic(f=forum,s="hello world",m="hello ruby")
249
+ end
250
+ assert_equal errmsg, err.original_exception.message
251
+ end
252
+
253
+ def test_getting_bad_post_form_for_new_topic_should_raise_exception
254
+ @im.instance_variable_set(:@loggedin, true)
255
+ response = {'content-type' => 'text/html'}
256
+ body = '<form action="./posting.php?mode=post&amp;f=37&amp;sid=a56da5e50e92e3f2d8dc14bb8c4936bf" method="post" name="BADPOSTFORM" enctype="multipart/form-data"></form>'
257
+ page = WWW::Mechanize::Page.new(uri=nil, response, body, code=nil, mech=nil)
258
+ forum = 2
259
+ posting_page = @im.posting_page
260
+ posting_page.query = "mode=post&f=#{forum}"
261
+ WWW::Mechanize.any_instance.expects(:get).once.with(posting_page).returns(page)
262
+ err = assert_raise(WWW::Impostor::PostError) do
263
+ @im.new_topic(f=forum,s="hello world",m="hello ruby")
264
+ end
265
+ assert_equal 'post form not found', err.original_exception.message
266
+ end
267
+
268
+ def test_submitting_bad_post_for_new_topic_form_should_raise_exception
269
+ @im.instance_variable_set(:@loggedin, true)
270
+ response = {'content-type' => 'text/html'}
271
+ body = "<html><body>#{phpbb3_good_submit_new_topic_form}</body></html"
272
+ page = WWW::Mechanize::Page.new(uri=nil, response, body, code=nil, mech=nil)
273
+ forum = 2
274
+ posting_page = @im.posting_page
275
+ posting_page.query = "mode=post&f=#{forum}"
276
+ WWW::Mechanize.any_instance.expects(:get).once.with(posting_page).returns(page)
277
+ errmsg = "from test #{Time.now.to_s}"
278
+ WWW::Mechanize.any_instance.expects(:submit).once.raises(StandardError, errmsg)
279
+ err = assert_raise(WWW::Impostor::PostError) do
280
+ @im.new_topic(f=forum,s="hello world",m="hello ruby")
281
+ end
282
+ assert_equal errmsg, err.original_exception.message
283
+ end
284
+
285
+ def test_unexpected_viewtopic_for_new_topic_should_raise_exception
286
+ @im.instance_variable_set(:@loggedin, true)
287
+ response = {'content-type' => 'text/html'}
288
+ body = phpbb3_good_submit_new_topic_form
289
+ page = WWW::Mechanize::Page.new(uri=nil, response, body, code=nil, mech=nil)
290
+ forum = 2
291
+ posting_page = @im.posting_page
292
+ posting_page.query = "mode=post&f=#{forum}"
293
+ WWW::Mechanize.any_instance.expects(:get).once.with(posting_page).returns(page)
294
+ WWW::Mechanize.any_instance.expects(:submit).once.returns('JUNK')
295
+ err = assert_raise(WWW::Impostor::PostError) do
296
+ @im.new_topic(f=forum,s="hello world",m="hello ruby")
297
+ end
298
+ assert_equal "unexpected new topic ID", err.original_exception.message
299
+ end
300
+
301
+ def test_malformed_viewtopic_response_for_new_topic_should_raise_exception
302
+ @im.instance_variable_set(:@loggedin, true)
303
+ response = {'content-type' => 'text/html'}
304
+ body = phpbb3_good_submit_new_topic_form
305
+ post_page = WWW::Mechanize::Page.new(uri=nil, response, body, code=nil, mech=nil)
306
+ forum = 2
307
+ posting_page = @im.posting_page
308
+ posting_page.query = "mode=post&f=#{forum}"
309
+ WWW::Mechanize.any_instance.expects(:get).with(posting_page).returns(post_page)
310
+ body = "JUNK"
311
+ #uri = URI.parse("http://localhost/forum/viewtopic.php?f=37&t=205")
312
+ uri = URI.parse("http://localhost/forum/viewtopic.php?f=2")
313
+ page = WWW::Mechanize::Page.new(uri, response, body, code=nil, mech=nil)
314
+ form = post_page.forms.first
315
+ button = form.buttons.detect{|b| b.name == 'post'}
316
+ WWW::Mechanize.any_instance.expects(:submit).with(form, button).once.returns(page)
317
+ err = assert_raise(WWW::Impostor::PostError) do
318
+ @im.new_topic(f=forum,s="hello world",m="hello ruby")
319
+ end
320
+ assert_equal "unexpected new topic ID", err.original_exception.message
321
+ end
322
+
323
+ def test_new_topic_should_work
324
+ @im.instance_variable_set(:@loggedin, true)
325
+ response = {'content-type' => 'text/html'}
326
+ body = phpbb3_good_submit_new_topic_form
327
+ page = WWW::Mechanize::Page.new(uri=nil, response, body, code=nil, mech=nil)
328
+ forum = 2
329
+ subject = "hello world"
330
+ message = "hello ruby"
331
+ posting_page = @im.posting_page
332
+ posting_page.query = "mode=post&f=#{forum}"
333
+ WWW::Mechanize.any_instance.expects(:get).with(posting_page).returns(page)
334
+
335
+ body = load_page('phpbb3-post-new_topic-good-response.html').join
336
+ uri = URI.parse("http://localhost/forum/viewtopic.php?f=2&t=29")
337
+ page = WWW::Mechanize::Page.new(uri, response, body, code=nil, mech=nil)
338
+ WWW::Mechanize.any_instance.expects(:submit).once.returns(page)
339
+
340
+ @im.expects(:add_subject).once.with(forum,29,subject)
341
+ assert_equal true, @im.new_topic(f=forum,s=subject,m=message)
342
+ assert_equal forum, @im.instance_variable_get(:@forum)
343
+ assert_equal 29, @im.instance_variable_get(:@topic)
344
+ assert_equal subject, @im.instance_variable_get(:@subject)
345
+ assert_equal message, @im.instance_variable_get(:@message)
346
+ end
347
+
348
+ def test_posting_page
349
+ c = config
350
+ assert_equal URI.join(@app_root, c[:posting_page]), @im.posting_page
351
+ end
352
+
353
+ def test_post_without_forum_set_should_raise_exception
354
+ @im.instance_variable_set(:@forum, nil)
355
+ err = assert_raise(WWW::Impostor::PostError) do
356
+ @im.post
357
+ end
358
+ assert_equal "forum not set", err.original_exception.message
359
+ err = assert_raise(WWW::Impostor::PostError) do
360
+ @im.post(f=nil,t=nil,m=nil)
361
+ end
362
+ assert_equal "forum not set", err.original_exception.message
363
+ end
364
+
365
+ def test_post_without_topic_set_should_raise_exception
366
+ @im.instance_variable_set(:@forum, 1)
367
+ @im.instance_variable_set(:@topic, nil)
368
+ err = assert_raise(WWW::Impostor::PostError) do
369
+ @im.post
370
+ end
371
+ assert_equal "topic not set", err.original_exception.message
372
+ err = assert_raise(WWW::Impostor::PostError) do
373
+ @im.post(f=2,t=nil,m=nil)
374
+ end
375
+ assert_equal "topic not set", err.original_exception.message
376
+ end
377
+
378
+ def test_post_without_message_set_should_raise_exception
379
+ @im.instance_variable_set(:@forum, 1)
380
+ @im.instance_variable_set(:@topic, 1)
381
+ @im.instance_variable_set(:@message, nil)
382
+ err = assert_raise(WWW::Impostor::PostError) do
383
+ @im.post
384
+ end
385
+ assert_equal "message not set", err.original_exception.message
386
+ err = assert_raise(WWW::Impostor::PostError) do
387
+ @im.post(f=2,t=2,m=nil)
388
+ end
389
+ assert_equal "message not set", err.original_exception.message
390
+ end
391
+
392
+ def test_post_not_logged_in_should_raise_exception
393
+ @im.expects(:login).once.returns(false)
394
+ @im.instance_variable_set(:@loggedin, false)
395
+ err = assert_raise(WWW::Impostor::PostError) do
396
+ @im.post(2,2,'hello')
397
+ end
398
+ assert_equal "not logged in", err.original_exception.message
399
+ end
400
+
401
+ def test_bad_post_page_for_post_should_raise_exception
402
+ @im.instance_variable_set(:@loggedin, true)
403
+ topic = 1
404
+ forum = 2
405
+ posting_page = @im.posting_page
406
+ posting_page.query = "mode=reply&f=#{forum}&t=#{topic}"
407
+ errmsg = "from test #{Time.now.to_s}"
408
+ WWW::Mechanize.any_instance.expects(:get).once.with(
409
+ posting_page
410
+ ).raises(StandardError, errmsg)
411
+ err = assert_raise(WWW::Impostor::PostError) do
412
+ @im.post(forum,topic,'hello')
413
+ end
414
+ assert_equal errmsg, err.original_exception.message
415
+ end
416
+
417
+ def test_bad_post_form_for_post_should_raise_exception
418
+ @im.instance_variable_set(:@loggedin, true)
419
+ response = {'content-type' => 'text/html'}
420
+ body = '<form action="posting.php" method="post" name="post"></form>'
421
+ page = WWW::Mechanize::Page.new(uri=nil, response, body, code=nil, mech=nil)
422
+ topic = 2
423
+ forum = 5
424
+ posting_page = @im.posting_page
425
+ posting_page.query = "mode=reply&f=#{forum}&t=#{topic}"
426
+ WWW::Mechanize.any_instance.expects(:get).once.with(posting_page).returns(page)
427
+ err = assert_raise(WWW::Impostor::PostError) do
428
+ @im.post(forum,topic,'hello')
429
+ end
430
+ assert_equal "post form not found", err.original_exception.message
431
+ end
432
+
433
+ def test_submitting_bad_post_form_for_post_should_raise_exception
434
+ @im.instance_variable_set(:@loggedin, true)
435
+ response = {'content-type' => 'text/html'}
436
+ body = phpbb3_good_submit_post_form
437
+ page = WWW::Mechanize::Page.new(uri=nil, response, body, code=nil, mech=nil)
438
+ topic = 2
439
+ forum = 9
440
+ posting_page = @im.posting_page
441
+ posting_page.query = "mode=reply&f=#{forum}&t=#{topic}"
442
+ WWW::Mechanize.any_instance.expects(:get).once.with(posting_page).returns(page)
443
+ errmsg = "from test #{Time.now.to_s}"
444
+ WWW::Mechanize.any_instance.expects(:submit).once.raises(StandardError, errmsg)
445
+ err = assert_raise(WWW::Impostor::PostError) do
446
+ @im.post(forum,topic,'hello')
447
+ end
448
+ assert_equal errmsg, err.original_exception.message
449
+ end
450
+
451
+ def test_should_post
452
+ @im.instance_variable_set(:@loggedin, true)
453
+ response = {'content-type' => 'text/html'}
454
+ body = phpbb3_good_submit_post_form
455
+ form_page = WWW::Mechanize::Page.new(uri=nil, response, body, code=nil, mech=nil)
456
+ topic = 2
457
+ forum = 1
458
+ posting_page = @im.posting_page
459
+ posting_page.query = "mode=reply&f=#{forum}&t=#{topic}"
460
+ WWW::Mechanize.any_instance.expects(:get).once.with(posting_page).returns(form_page)
461
+ form = form_page.forms.first
462
+ button = form.buttons.detect{|b| b.name == 'post'}
463
+ body = load_page('phpbb3-post-reply-good-response.html').join
464
+ posting_page.query = "mode=reply&f=#{forum}&t=#{topic}"
465
+ page_url = @im.posting_page
466
+ page_url.path = "/forum/viewtopic.php"
467
+ page_url.query = "f=#{forum}&t=#{topic}&p=3725"
468
+ page_url.fragment = "p3725"
469
+ page = WWW::Mechanize::Page.new(uri=page_url, response, body, code=nil, mech=nil)
470
+ WWW::Mechanize.any_instance.expects(:submit).with(form, button).once.returns(page)
471
+
472
+ subject = "test #{Time.now.to_s}"
473
+ @im.expects(:get_subject).once.returns(subject)
474
+
475
+ assert_equal true, @im.post(1,topic,'hello')
476
+ assert_equal 1, @im.instance_variable_get(:@forum)
477
+ assert_equal topic, @im.instance_variable_get(:@topic)
478
+ assert_equal subject, @im.instance_variable_get(:@subject)
479
+ assert_equal 'hello', @im.instance_variable_get(:@message)
480
+ end
481
+
482
+ end
483
+
metadata CHANGED
@@ -1,40 +1,20 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: impostor
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mike Mondragon
8
8
  autorequire:
9
9
  bindir: bin
10
- cert_chain:
11
- - |
12
- -----BEGIN CERTIFICATE-----
13
- MIIDPDCCAiSgAwIBAgIBADANBgkqhkiG9w0BAQUFADBEMRYwFAYDVQQDDA1taWtl
14
- bW9uZHJhZ29uMRUwEwYKCZImiZPyLGQBGRYFZ21haWwxEzARBgoJkiaJk/IsZAEZ
15
- FgNjb20wHhcNMDcwODI3MTk1NjQ1WhcNMDgwODI2MTk1NjQ1WjBEMRYwFAYDVQQD
16
- DA1taWtlbW9uZHJhZ29uMRUwEwYKCZImiZPyLGQBGRYFZ21haWwxEzARBgoJkiaJ
17
- k/IsZAEZFgNjb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQD9J/K2
18
- wp3uqpMzXOfOlY+zb2qRuP0Q6SaqPf8+Y/OD4n+KR91999nRcd9MED4b9okQb5XF
19
- KjbIRtEyXRtX+nmajf3CqrtOe+Gej9Uru1jBiqwdegCipN2HRrqqOX0Tv15o2W6n
20
- Lxayxj4JD/DWLrBaKWagv87MCwb0FeKB45Z6bZFA62QM7beBSB9TY+Lv7qpW+uPk
21
- vlLC9nj765cU0jZNcddgLZcKVl4AihhA5YNOI6XztxA+DSYze8EryrkES8YjY+O7
22
- oPSSvyi/13QnIPpB884/k9alxWqzx3+qQI6UxXeVY1idS9M+1q3QC6vteo5KqE41
23
- enZ5Unpw288x+gc5AgMBAAGjOTA3MAkGA1UdEwQCMAAwCwYDVR0PBAQDAgSwMB0G
24
- A1UdDgQWBBQfSk8NE+/Ad8ZKbEAgwIoKvI5H+TANBgkqhkiG9w0BAQUFAAOCAQEA
25
- ZyBadUGUGP/x2pZEIPYVcP9vG0l64wLDksJNVJ90rEgToaQqypCElvipbCXYF9Pe
26
- y+5G/bJItH/OKiIHcdJUs8UdXMH5icCpyqNgNopHVkVsE8gghMYm0ptHyKWswRAK
27
- 6nBO3mw0C2n+KiWdTSXf6HtF9sBg5SV+I/kZEGHbiFEglxfiVoUnlvsCbRt2QlCC
28
- uMBzJ1sNVgCL3bqeEZwZj0o2HLxOHg0sSOc16rCfX5yvDo7bFM0XAMvwNgYg8ifQ
29
- zeHINowDygx2eefh0hynPGd/QwgANxHpr4+V93KLsyLosIgAIsqoXRkNx3a5gecL
30
- q8SfeAt4oNk4pWm9Ocmiww==
31
- -----END CERTIFICATE-----
10
+ cert_chain: []
32
11
 
33
- date: 2008-02-08 00:00:00 -08:00
12
+ date: 2008-07-30 00:00:00 -07:00
34
13
  default_executable:
35
14
  dependencies:
36
15
  - !ruby/object:Gem::Dependency
37
16
  name: hpricot
17
+ type: :runtime
38
18
  version_requirement:
39
19
  version_requirements: !ruby/object:Gem::Requirement
40
20
  requirements:
@@ -44,6 +24,7 @@ dependencies:
44
24
  version:
45
25
  - !ruby/object:Gem::Dependency
46
26
  name: mechanize
27
+ type: :runtime
47
28
  version_requirement:
48
29
  version_requirements: !ruby/object:Gem::Requirement
49
30
  requirements:
@@ -53,14 +34,15 @@ dependencies:
53
34
  version:
54
35
  - !ruby/object:Gem::Dependency
55
36
  name: hoe
37
+ type: :development
56
38
  version_requirement:
57
39
  version_requirements: !ruby/object:Gem::Requirement
58
40
  requirements:
59
41
  - - ">="
60
42
  - !ruby/object:Gem::Version
61
- version: 1.5.0
43
+ version: 1.7.0
62
44
  version:
63
- description: "Makes automatic posts to the following forum applications: * Web Wiz Forums (WWF) 7.9 * Web Wiz Forums (WWF) 8.0 * PHP Bullitin Board (phpBB) 2.0 (2.0.22) == SYNOPSIS: # config yaml has options specefic to wwf79, wwf80, phpbb2, etc. # read the impostor docs for options to the kind of forum in use # config can be keyed by symbols or strings config = YAML::load_file('conf/impostor.yml') post = WWW::Impostor.new(config) message = %q{hello world is to application programmers as tea pots are to graphics programmers} # your application stores forum and topic ids post.post(forum=5,topic=10,message) # make a new topic subject = \"about programmers...\" post.new_topic(forum=7,subject,message) post.logout"
45
+ description: "== FEATURES/PROBLEMS: Makes automated posts to the following forum applications: * Web Wiz Forums (WWF) 7.9 * Web Wiz Forums (WWF) 8.0 * PHP Bullitin Board (phpBB) 2.0 (2.0.22) * PHP Bullitin Board (phpBB) 3.0 == SYNOPSIS:"
64
46
  email: mikemondragon@gmail.com
65
47
  executables: []
66
48
 
@@ -78,6 +60,7 @@ files:
78
60
  - lib/impostor.rb
79
61
  - lib/www/impostor.rb
80
62
  - lib/www/impostor/phpbb2.rb
63
+ - lib/www/impostor/phpbb3.rb
81
64
  - lib/www/impostor/wwf79.rb
82
65
  - lib/www/impostor/wwf80.rb
83
66
  - test/fixtures/phpbb2-get-new_topic-form-good-response.html
@@ -91,6 +74,13 @@ files:
91
74
  - test/fixtures/phpbb2-post-reply-good-response.html
92
75
  - test/fixtures/phpbb2-post-reply-throttled-response.html
93
76
  - test/fixtures/phpbb2-too-many-posts.html
77
+ - test/fixtures/phpbb3-get-new-topic-form-good-response.html
78
+ - test/fixtures/phpbb3-get-reply-form-good-response.html
79
+ - test/fixtures/phpbb3-logged-in.html
80
+ - test/fixtures/phpbb3-login.html
81
+ - test/fixtures/phpbb3-not-logged-in.html
82
+ - test/fixtures/phpbb3-post-new_topic-good-response.html
83
+ - test/fixtures/phpbb3-post-reply-good-response.html
94
84
  - test/fixtures/wwf79-forum_posts.html
95
85
  - test/fixtures/wwf79-general-new-topic-error.html
96
86
  - test/fixtures/wwf79-general-posting-error.html
@@ -117,6 +107,7 @@ files:
117
107
  - test/test_helper.rb
118
108
  - test/test_www_impostor.rb
119
109
  - test/test_www_impostor_phpbb2.rb
110
+ - test/test_www_impostor_phpbb3.rb
120
111
  - test/test_www_impostor_wwf79.rb
121
112
  - test/test_www_impostor_wwf80.rb
122
113
  - vendor/plugins/impostor/lib/autotest/discover.rb
@@ -144,12 +135,13 @@ required_rubygems_version: !ruby/object:Gem::Requirement
144
135
  requirements: []
145
136
 
146
137
  rubyforge_project: impostor
147
- rubygems_version: 1.0.1
138
+ rubygems_version: 1.2.0
148
139
  signing_key:
149
140
  specification_version: 2
150
141
  summary: imPOSTor posts messages to non-RESTful forums and blogs
151
142
  test_files:
152
143
  - test/test_www_impostor_phpbb2.rb
144
+ - test/test_www_impostor_phpbb3.rb
153
145
  - test/test_www_impostor_wwf79.rb
154
146
  - test/test_www_impostor_wwf80.rb
155
147
  - test/test_helper.rb
data.tar.gz.sig DELETED
@@ -1,3 +0,0 @@
1
- ��^L���<�k�*�K��D<ѓ
2
- ��� T.||�[�������kW�LA��?���onv��1Ywb]<c��?GS1�z�_AU��2�ޮW�|Α�
3
- ��q�H� � )�C�EyK��H�t�wYi_V1E��e�i���y�[��Q
metadata.gz.sig DELETED
@@ -1,3 +0,0 @@
1
- �,�KcA<��Shn~�/�mk�n�<XG{�:S�t��\ ����TR�E�}!��!���\�ka[m���/^k]ە3������~�a�N}�
2
- S �7Nc��H��
3
- H��#y����