ruby-aws 1.6.0

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 (76) hide show
  1. data.tar.gz.sig +0 -0
  2. data/.gemtest +0 -0
  3. data/History.txt +75 -0
  4. data/LICENSE.txt +202 -0
  5. data/Manifest.txt +72 -0
  6. data/NOTICE.txt +4 -0
  7. data/README.txt +105 -0
  8. data/Rakefile +33 -0
  9. data/bin/ruby-aws +9 -0
  10. data/lib/amazon/util.rb +10 -0
  11. data/lib/amazon/util/binder.rb +48 -0
  12. data/lib/amazon/util/data_reader.rb +169 -0
  13. data/lib/amazon/util/filter_chain.rb +79 -0
  14. data/lib/amazon/util/hash_nesting.rb +93 -0
  15. data/lib/amazon/util/lazy_results.rb +59 -0
  16. data/lib/amazon/util/logging.rb +23 -0
  17. data/lib/amazon/util/paginated_iterator.rb +70 -0
  18. data/lib/amazon/util/proactive_results.rb +116 -0
  19. data/lib/amazon/util/threadpool.rb +129 -0
  20. data/lib/amazon/util/user_data_store.rb +100 -0
  21. data/lib/amazon/webservices/mechanical_turk.rb +123 -0
  22. data/lib/amazon/webservices/mechanical_turk_requester.rb +274 -0
  23. data/lib/amazon/webservices/mturk/mechanical_turk_error_handler.rb +150 -0
  24. data/lib/amazon/webservices/mturk/question_generator.rb +58 -0
  25. data/lib/amazon/webservices/util/amazon_authentication_relay.rb +72 -0
  26. data/lib/amazon/webservices/util/command_line.rb +157 -0
  27. data/lib/amazon/webservices/util/convenience_wrapper.rb +90 -0
  28. data/lib/amazon/webservices/util/filter_proxy.rb +45 -0
  29. data/lib/amazon/webservices/util/mock_transport.rb +70 -0
  30. data/lib/amazon/webservices/util/request_signer.rb +42 -0
  31. data/lib/amazon/webservices/util/rest_transport.rb +120 -0
  32. data/lib/amazon/webservices/util/soap_simplifier.rb +48 -0
  33. data/lib/amazon/webservices/util/soap_transport.rb +20 -0
  34. data/lib/amazon/webservices/util/soap_transport_header_handler.rb +27 -0
  35. data/lib/amazon/webservices/util/unknown_result_exception.rb +27 -0
  36. data/lib/amazon/webservices/util/validation_exception.rb +55 -0
  37. data/lib/amazon/webservices/util/xml_simplifier.rb +61 -0
  38. data/lib/ruby-aws.rb +19 -0
  39. data/lib/ruby-aws/version.rb +6 -0
  40. data/run_rcov.sh +1 -0
  41. data/samples/mturk/best_image/BestImage.rb +61 -0
  42. data/samples/mturk/best_image/best_image.properties +39 -0
  43. data/samples/mturk/best_image/best_image.question +82 -0
  44. data/samples/mturk/blank_slate/BlankSlate.rb +63 -0
  45. data/samples/mturk/blank_slate/BlankSlate_multithreaded.rb +67 -0
  46. data/samples/mturk/helloworld/MTurkHelloWorld.rb +56 -0
  47. data/samples/mturk/helloworld/mturk.yml +8 -0
  48. data/samples/mturk/review_policy/ReviewPolicy.rb +139 -0
  49. data/samples/mturk/review_policy/review_policy.question +30 -0
  50. data/samples/mturk/reviewer/Reviewer.rb +103 -0
  51. data/samples/mturk/reviewer/mturk.yml +8 -0
  52. data/samples/mturk/simple_survey/SimpleSurvey.rb +90 -0
  53. data/samples/mturk/simple_survey/simple_survey.question +30 -0
  54. data/samples/mturk/site_category/SiteCategory.rb +87 -0
  55. data/samples/mturk/site_category/externalpage.htm +71 -0
  56. data/samples/mturk/site_category/site_category.input +6 -0
  57. data/samples/mturk/site_category/site_category.properties +45 -0
  58. data/samples/mturk/site_category/site_category.question +9 -0
  59. data/test/mturk/test_changehittypeofhit.rb +130 -0
  60. data/test/mturk/test_error_handler.rb +137 -0
  61. data/test/mturk/test_mechanical_turk_requester.rb +178 -0
  62. data/test/mturk/test_mock_mechanical_turk_requester.rb +205 -0
  63. data/test/test_ruby-aws.rb +24 -0
  64. data/test/unit/test_binder.rb +89 -0
  65. data/test/unit/test_data_reader.rb +135 -0
  66. data/test/unit/test_exceptions.rb +32 -0
  67. data/test/unit/test_hash_nesting.rb +99 -0
  68. data/test/unit/test_lazy_results.rb +89 -0
  69. data/test/unit/test_mock_transport.rb +132 -0
  70. data/test/unit/test_paginated_iterator.rb +58 -0
  71. data/test/unit/test_proactive_results.rb +108 -0
  72. data/test/unit/test_question_generator.rb +55 -0
  73. data/test/unit/test_threadpool.rb +50 -0
  74. data/test/unit/test_user_data_store.rb +80 -0
  75. metadata +238 -0
  76. metadata.gz.sig +0 -0
