ruby-aws 1.6.0

Sign up to get free protection for your applications and to get access to all the features.
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