@@ -0,0 +1,9 @@
1
+ <?xml version="1.0"?>
2
+ <!-- Note the inclusion of the @urls variable which is defined as a field in the input file. ERB is the template engine that is
3
+ used to perform the merging of variables into template files.
4
+ -->
5
+ <% require 'cgi' %>
6
+ <ExternalQuestion xmlns="http://mechanicalturk.amazonaws.com/AWSMechanicalTurkDataSchemas/2006-07-14/ExternalQuestion.xsd">
7
+ <ExternalURL>http://s3.amazonaws.com/mturk/samples/sitecategory/externalpage.htm?url=<%= CGI::escape @urls %></ExternalURL>
8
+ <FrameHeight>400</FrameHeight>
9
+ </ExternalQuestion>
@@ -0,0 +1,130 @@
1
+ # Copyright:: Copyright (c) 2007 Amazon Technologies, Inc.
2
+ # License:: Apache License, Version 2.0
3
+
4
+ require 'test/unit/testcase'
5
+ require 'ruby-aws'
6
+ require 'amazon/webservices/mturk/question_generator'
7
+ require 'amazon/webservices/util/soap_transport'
8
+ require 'amazon/webservices/util/rest_transport'
9
+ require 'amazon/webservices/util/mock_transport'
10
+
11
+
12
+ class TestChangeHITTypeOfHIT < Test::Unit::TestCase
13
+ include Amazon::WebServices
14
+
15
+ def setup
16
+ # Setting up the default requester interface.
17
+ # This will default to running against Sandbox, but we specify the host explicitly for safety.
18
+ # Access Key ID and Secret Access Key will be loaded from user preference file
19
+ # If not found, the user will be interatively queried for their authentication information.
20
+ @@mturk ||= Amazon::WebServices::MechanicalTurkRequester.new :Host => :Sandbox if ENV['DISABLE_MTURK_SANDBOX_TEST'].nil?
21
+
22
+ # set up a mock version of the service
23
+ @@mock ||= Amazon::WebServices::Util::MockTransport.new
24
+ @@mockturk ||= Amazon::WebServices::MechanicalTurkRequester.new( :Transport => @@mock, :AWSAccessKey => 'bogus', :AWSAccessKeyId => 'fake' )
25
+
26
+ # lets just build this question once
27
+ @@question ||= MTurk::QuestionGenerator.build { |q| q.ask 'Have you tried changing the description of a HIT?' }
28
+ end
29
+
30
+ def testUpdateHITMock
31
+ @@mock.listen do |call|
32
+ case call.name
33
+ when :GetHIT
34
+ {:HIT => {:HITId => call.request[:HITId], :Title => "old title", :Description => "foo", :Request => {} } }
35
+ when :RegisterHITType
36
+ {:RegisterHITTypeResult => {:HITTypeId => 'mockHITType', :Request => {} } }
37
+ else
38
+ {}
39
+ end
40
+ end
41
+
42
+ @@mockturk.updateHIT( 'mockHIT', { :Title => 'new title' } )
43
+ assert_equal :GetHIT, @@mock.next.name
44
+
45
+ ht = @@mock.next
46
+ assert_equal :RegisterHITType, ht.name
47
+ assert_equal "new title", ht.request[:Title]
48
+ assert_equal "foo", ht.request[:Description]
49
+
50
+ update = @@mock.next
51
+ assert_equal :ChangeHITTypeOfHIT, update.name
52
+ assert_equal 'mockHIT', update.request[:HITId]
53
+ assert_equal 'mockHITType', update.request[:HITTypeId]
54
+ end
55
+
56
+ # Allow user to skip these tests by setting the DISABLE_MTURK_SANDBOX_TEST environment variable
57
+ if ENV['DISABLE_MTURK_SANDBOX_TEST'].nil?
58
+
59
+ def testHappyCase
60
+ hit_result = @@mturk.createHIT :Title => 'Ruby SDK Test Hit (ChangeHITTypeOfHIT)',
61
+ :Description => 'Autogenerated ruby-aws test case description1',
62
+ :Keywords => 'Ruby, test, SDK, changehittypeofhit, description1',
63
+ :Reward => { :Amount => 0.01, :CurrencyCode => 'USD' },
64
+ :Question => @@question
65
+ new_hit_type = @@mturk.registerHITType :Title => 'Ruby SDK Test Hit (ChangeHITTypeOfHIT) - Updated',
66
+ :Description => 'Autogenerated ruby-aws test case description2',
67
+ :Keywords => 'Ruby, test, SDK, changehittypeofhit, description2',
68
+ :Reward => { :Amount => 0.01, :CurrencyCode => 'USD' }
69
+ @@mturk.changeHITTypeOfHIT :HITId => hit_result[:HITId],
70
+ :HITTypeId => new_hit_type[:HITTypeId]
71
+ updated_hit = @@mturk.getHIT :HITId => hit_result[:HITId]
72
+ assert_equal new_hit_type[:HITTypeId], updated_hit[:HITTypeId], 'HITTypeId of ' + hit_result[:HITId] + ' not updated'
73
+ @@mturk.forceExpireHIT :HITId => hit_result[:HITId]
74
+ @@mturk.disposeHIT :HITId => hit_result[:HITId]
75
+ end
76
+
77
+ def testUpdateHIT
78
+ hit_result = @@mturk.createHIT :Title => 'Ruby SDK Test Hit (ChangeHITTypeOfHIT)',
79
+ :Description => 'Autogenerated ruby-aws test case description1',
80
+ :Keywords => 'Ruby, test, SDK, changehittypeofhit, description1',
81
+ :Reward => { :Amount => 0.01, :CurrencyCode => 'USD' },
82
+ :Question => @@question
83
+ new_template = { :Title => 'Ruby SDK Test Hit (ChangeHITTypeOfHIT) - Updated',
84
+ :Description => 'Autogenerated ruby-aws test case description2',
85
+ :Keywords => 'Ruby, test, SDK, changehittypeofhit, description2',
86
+ :Reward => { :Amount => 0.01, :CurrencyCode => 'USD' } }
87
+ @@mturk.updateHIT(hit_result[:HITId], new_template)
88
+ assert_not_equal hit_result[:HITTypeId], @@mturk.getHIT(:HITId=>hit_result[:HITId])[:HITTypeId], 'HITTypeId not changed'
89
+ @@mturk.forceExpireHIT :HITId => hit_result[:HITId]
90
+ @@mturk.disposeHIT :HITId => hit_result[:HITId]
91
+ end
92
+
93
+ def testUpdateHITs
94
+ hit_result1 = @@mturk.createHIT :Title => 'Ruby SDK Test Hit (ChangeHITTypeOfHIT)',
95
+ :Description => 'Autogenerated ruby-aws test case description1',
96
+ :Keywords => 'Ruby, test, SDK, changehittypeofhit, description1',
97
+ :Reward => { :Amount => 0.01, :CurrencyCode => 'USD' },
98
+ :Question => @@question
99
+ hit_result2 = @@mturk.createHIT :Title => 'Ruby SDK Test Hit (ChangeHITTypeOfHIT)',
100
+ :Description => 'Autogenerated ruby-aws test case description1',
101
+ :Keywords => 'Ruby, test, SDK, changehittypeofhit, description1',
102
+ :Reward => { :Amount => 0.01, :CurrencyCode => 'USD' },
103
+ :Question => @@question
104
+ hit_result3 = @@mturk.createHIT :Title => 'Ruby SDK Test Hit (ChangeHITTypeOfHIT)',
105
+ :Description => 'Autogenerated ruby-aws test case description1',
106
+ :Keywords => 'Ruby, test, SDK, changehittypeofhit, description1',
107
+ :Reward => { :Amount => 0.01, :CurrencyCode => 'USD' },
108
+ :Question => @@question
109
+ new_template = { :Title => 'Ruby SDK Test Hit (ChangeHITTypeOfHIT) - Updated',
110
+ :Description => 'Autogenerated ruby-aws test case description2',
111
+ :Keywords => 'Ruby, test, SDK, changehittypeofhit, description2',
112
+ :Reward => { :Amount => 0.01, :CurrencyCode => 'USD' } }
113
+
114
+ @@mturk.updateHITs(new_template, [hit_result1[:HITId], hit_result2[:HITId], hit_result3[:HITId]])
115
+
116
+ assert_not_equal hit_result1[:HITTypeId], @@mturk.getHIT(:HITId=>hit_result1[:HITId])[:HITTypeId], 'HITTypeId not changed'
117
+ assert_not_equal hit_result2[:HITTypeId], @@mturk.getHIT(:HITId=>hit_result2[:HITId])[:HITTypeId], 'HITTypeId not changed'
118
+ assert_not_equal hit_result3[:HITTypeId], @@mturk.getHIT(:HITId=>hit_result3[:HITId])[:HITTypeId], 'HITTypeId not changed'
119
+ @@mturk.forceExpireHIT :HITId => hit_result1[:HITId]
120
+ @@mturk.disposeHIT :HITId => hit_result1[:HITId]
121
+ @@mturk.forceExpireHIT :HITId => hit_result2[:HITId]
122
+ @@mturk.disposeHIT :HITId => hit_result2[:HITId]
123
+ @@mturk.forceExpireHIT :HITId => hit_result3[:HITId]
124
+ @@mturk.disposeHIT :HITId => hit_result3[:HITId]
125
+ end
126
+
127
+ end # if not DISABLE_MTURK_SANDBOX_TEST
128
+
129
+ end
130
+
@@ -0,0 +1,137 @@
1
+ # Copyright:: Copyright (c) 2007 Amazon Technologies, Inc.
2
+ # License:: Apache License, Version 2.0
3
+
4
+ require 'test/unit/testcase'
5
+ require 'ruby-aws'
6
+ require 'amazon/webservices/util/mock_transport'
7
+ require 'timeout'
8
+
9
+ class TestErrorHandler < Test::Unit::TestCase
10
+
11
+ def setup
12
+ @mock = Amazon::WebServices::Util::MockTransport.new
13
+ @mturk = Amazon::WebServices::MechanicalTurkRequester.new( :Transport => @mock, :AWSAccessKey => 'bogus', :AWSAccessKeyId => 'fake' )
14
+ end
15
+
16
+ def testTimeoutOnce
17
+
18
+ # mock will timeout first time, return success on second call
19
+ toggle = false
20
+ @mock.listen do |call|
21
+ Timeout.timeout(1) do
22
+ if toggle
23
+ toggle = !toggle
24
+ else
25
+ toggle = !toggle
26
+ sleep(5)
27
+ end
28
+ end
29
+ nil
30
+ end
31
+
32
+ assert_equal false, toggle
33
+ # invoke a retryable call once, should auto-retry and return success
34
+ @mturk.getAccountBalance
35
+ assert_equal 2, @mock.call_buffer.size, "Should have retried once"
36
+ @mock.each {|call| assert_equal :GetAccountBalance, call.name, "Should have been a GetAccountBalance call" }
37
+
38
+ @mock.flush
39
+ assert_equal false, toggle
40
+ # but invoking a non-retryable call will throw an exception
41
+ begin
42
+ @mturk.grantBonus
43
+ fail "Should have thrown an exception"
44
+ rescue Timeout::Error
45
+ # expect this exception
46
+ end
47
+ assert_equal true, toggle
48
+ assert_equal :GrantBonus, @mock.next.name
49
+ assert_nil @mock.next
50
+ end
51
+
52
+ def testTimeoutAlways
53
+
54
+ #mock will always timeout
55
+ @mock.listen do |call|
56
+ Timeout.timeout(1) { sleep(2) }
57
+ end
58
+
59
+ begin
60
+ @mturk.searchHITs
61
+ fail "Should have thrown an exception"
62
+ rescue Timeout::Error
63
+ # expect this exception
64
+ end
65
+
66
+ 7.times do
67
+ assert_equal :SearchHITs, @mock.next.name
68
+ end
69
+ assert_nil @mock.next
70
+ end
71
+
72
+
73
+ def testRuntimeError
74
+ @mock.listen do |call|
75
+ raise "Blah"
76
+ end
77
+
78
+ begin
79
+ @mturk.searchHITs
80
+ fail "Should have thrown an exception"
81
+ rescue RuntimeError => e
82
+ assert_equal "Blah", e.to_s
83
+ end
84
+ end
85
+
86
+ def testRuntimeErrorThrottled
87
+ @mock.listen do |call|
88
+ raise "Throttled"
89
+ end
90
+
91
+ begin
92
+ @mturk.searchHITs
93
+ fail "Should have thrown an exception"
94
+ rescue RuntimeError => e
95
+ assert_equal "Throttled", e.to_s
96
+ end
97
+ end
98
+
99
+ if Amazon::WebServices::Util::SOAPTransport.canSOAP?
100
+ def testSOAPFaultError
101
+ arg = (Struct.new :faultcode, :faultstring, :faultactor, :detail).new
102
+ arg.faultcode = (Struct.new :data).new 'aws:blarg'
103
+ arg.faultstring = (Struct.new :data).new 'blarg blarg blarg'
104
+ s = SOAP::FaultError.new( arg )
105
+
106
+ @mock.listen do |call|
107
+ raise s
108
+ end
109
+
110
+ begin
111
+ @mturk.searchHITs
112
+ fail "Should have thrown an exception"
113
+ rescue SOAP::FaultError => e
114
+ assert_equal s, e
115
+ end
116
+ end
117
+
118
+ def testSOAPFaultErrorThrottled
119
+ arg = (Struct.new :faultcode, :faultstring, :faultactor, :detail).new
120
+ arg.faultcode = (Struct.new :data).new 'aws:Server.ServiceUnavailable'
121
+ arg.faultstring = (Struct.new :data).new 'Hey, give us a break!'
122
+ s = SOAP::FaultError.new( arg )
123
+
124
+ @mock.listen do |call|
125
+ raise s
126
+ end
127
+
128
+ begin
129
+ @mturk.searchHITs
130
+ fail "Should have thrown an exception"
131
+ rescue SOAP::FaultError => e
132
+ assert_equal s, e
133
+ end
134
+ end
135
+ end # canSOAP?
136
+
137
+ end
@@ -0,0 +1,178 @@
1
+ # Copyright:: Copyright (c) 2007 Amazon Technologies, Inc.
2
+ # License:: Apache License, Version 2.0
3
+
4
+ require 'test/unit/testcase'
5
+ require 'ruby-aws'
6
+ require 'amazon/webservices/mturk/question_generator'
7
+ require 'amazon/webservices/util/soap_transport'
8
+ require 'amazon/webservices/util/rest_transport'
9
+
10
+ # Allow user to skip these tests by setting the DISABLE_MTURK_SANDBOX_TEST environment variable
11
+ if ENV['DISABLE_MTURK_SANDBOX_TEST'].nil?
12
+
13
+ class TestMechanicalTurkRequester < Test::Unit::TestCase
14
+ include Amazon::WebServices
15
+
16
+ def setup
17
+ # Setting up the default requester interface.
18
+ # This will default to running against Sandbox, but we'll the host explicitly for safety.
19
+ # Access Key ID and Secret Access Key will be loaded from user preference file
20
+ # If not found, the user will be interatively queried for their authentication information.
21
+ @@mturk ||= MechanicalTurkRequester.new( :Host => :Sandbox )
22
+
23
+ # utilize the SOAP transport, if we can
24
+ @@mturk_soap ||= MechanicalTurkRequester.new( :Host => :Sandbox, :Transport => :SOAP ) if Util::SOAPTransport.canSOAP?
25
+ # utilize the REST transport with default HTTP method
26
+ @@mturk_rest ||= MechanicalTurkRequester.new( :Host => :Sandbox, :Transport => :REST )
27
+ # utilize the REST transport via Get
28
+ @@mturk_rest_get ||= MechanicalTurkRequester.new( :Host => :Sandbox, :Transport => :REST, :RestStyle => :Get )
29
+ # utilize the REST transport via Post, if we can
30
+ @@mturk_rest_post ||= MechanicalTurkRequester.new( :Host => :Sandbox, :Transport => :REST, :RestStyle => :Post ) if Util::RESTTransport.canPost?
31
+ end
32
+
33
+ def testAvailableFunds
34
+ funds = @@mturk.availableFunds
35
+ assert_equal 10000.0, funds, "Sandbox should always show 10k available funds"
36
+ end
37
+
38
+ def testCreateHIT
39
+ question = MTurk::QuestionGenerator.build { |q| q.ask 'Have you tried Ruby?' }
40
+ result = @@mturk.createHIT :Title => 'Ruby SDK Test Hit',
41
+ :Description => 'Autogenerated hit from ruby-aws test cases',
42
+ :Keywords => 'Ruby, test, SDK',
43
+ :Reward => { :Amount => 23.44, :CurrencyCode => 'USD' },
44
+ :Question => question
45
+ assert_not_nil( result[:HITId] )
46
+ @@mturk.forceExpireHIT( :HITId => result[:HITId] )
47
+ @@mturk.disposeHIT( :HITId => result[:HITId] )
48
+ end
49
+
50
+ def testCreateHITFailure
51
+ begin
52
+ @@mturk.createHIT :Title => 'Ruby SDK Test Hit',
53
+ :Description => 'Autogenerated hit from ruby-aws test cases',
54
+ :Keywords => 'Ruby, test, SDK',
55
+ :Reward => { :Amount => 23.44, :CurrencyCode => 'USD' },
56
+ :Question => "Invalid Question"
57
+ fail "Mechanical Turk should have thrown an exception"
58
+ rescue => e
59
+ raise e unless e.is_a?( Util::ValidationException )
60
+ assert_equal "AWS.MechanicalTurk.XMLParseError", e.message
61
+ end
62
+ end
63
+
64
+ if Util::SOAPTransport.canSOAP?
65
+
66
+ def testSOAPCreateHIT
67
+ question = MTurk::QuestionGenerator.build { |q| q.ask 'Have you tried Ruby?' }
68
+ result = @@mturk_soap.createHIT :Title => 'Ruby SDK Test Hit',
69
+ :Description => 'Autogenerated hit from ruby-aws test cases',
70
+ :Keywords => 'Ruby, test, SDK',
71
+ :Reward => { :Amount => 23.44, :CurrencyCode => 'USD' },
72
+ :Question => question
73
+ assert_not_nil( result[:HITId] )
74
+ @@mturk_soap.forceExpireHIT( :HITId => result[:HITId] )
75
+ @@mturk_soap.disposeHIT( :HITId => result[:HITId] )
76
+ end
77
+
78
+ def testSOAPCreateHITFailure
79
+ begin
80
+ @@mturk_soap.createHIT :Title => 'Ruby SDK Test Hit',
81
+ :Description => 'Autogenerated hit from ruby-aws test cases',
82
+ :Keywords => 'Ruby, test, SDK',
83
+ :Reward => { :Amount => 23.44, :CurrencyCode => 'USD' },
84
+ :Question => "Invalid Question"
85
+ fail "Mechanical Turk should have thrown an exception"
86
+ rescue => e
87
+ raise e unless e.is_a?( Util::ValidationException )
88
+ assert_equal "AWS.MechanicalTurk.XMLParseError", e.message
89
+ end
90
+ end
91
+
92
+ end # if Util::SOAPTransport.canSOAP?
93
+
94
+ def testRESTCreateHIT
95
+ question = MTurk::QuestionGenerator.build { |q| q.ask 'Have you tried Ruby?' }
96
+ result = @@mturk_rest.createHIT :Title => 'Ruby SDK Test Hit',
97
+ :Description => 'Autogenerated hit from ruby-aws test cases',
98
+ :Keywords => 'Ruby, test, SDK',
99
+ :Reward => { :Amount => 23.44, :CurrencyCode => 'USD' },
100
+ :Question => question
101
+ assert_not_nil( result[:HITId] )
102
+ @@mturk_rest.forceExpireHIT( :HITId => result[:HITId] )
103
+ @@mturk_rest.disposeHIT( :HITId => result[:HITId] )
104
+ end
105
+
106
+ def testRESTCreateHITFailure
107
+ begin
108
+ @@mturk_rest.createHIT :Title => 'Ruby SDK Test Hit',
109
+ :Description => 'Autogenerated hit from ruby-aws test cases',
110
+ :Keywords => 'Ruby, test, SDK',
111
+ :Reward => { :Amount => 23.44, :CurrencyCode => 'USD' },
112
+ :Question => "Invalid Question"
113
+ fail "Mechanical Turk should have thrown an exception"
114
+ rescue => e
115
+ raise e unless e.is_a?( Util::ValidationException )
116
+ assert_equal "AWS.MechanicalTurk.XMLParseError", e.message
117
+ end
118
+ end
119
+
120
+ def testGetRESTCreateHIT
121
+ question = MTurk::QuestionGenerator.build { |q| q.ask 'Have you tried Ruby?' }
122
+ result = @@mturk_rest_get.createHIT :Title => 'Ruby SDK Test Hit',
123
+ :Description => 'Autogenerated hit from ruby-aws test cases',
124
+ :Keywords => 'Ruby, test, SDK',
125
+ :Reward => { :Amount => 23.44, :CurrencyCode => 'USD' },
126
+ :Question => question
127
+ assert_not_nil( result[:HITId] )
128
+ @@mturk_rest_get.forceExpireHIT( :HITId => result[:HITId] )
129
+ @@mturk_rest_get.disposeHIT( :HITId => result[:HITId] )
130
+ end
131
+
132
+ def testGetRESTCreateHITFailure
133
+ begin
134
+ @@mturk_rest_get.createHIT :Title => 'Ruby SDK Test Hit',
135
+ :Description => 'Autogenerated hit from ruby-aws test cases',
136
+ :Keywords => 'Ruby, test, SDK',
137
+ :Reward => { :Amount => 23.44, :CurrencyCode => 'USD' },
138
+ :Question => "Invalid Question"
139
+ fail "Mechanical Turk should have thrown an exception"
140
+ rescue => e
141
+ raise e unless e.is_a?( Util::ValidationException )
142
+ assert_equal "AWS.MechanicalTurk.XMLParseError", e.message
143
+ end
144
+ end
145
+
146
+ if Util::RESTTransport.canPost?
147
+
148
+ def testPostRESTCreateHIT
149
+ question = MTurk::QuestionGenerator.build { |q| q.ask 'Have you tried Ruby?' }
150
+ result = @@mturk_rest_post.createHIT :Title => 'Ruby SDK Test Hit',
151
+ :Description => 'Autogenerated hit from ruby-aws test cases',
152
+ :Keywords => 'Ruby, test, SDK',
153
+ :Reward => { :Amount => 23.44, :CurrencyCode => 'USD' },
154
+ :Question => question
155
+ assert_not_nil( result[:HITId] )
156
+ @@mturk_rest_post.forceExpireHIT( :HITId => result[:HITId] )
157
+ @@mturk_rest_post.disposeHIT( :HITId => result[:HITId] )
158
+ end
159
+
160
+ def testPostRESTCreateHITFailure
161
+ begin
162
+ @@mturk_rest_post.createHIT :Title => 'Ruby SDK Test Hit',
163
+ :Description => 'Autogenerated hit from ruby-aws test cases',
164
+ :Keywords => 'Ruby, test, SDK',
165
+ :Reward => { :Amount => 23.44, :CurrencyCode => 'USD' },
166
+ :Question => "Invalid Question"
167
+ fail "Mechanical Turk should have thrown an exception"
168
+ rescue => e
169
+ raise e unless e.is_a?( Util::ValidationException )
170
+ assert_equal "AWS.MechanicalTurk.XMLParseError", e.message
171
+ end
172
+ end
173
+
174
+ end # if Util::RESTTransport.canPost?
175
+
176
+ end
177
+
178
+ end # if not DISABLE_MTURK_SANDBOX_TEST