impermium 1.0.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 (162) hide show
  1. data/.gitignore +5 -0
  2. data/.rspec +1 -0
  3. data/.rvmrc +1 -0
  4. data/Gemfile +4 -0
  5. data/MIT-LICENSE.txt +20 -0
  6. data/README.md +118 -0
  7. data/Rakefile +7 -0
  8. data/impermium.gemspec +31 -0
  9. data/lib/faraday/raise_4xx.rb +18 -0
  10. data/lib/impermium/client.rb +57 -0
  11. data/lib/impermium/configuration.rb +44 -0
  12. data/lib/impermium/content/blog_post.rb +38 -0
  13. data/lib/impermium/content/bookmark.rb +47 -0
  14. data/lib/impermium/content/comment.rb +38 -0
  15. data/lib/impermium/content/connection.rb +42 -0
  16. data/lib/impermium/content/listing.rb +37 -0
  17. data/lib/impermium/content.rb +15 -0
  18. data/lib/impermium/errors.rb +25 -0
  19. data/lib/impermium/user/account.rb +50 -0
  20. data/lib/impermium/user/profile.rb +35 -0
  21. data/lib/impermium/user.rb +9 -0
  22. data/lib/impermium/version.rb +3 -0
  23. data/lib/impermium.rb +20 -0
  24. data/spec/.gitignore +1 -0
  25. data/spec/cassettes/content_API_section/blog_post_object/blog_post_analyst_feedback_method/missing_arguments/missing_analyst_id.yml +42 -0
  26. data/spec/cassettes/content_API_section/blog_post_object/blog_post_analyst_feedback_method/missing_arguments/missing_blog_post_id.yml +42 -0
  27. data/spec/cassettes/content_API_section/blog_post_object/blog_post_analyst_feedback_method/missing_arguments/missing_desired_result.yml +42 -0
  28. data/spec/cassettes/content_API_section/blog_post_object/blog_post_analyst_feedback_method/successful_request.yml +38 -0
  29. data/spec/cassettes/content_API_section/blog_post_object/blog_post_method/missing_arguments/missing_blog_post_id.yml +43 -0
  30. data/spec/cassettes/content_API_section/blog_post_object/blog_post_method/missing_arguments/missing_blog_post_permalink.yml +43 -0
  31. data/spec/cassettes/content_API_section/blog_post_object/blog_post_method/missing_arguments/missing_blog_url.yml +43 -0
  32. data/spec/cassettes/content_API_section/blog_post_object/blog_post_method/missing_arguments/missing_content.yml +42 -0
  33. data/spec/cassettes/content_API_section/blog_post_object/blog_post_method/missing_arguments/missing_enduser_ip.yml +43 -0
  34. data/spec/cassettes/content_API_section/blog_post_object/blog_post_method/missing_arguments/missing_user_id.yml +43 -0
  35. data/spec/cassettes/content_API_section/blog_post_object/blog_post_method/successful_blog_post_request.yml +39 -0
  36. data/spec/cassettes/content_API_section/blog_post_object/blog_post_user_feedback_method/missing_arguments/invalid_reporter_user_type.yml +38 -0
  37. data/spec/cassettes/content_API_section/blog_post_object/blog_post_user_feedback_method/missing_arguments/missing_blog_post_id.yml +42 -0
  38. data/spec/cassettes/content_API_section/blog_post_object/blog_post_user_feedback_method/missing_arguments/missing_desired_result.yml +42 -0
  39. data/spec/cassettes/content_API_section/blog_post_object/blog_post_user_feedback_method/missing_arguments/missing_reporter_ip.yml +42 -0
  40. data/spec/cassettes/content_API_section/blog_post_object/blog_post_user_feedback_method/missing_arguments/missing_reporter_user_id.yml +42 -0
  41. data/spec/cassettes/content_API_section/blog_post_object/blog_post_user_feedback_method/successful_request.yml +38 -0
  42. data/spec/cassettes/content_API_section/bookmark_object/bookmark_analyst_feedback_method/missing_arguments/missing_analyst_id.yml +42 -0
  43. data/spec/cassettes/content_API_section/bookmark_object/bookmark_analyst_feedback_method/missing_arguments/missing_bookmark_id.yml +42 -0
  44. data/spec/cassettes/content_API_section/bookmark_object/bookmark_analyst_feedback_method/missing_arguments/missing_desired_result.yml +42 -0
  45. data/spec/cassettes/content_API_section/bookmark_object/bookmark_analyst_feedback_method/successful_request.yml +38 -0
  46. data/spec/cassettes/content_API_section/bookmark_object/bookmark_like_method/missing_arguments/missing_bookmark_id.yml +42 -0
  47. data/spec/cassettes/content_API_section/bookmark_object/bookmark_like_method/missing_arguments/missing_bookmark_url.yml +42 -0
  48. data/spec/cassettes/content_API_section/bookmark_object/bookmark_like_method/missing_arguments/missing_enduser_ip.yml +42 -0
  49. data/spec/cassettes/content_API_section/bookmark_object/bookmark_like_method/missing_arguments/missing_like_value.yml +42 -0
  50. data/spec/cassettes/content_API_section/bookmark_object/bookmark_like_method/missing_arguments/missing_user_id.yml +42 -0
  51. data/spec/cassettes/content_API_section/bookmark_object/bookmark_like_method/successful_request.yml +38 -0
  52. data/spec/cassettes/content_API_section/bookmark_object/bookmark_method/missing_arguments/missing_bookmark_id.yml +42 -0
  53. data/spec/cassettes/content_API_section/bookmark_object/bookmark_method/missing_arguments/missing_bookmark_url.yml +42 -0
  54. data/spec/cassettes/content_API_section/bookmark_object/bookmark_method/missing_arguments/missing_enduser_ip.yml +42 -0
  55. data/spec/cassettes/content_API_section/bookmark_object/bookmark_method/missing_arguments/missing_user_id.yml +42 -0
  56. data/spec/cassettes/content_API_section/bookmark_object/bookmark_method/successful_request.yml +38 -0
  57. data/spec/cassettes/content_API_section/bookmark_object/bookmark_user_feedback_method/missing_arguments/invalid_reporter_user_type.yml +38 -0
  58. data/spec/cassettes/content_API_section/bookmark_object/bookmark_user_feedback_method/missing_arguments/missing_bookmark_id.yml +42 -0
  59. data/spec/cassettes/content_API_section/bookmark_object/bookmark_user_feedback_method/missing_arguments/missing_desired_result.yml +42 -0
  60. data/spec/cassettes/content_API_section/bookmark_object/bookmark_user_feedback_method/missing_arguments/missing_reporter_ip.yml +42 -0
  61. data/spec/cassettes/content_API_section/bookmark_object/bookmark_user_feedback_method/missing_arguments/missing_reporter_user_id.yml +42 -0
  62. data/spec/cassettes/content_API_section/bookmark_object/bookmark_user_feedback_method/successful_request.yml +38 -0
  63. data/spec/cassettes/content_API_section/comment_object/comment_analyst_feedback_method/missing_arguments/missing_analyst_id.yml +42 -0
  64. data/spec/cassettes/content_API_section/comment_object/comment_analyst_feedback_method/missing_arguments/missing_comment_id.yml +42 -0
  65. data/spec/cassettes/content_API_section/comment_object/comment_analyst_feedback_method/missing_arguments/missing_desired_result.yml +42 -0
  66. data/spec/cassettes/content_API_section/comment_object/comment_analyst_feedback_method/successful_request.yml +38 -0
  67. data/spec/cassettes/content_API_section/comment_object/comment_method/missing_arguments/missing_article_permalink.yml +43 -0
  68. data/spec/cassettes/content_API_section/comment_object/comment_method/missing_arguments/missing_comment_id.yml +42 -0
  69. data/spec/cassettes/content_API_section/comment_object/comment_method/missing_arguments/missing_comment_permalink.yml +43 -0
  70. data/spec/cassettes/content_API_section/comment_object/comment_method/missing_arguments/missing_content.yml +42 -0
  71. data/spec/cassettes/content_API_section/comment_object/comment_method/missing_arguments/missing_enduser_ip.yml +43 -0
  72. data/spec/cassettes/content_API_section/comment_object/comment_method/missing_arguments/missing_user_id.yml +43 -0
  73. data/spec/cassettes/content_API_section/comment_object/comment_method/successful_request.yml +39 -0
  74. data/spec/cassettes/content_API_section/comment_object/comment_user_feedback_method/missing_arguments/invalid_reporter_user_type.yml +38 -0
  75. data/spec/cassettes/content_API_section/comment_object/comment_user_feedback_method/missing_arguments/missing_comment_id.yml +42 -0
  76. data/spec/cassettes/content_API_section/comment_object/comment_user_feedback_method/missing_arguments/missing_desired_result.yml +42 -0
  77. data/spec/cassettes/content_API_section/comment_object/comment_user_feedback_method/missing_arguments/missing_reporter_ip.yml +42 -0
  78. data/spec/cassettes/content_API_section/comment_object/comment_user_feedback_method/missing_arguments/missing_reporter_user_id.yml +42 -0
  79. data/spec/cassettes/content_API_section/comment_object/comment_user_feedback_method/successful_request.yml +38 -0
  80. data/spec/cassettes/content_API_section/connection_object/connection_analyst_feedback_method/missing_arguments/invalid_connection_type_value.yml +42 -0
  81. data/spec/cassettes/content_API_section/connection_object/connection_analyst_feedback_method/missing_arguments/missing_analyst_id.yml +42 -0
  82. data/spec/cassettes/content_API_section/connection_object/connection_analyst_feedback_method/missing_arguments/missing_connection_id.yml +42 -0
  83. data/spec/cassettes/content_API_section/connection_object/connection_analyst_feedback_method/missing_arguments/missing_connection_type.yml +42 -0
  84. data/spec/cassettes/content_API_section/connection_object/connection_analyst_feedback_method/missing_arguments/missing_desired_result.yml +42 -0
  85. data/spec/cassettes/content_API_section/connection_object/connection_analyst_feedback_method/successful_request.yml +38 -0
  86. data/spec/cassettes/content_API_section/connection_object/connection_method/missing_arguments/invalid_connection_type_value.yml +42 -0
  87. data/spec/cassettes/content_API_section/connection_object/connection_method/missing_arguments/invalid_operation_value.yml +38 -0
  88. data/spec/cassettes/content_API_section/connection_object/connection_method/missing_arguments/missing_connection_id.yml +42 -0
  89. data/spec/cassettes/content_API_section/connection_object/connection_method/missing_arguments/missing_connection_type.yml +42 -0
  90. data/spec/cassettes/content_API_section/connection_object/connection_method/missing_arguments/missing_enduser_ip.yml +42 -0
  91. data/spec/cassettes/content_API_section/connection_object/connection_method/missing_arguments/missing_requester_user_id.yml +42 -0
  92. data/spec/cassettes/content_API_section/connection_object/connection_method/missing_arguments/missing_responder_user_id.yml +42 -0
  93. data/spec/cassettes/content_API_section/connection_object/connection_method/successful_follow_connection_request.yml +38 -0
  94. data/spec/cassettes/content_API_section/connection_object/connection_method/successful_follow_connection_response.yml +38 -0
  95. data/spec/cassettes/content_API_section/connection_object/connection_method/successful_friend_connection_request.yml +38 -0
  96. data/spec/cassettes/content_API_section/connection_object/connection_method/successful_friend_connection_response.yml +38 -0
  97. data/spec/cassettes/content_API_section/connection_object/connection_user_feedback_method/missing_arguments/invalid_connection_type_value.yml +42 -0
  98. data/spec/cassettes/content_API_section/connection_object/connection_user_feedback_method/missing_arguments/invalid_reporter_user_type.yml +38 -0
  99. data/spec/cassettes/content_API_section/connection_object/connection_user_feedback_method/missing_arguments/missing_connection_id.yml +42 -0
  100. data/spec/cassettes/content_API_section/connection_object/connection_user_feedback_method/missing_arguments/missing_connection_type.yml +42 -0
  101. data/spec/cassettes/content_API_section/connection_object/connection_user_feedback_method/missing_arguments/missing_desired_result.yml +42 -0
  102. data/spec/cassettes/content_API_section/connection_object/connection_user_feedback_method/missing_arguments/missing_reporter_ip.yml +42 -0
  103. data/spec/cassettes/content_API_section/connection_object/connection_user_feedback_method/missing_arguments/missing_reporter_user_id.yml +42 -0
  104. data/spec/cassettes/content_API_section/connection_object/connection_user_feedback_method/successful_request.yml +38 -0
  105. data/spec/cassettes/content_API_section/listing_object/listing_analyst_feedback_method/missing_arguments/missing_analyst_id.yml +42 -0
  106. data/spec/cassettes/content_API_section/listing_object/listing_analyst_feedback_method/missing_arguments/missing_desired_result.yml +42 -0
  107. data/spec/cassettes/content_API_section/listing_object/listing_analyst_feedback_method/missing_arguments/missing_listing_id.yml +42 -0
  108. data/spec/cassettes/content_API_section/listing_object/listing_analyst_feedback_method/successful_request.yml +38 -0
  109. data/spec/cassettes/content_API_section/listing_object/listing_method/missing_arguments/missing_content.yml +42 -0
  110. data/spec/cassettes/content_API_section/listing_object/listing_method/missing_arguments/missing_enduser_ip.yml +42 -0
  111. data/spec/cassettes/content_API_section/listing_object/listing_method/missing_arguments/missing_listing_id.yml +42 -0
  112. data/spec/cassettes/content_API_section/listing_object/listing_method/missing_arguments/missing_listing_permalink.yml +42 -0
  113. data/spec/cassettes/content_API_section/listing_object/listing_method/missing_arguments/missing_user_id.yml +42 -0
  114. data/spec/cassettes/content_API_section/listing_object/listing_method/successful_request.yml +38 -0
  115. data/spec/cassettes/content_API_section/listing_object/listing_user_feedback_method/missing_arguments/invalid_reporter_user_type.yml +38 -0
  116. data/spec/cassettes/content_API_section/listing_object/listing_user_feedback_method/missing_arguments/missing_desired_result.yml +42 -0
  117. data/spec/cassettes/content_API_section/listing_object/listing_user_feedback_method/missing_arguments/missing_listing_id.yml +42 -0
  118. data/spec/cassettes/content_API_section/listing_object/listing_user_feedback_method/missing_arguments/missing_reporter_ip.yml +42 -0
  119. data/spec/cassettes/content_API_section/listing_object/listing_user_feedback_method/missing_arguments/missing_reporter_user_id.yml +42 -0
  120. data/spec/cassettes/content_API_section/listing_object/listing_user_feedback_method/successful_request.yml +38 -0
  121. data/spec/cassettes/user_API_section/account_object/account_analyst_feedback_method/missing_arguments/missing_analyst_id.yml +42 -0
  122. data/spec/cassettes/user_API_section/account_object/account_analyst_feedback_method/missing_arguments/missing_user_id.yml +42 -0
  123. data/spec/cassettes/user_API_section/account_object/account_analyst_feedback_method/successful_account_analyst_feedback_method_request.yml +38 -0
  124. data/spec/cassettes/user_API_section/account_object/account_attempt_method/missing_arguments.yml +42 -0
  125. data/spec/cassettes/user_API_section/account_object/account_attempt_method/successful_account_attempt_request.yml +38 -0
  126. data/spec/cassettes/user_API_section/account_object/account_login_method/missing_arguments/missing_enduser_ip.yml +42 -0
  127. data/spec/cassettes/user_API_section/account_object/account_login_method/missing_arguments/missing_user_id.yml +42 -0
  128. data/spec/cassettes/user_API_section/account_object/account_login_method/successful_account_login_request.yml +38 -0
  129. data/spec/cassettes/user_API_section/account_object/account_method/missing_arguments/missing_enduser_ip.yml +42 -0
  130. data/spec/cassettes/user_API_section/account_object/account_method/missing_arguments/missing_user_id.yml +42 -0
  131. data/spec/cassettes/user_API_section/account_object/account_method/successful_account_method_request.yml +38 -0
  132. data/spec/cassettes/user_API_section/account_object/account_user_feedback_method/missing_arguments/invalid_reporter_user_type.yml +38 -0
  133. data/spec/cassettes/user_API_section/account_object/account_user_feedback_method/missing_arguments/missing_desired_result.yml +42 -0
  134. data/spec/cassettes/user_API_section/account_object/account_user_feedback_method/missing_arguments/missing_reporter_ip.yml +42 -0
  135. data/spec/cassettes/user_API_section/account_object/account_user_feedback_method/missing_arguments/missing_reporter_user_id.yml +42 -0
  136. data/spec/cassettes/user_API_section/account_object/account_user_feedback_method/missing_arguments/missing_user_id.yml +42 -0
  137. data/spec/cassettes/user_API_section/account_object/account_user_feedback_method/successful_request.yml +38 -0
  138. data/spec/cassettes/user_API_section/profile_object/profile_analyst_feedback_method/missing_params/missing_analyst_id.yml +42 -0
  139. data/spec/cassettes/user_API_section/profile_object/profile_analyst_feedback_method/missing_params/missing_desired_result.yml +42 -0
  140. data/spec/cassettes/user_API_section/profile_object/profile_analyst_feedback_method/missing_params/missing_profile_id.yml +42 -0
  141. data/spec/cassettes/user_API_section/profile_object/profile_analyst_feedback_method/successful_request.yml +38 -0
  142. data/spec/cassettes/user_API_section/profile_object/profile_method/missing_arguments/missing_enduser_ip.yml +42 -0
  143. data/spec/cassettes/user_API_section/profile_object/profile_method/missing_arguments/missing_profile_id.yml +42 -0
  144. data/spec/cassettes/user_API_section/profile_object/profile_method/missing_arguments/missing_user_id.yml +42 -0
  145. data/spec/cassettes/user_API_section/profile_object/profile_method/successful_request.yml +38 -0
  146. data/spec/cassettes/user_API_section/profile_object/profile_user_feedback_method/missing_arguments/invalid_reporter_user_type.yml +38 -0
  147. data/spec/cassettes/user_API_section/profile_object/profile_user_feedback_method/missing_arguments/missing_desired_result.yml +42 -0
  148. data/spec/cassettes/user_API_section/profile_object/profile_user_feedback_method/missing_arguments/missing_profile_id.yml +42 -0
  149. data/spec/cassettes/user_API_section/profile_object/profile_user_feedback_method/missing_arguments/missing_reporter_ip.yml +42 -0
  150. data/spec/cassettes/user_API_section/profile_object/profile_user_feedback_method/missing_arguments/missing_reporter_user_id.yml +42 -0
  151. data/spec/cassettes/user_API_section/profile_object/profile_user_feedback_method/successful_request.yml +38 -0
  152. data/spec/configuration.yml.sample +3 -0
  153. data/spec/impermium/client_spec.rb +67 -0
  154. data/spec/impermium/content/blog_post_spec.rb +173 -0
  155. data/spec/impermium/content/bookmark_spec.rb +205 -0
  156. data/spec/impermium/content/comment_spec.rb +178 -0
  157. data/spec/impermium/content/connection_spec.rb +257 -0
  158. data/spec/impermium/content/listing_spec.rb +169 -0
  159. data/spec/impermium/user/account_spec.rb +184 -0
  160. data/spec/impermium/user/profile_spec.rb +154 -0
  161. data/spec/spec_helper.rb +32 -0
  162. metadata +433 -0
@@ -0,0 +1,257 @@
1
+ require "spec_helper"
2
+ require "json"
3
+
4
+ describe "content API section" do
5
+ describe "connection object" do
6
+ before(:each) do
7
+ @connection_id = "u236711u558749c9724392933355478"
8
+ @requester_user_id = "u236711"
9
+ @responder_user_id = "u558749"
10
+ @analyst_id = "4n4l1s7cid"
11
+ @reporter_user_id = "r3p0rt3rcid"
12
+ @ip = "3.3.3.3"
13
+ @desired_result = {:spam_classifier => { :label => "notspam" }}
14
+ end
15
+
16
+ describe "connection method" do
17
+ describe "missing arguments" do
18
+
19
+ context "invalid operation value" do
20
+ use_vcr_cassette
21
+ it "should use default value and respond OK" do
22
+ res= Impermium.connection('invalid', 'friend', @connection_id, @requester_user_id, @responder_user_id, @ip)
23
+ res.response_id.should be_true
24
+ res.timestamp.should be_true
25
+ res.status.should be_nil
26
+ res.message.should be_nil
27
+ end
28
+ end
29
+
30
+ context "missing connection_type" do
31
+ use_vcr_cassette
32
+ it "should raise BadRequest error" do
33
+ lambda { Impermium.connection('request', nil, @connection_id, @requester_user_id, @responder_user_id, @ip)
34
+ }.should raise_error(Impermium::BadRequest, /connection_type/)
35
+ end
36
+ end
37
+
38
+ context "invalid connection_type value" do
39
+ use_vcr_cassette
40
+ it "should raise BadRequest error" do
41
+ lambda { Impermium.connection('request', 'no-valid', @connection_id, @requester_user_id, @responder_user_id, @ip)
42
+ }.should raise_error(Impermium::BadRequest, /connection_type/)
43
+ end
44
+ end
45
+
46
+ context "missing connection_id" do
47
+ use_vcr_cassette
48
+ it "should raise BadRequest error" do
49
+ lambda { Impermium.connection('request', 'friend', nil, @requester_user_id, @responder_user_id, @ip)
50
+ }.should raise_error(Impermium::BadRequest, /connection_id/)
51
+ end
52
+ end
53
+
54
+ context "missing requester_user_id" do
55
+ use_vcr_cassette
56
+ it "should raise BadRequest error" do
57
+ lambda { Impermium.connection('request', 'friend', @connection_id, nil, @responder_user_id, @ip)
58
+ }.should raise_error(Impermium::BadRequest, /requester_user_id/)
59
+ end
60
+ end
61
+
62
+ context "missing responder_user_id" do
63
+ use_vcr_cassette
64
+ it "should raise BadRequest error" do
65
+ lambda { Impermium.connection('request', 'friend', @connection_id, @requester_user_id, nil, @ip)
66
+ }.should raise_error(Impermium::BadRequest, /responder_user_id/)
67
+ end
68
+ end
69
+
70
+ context "missing enduser_ip" do
71
+ use_vcr_cassette
72
+ it "should raise BadRequest error" do
73
+ lambda { Impermium.connection('request', 'follow', @connection_id, @requester_user_id, @responder_user_id, nil)
74
+ }.should raise_error(Impermium::BadRequest, /enduser_ip/)
75
+ end
76
+ end
77
+ end
78
+
79
+ describe "successful friend connection request" do
80
+ use_vcr_cassette
81
+ it "should return an OK response" do
82
+ res = Impermium.connection('request', 'friend', @connection_id, @requester_user_id, @responder_user_id, @ip)
83
+ res.response_id.should be_true
84
+ res.timestamp.should be_true
85
+ res.status.should be_nil
86
+ res.message.should be_nil
87
+ end
88
+ end
89
+
90
+ describe "successful friend connection response" do
91
+ use_vcr_cassette
92
+ it "should return an OK response" do
93
+ res = Impermium.connection('response', 'friend', @connection_id, @requester_user_id, @responder_user_id, @ip)
94
+ res.response_id.should be_true
95
+ res.timestamp.should be_true
96
+ res.status.should be_nil
97
+ res.message.should be_nil
98
+ end
99
+ end
100
+
101
+ describe "successful follow connection request" do
102
+ use_vcr_cassette
103
+ it "should return an OK response" do
104
+ res = Impermium.connection('request', 'follow', @connection_id, @requester_user_id, @responder_user_id, @ip)
105
+ res.response_id.should be_true
106
+ res.timestamp.should be_true
107
+ res.status.should be_nil
108
+ res.message.should be_nil
109
+ end
110
+ end
111
+
112
+ describe "successful follow connection response" do
113
+ use_vcr_cassette
114
+ it "should return an OK response" do
115
+ res = Impermium.connection('response', 'follow', @connection_id, @requester_user_id, @responder_user_id, @ip)
116
+ res.response_id.should be_true
117
+ res.timestamp.should be_true
118
+ res.status.should be_nil
119
+ res.message.should be_nil
120
+ end
121
+ end
122
+ end
123
+
124
+ describe "connection_analyst_feedback method" do
125
+ describe "missing arguments" do
126
+ context "missing analyst_id" do
127
+ use_vcr_cassette
128
+ it "should raise BadRequest error" do
129
+ lambda { Impermium.connection_analyst_feedback(nil, 'friend', @connection_id, @desired_result) }.should raise_error(Impermium::BadRequest, /analyst_id/)
130
+ end
131
+ end
132
+
133
+ context "missing connection_type" do
134
+ use_vcr_cassette
135
+ it "should raise BadRequest error" do
136
+ lambda { Impermium.connection_analyst_feedback(@analyst_id, nil, @connection_id, @desired_result)
137
+ }.should raise_error(Impermium::BadRequest, /connection_type/)
138
+ end
139
+ end
140
+
141
+ context "invalid connection_type value" do
142
+ use_vcr_cassette
143
+ it "should raise BadRequest error" do
144
+ lambda { Impermium.connection_analyst_feedback(@analyst_id, 'invalid_type', @connection_id, @desired_result)
145
+ }.should raise_error(Impermium::BadRequest, /connection_type/)
146
+ end
147
+ end
148
+
149
+ context "missing connection_id" do
150
+ use_vcr_cassette
151
+ it "should raise BadRequest error" do
152
+ lambda { Impermium.connection_analyst_feedback(@analyst_id, 'friend', nil, @desired_result) }.should raise_error(Impermium::BadRequest, /connection_id/)
153
+ end
154
+ end
155
+
156
+ context "missing desired_result" do
157
+ use_vcr_cassette
158
+ it "should raise BadRequest error" do
159
+ lambda { Impermium.connection_analyst_feedback(@analyst_id, 'friend', @connection_id, nil) }.should raise_error(Impermium::BadRequest, /desired_result/)
160
+ end
161
+ end
162
+ end
163
+
164
+ describe "successful request" do
165
+ use_vcr_cassette
166
+ it "should return an OK response" do
167
+ res = Impermium.connection_analyst_feedback(@analyst_id, 'friend', @connection_id, @desired_result)
168
+ res.response_id.should be_true
169
+ res.timestamp.should be_true
170
+ res.status.should be_nil
171
+ res.message.should be_nil
172
+ end
173
+ end
174
+ end
175
+
176
+ describe "connection_user_feedback method" do
177
+ describe "missing arguments" do
178
+ context "missing reporter_user_id" do
179
+ use_vcr_cassette
180
+ it "should raise BadRequest error" do
181
+ lambda { Impermium.connection_user_feedback(nil, "MODERATOR",
182
+ @ip, 'follow', @connection_id, @desired_result)
183
+ }.should raise_error(Impermium::BadRequest, /reporter_user_id/)
184
+ end
185
+ end
186
+
187
+ context "invalid reporter_user_type" do
188
+ use_vcr_cassette
189
+ it "should use default value" do
190
+ res = Impermium.connection_user_feedback(@reporter_user_id, "NOT VALID", @ip, 'follow', @connection_id, @desired_result)
191
+ res.response_id.should be
192
+ res.timestamp.should be
193
+ res.status.should be_nil
194
+ res.message.should be_nil
195
+ end
196
+ end
197
+
198
+ context "missing reporter_ip" do
199
+ use_vcr_cassette
200
+ it "should raise BadRequest error" do
201
+ lambda { Impermium.connection_user_feedback(@reporter_user_id, "MODERATOR",
202
+ "", 'follow', @connection_id, @desired_result)
203
+ }.should raise_error(Impermium::BadRequest, /reporter_ip/)
204
+ end
205
+ end
206
+
207
+ context "missing connection_type" do
208
+ use_vcr_cassette
209
+ it "should raise BadRequest error" do
210
+ lambda { Impermium.connection_user_feedback(@reporter_user_id, "MODERATOR",
211
+ @ip, nil, @connection_id, @desired_result)
212
+ }.should raise_error(Impermium::BadRequest, /connection_type/)
213
+ end
214
+ end
215
+
216
+ context "invalid connection_type value" do
217
+ use_vcr_cassette
218
+ it "should raise BadRequest error" do
219
+ lambda { Impermium.connection_user_feedback(@reporter_user_id, "MODERATOR",
220
+ @ip, 'wrong_type', @connection_id, @desired_result)
221
+ }.should raise_error(Impermium::BadRequest, /connection_type/)
222
+ end
223
+ end
224
+
225
+ context "missing connection_id" do
226
+ use_vcr_cassette
227
+ it "should raise BadRequest error" do
228
+ lambda { Impermium.connection_user_feedback(@reporter_user_id, "MODERATOR",
229
+ @ip, 'follow', nil, @desired_result)
230
+ }.should raise_error(Impermium::BadRequest, /connection_id/)
231
+ end
232
+ end
233
+
234
+ context "missing desired_result" do
235
+ use_vcr_cassette
236
+ it "should raise BadRequest error" do
237
+ lambda { Impermium.connection_user_feedback(@reporter_user_id, "MODERATOR",
238
+ @ip, 'follow', @connection_id, nil)
239
+ }.should raise_error(Impermium::BadRequest, /desired_result/)
240
+ end
241
+ end
242
+ end
243
+
244
+ describe "successful request" do
245
+ use_vcr_cassette
246
+ it "should return an OK response" do
247
+ res = Impermium.connection_user_feedback(@reporter_user_id, "ENDUSER", @ip, 'follow', @connection_id, @desired_result)
248
+ res.response_id.start_with?("CLID").should be_true
249
+ res.response_id.should be
250
+ res.timestamp.should be
251
+ res.status.should be_nil
252
+ end
253
+ end
254
+ end
255
+
256
+ end
257
+ end
@@ -0,0 +1,169 @@
1
+ require "spec_helper"
2
+ require "json"
3
+
4
+ describe "content API section" do
5
+ describe "listing object" do
6
+ before(:each) do
7
+ @user_id = "whi231"
8
+ @listing_id = "78912li"
9
+ @listing_permalink = "http://example.com/listings/78912li"
10
+ @content = "sales ad list"
11
+ @analyst_id = "4n4l1s7"
12
+ @reporter_user_id = "r3p0rt3r"
13
+ @ip = "1.1.1.1"
14
+ @desired_result = {:spam_classifier => { :label => "notspam" }}
15
+ end
16
+
17
+ describe "listing method" do
18
+ describe "missing arguments" do
19
+
20
+ context "missing user_id" do
21
+ use_vcr_cassette
22
+ it "should raise BadRequest error" do
23
+ lambda { Impermium.listing(nil, @listing_id, @content, @listing_permalink, @ip)
24
+ }.should raise_error(Impermium::BadRequest, /user_id/)
25
+ end
26
+ end
27
+
28
+ context "missing listing_id" do
29
+ use_vcr_cassette
30
+ it "should raise BadRequest error" do
31
+ lambda { Impermium.listing(@user_id, nil, @content, @listing_permalink, @ip)
32
+ }.should raise_error(Impermium::BadRequest, /listing_id/)
33
+ end
34
+ end
35
+
36
+ context "missing content" do
37
+ use_vcr_cassette
38
+ it "should raise BadRequest error" do
39
+ lambda { Impermium.listing(@user_id, @listing_id, nil, @listing_permalink, @ip)
40
+ }.should raise_error(Impermium::BadRequest, /content/)
41
+ end
42
+ end
43
+
44
+ context "missing listing_permalink" do
45
+ use_vcr_cassette
46
+ it "should raise BadRequest error" do
47
+ lambda { Impermium.listing(@user_id, @listing_id, @content, nil, @ip)
48
+ }.should raise_error(Impermium::BadRequest, /listing_permalink/)
49
+ end
50
+ end
51
+
52
+ context "missing enduser_ip" do
53
+ use_vcr_cassette
54
+ it "should raise BadRequest error" do
55
+ lambda { Impermium.listing(@user_id, @listing_id, @content, @listing_permalink, nil)
56
+ }.should raise_error(Impermium::BadRequest, /enduser_ip/)
57
+ end
58
+ end
59
+ end
60
+
61
+ describe "successful request" do
62
+ use_vcr_cassette
63
+ it "should mark listing with 'notspam' label" do
64
+ res = Impermium.listing(@user_id, @listing_id, @content, @listing_permalink, @ip)
65
+ res.spam_classifier.label.should == "notspam"
66
+ end
67
+ end
68
+ end
69
+
70
+ describe "listing_analyst_feedback method" do
71
+ describe "missing arguments" do
72
+ context "missing analyst_id" do
73
+ use_vcr_cassette
74
+ it "should raise BadRequest error" do
75
+ lambda { Impermium.listing_analyst_feedback(nil, @listing_id, @desired_result) }.should raise_error(Impermium::BadRequest, /analyst_id/)
76
+ end
77
+ end
78
+
79
+ context "missing listing_id" do
80
+ use_vcr_cassette
81
+ it "should raise BadRequest error" do
82
+ lambda { Impermium.listing_analyst_feedback(@analyst_id, nil, @desired_result) }.should raise_error(Impermium::BadRequest, /listing_id/)
83
+ end
84
+ end
85
+
86
+ context "missing desired_result" do
87
+ use_vcr_cassette
88
+ it "should raise BadRequest error" do
89
+ lambda { Impermium.listing_analyst_feedback(@analyst_id, @listing_id, nil) }.should raise_error(Impermium::BadRequest, /desired_result/)
90
+ end
91
+ end
92
+ end
93
+
94
+ describe "successful request" do
95
+ use_vcr_cassette
96
+ it "should return an OK response" do
97
+ res = Impermium.listing_analyst_feedback(@analyst_id, @listing_id, @desired_result)
98
+ res.response_id.should be_true
99
+ res.timestamp.should be_true
100
+ res.status.should be_nil
101
+ res.message.should be_nil
102
+ end
103
+ end
104
+ end
105
+
106
+ describe "listing_user_feedback method" do
107
+ describe "missing arguments" do
108
+ context "missing reporter_user_id" do
109
+ use_vcr_cassette
110
+ it "should raise BadRequest error" do
111
+ lambda { Impermium.listing_user_feedback(nil, "MODERATOR",
112
+ @ip, @listing_id, @desired_result)
113
+ }.should raise_error(Impermium::BadRequest, /reporter_user_id/)
114
+ end
115
+ end
116
+
117
+ context "invalid reporter_user_type" do
118
+ use_vcr_cassette
119
+ it "should use default value" do
120
+ res = Impermium.listing_user_feedback(@reporter_user_id, "NOT VALID", @ip, @listing_id, @desired_result)
121
+ res.response_id.should be
122
+ res.timestamp.should be
123
+ res.status.should be_nil
124
+ res.message.should be_nil
125
+ end
126
+ end
127
+
128
+ context "missing reporter_ip" do
129
+ use_vcr_cassette
130
+ it "should raise BadRequest error" do
131
+ lambda { Impermium.listing_user_feedback(@reporter_user_id, "MODERATOR",
132
+ "", @listing_id, @desired_result)
133
+ }.should raise_error(Impermium::BadRequest, /reporter_ip/)
134
+ end
135
+ end
136
+
137
+ context "missing listing_id" do
138
+ use_vcr_cassette
139
+ it "should raise BadRequest error" do
140
+ lambda { Impermium.listing_user_feedback(@reporter_user_id, "MODERATOR",
141
+ @ip, nil, @desired_result)
142
+ }.should raise_error(Impermium::BadRequest, /listing_id/)
143
+ end
144
+ end
145
+
146
+ context "missing desired_result" do
147
+ use_vcr_cassette
148
+ it "should raise BadRequest error" do
149
+ lambda { Impermium.listing_user_feedback(@reporter_user_id, "MODERATOR",
150
+ @ip, @listing_id, nil)
151
+ }.should raise_error(Impermium::BadRequest, /desired_result/)
152
+ end
153
+ end
154
+ end
155
+
156
+ describe "successful request" do
157
+ use_vcr_cassette
158
+ it "should return an OK response" do
159
+ res = Impermium.listing_user_feedback(@reporter_user_id, "ENDUSER", @ip, @listing_id, @desired_result)
160
+ res.response_id.start_with?("CLID").should be_true
161
+ res.response_id.should be
162
+ res.timestamp.should be
163
+ res.status.should be_nil
164
+ end
165
+ end
166
+ end
167
+
168
+ end
169
+ end
@@ -0,0 +1,184 @@
1
+ require "spec_helper"
2
+ require "json"
3
+
4
+ describe "user API section" do
5
+ describe "account object" do
6
+ before(:each) do
7
+ @user_id = "whi543"
8
+ @reporter_user_id = "whi789"
9
+ @ip_address = "1.1.1.1"
10
+ @analyst_id = "123456"
11
+ @profile_id = "whi543_profile"
12
+ @desired_result = {:spam_classifier => { :label => "notspam" }}
13
+ end
14
+
15
+ describe "account method" do
16
+ describe "missing arguments" do
17
+ context "missing user_id" do
18
+ use_vcr_cassette
19
+ it "should raise BadRequest error" do
20
+ lambda { Impermium.account(nil, @ip_address) }.should raise_error(Impermium::BadRequest, /user_id/)
21
+ end
22
+ end
23
+
24
+ context "missing enduser_ip" do
25
+ use_vcr_cassette
26
+ it "should raise BadRequest error" do
27
+ lambda { Impermium.account(@user_id, '') }.should raise_error(Impermium::BadRequest, /enduser_ip/)
28
+ end
29
+ end
30
+ end
31
+
32
+ describe "successful account method request" do
33
+ use_vcr_cassette
34
+
35
+ it "should mark user with zero spam classifier score" do
36
+ res = Impermium.account(@user_id, @ip_address)
37
+ res.spam_classifier.score.to_i.should == 0
38
+ res.spam_classifier.label.should == "notspam"
39
+ end
40
+ end
41
+ end
42
+
43
+ describe "account_attempt method" do
44
+ describe "missing arguments" do
45
+ use_vcr_cassette
46
+ it "should raise BadRequest error if enduser_ip is missing" do
47
+ lambda { Impermium.account_attempt('') }.should raise_error(Impermium::BadRequest, /enduser_ip/)
48
+ end
49
+ end
50
+
51
+ describe "successful account_attempt request" do
52
+ use_vcr_cassette
53
+ it "should log the attempt and return an OK response" do
54
+ res = Impermium.account_attempt(@ip_address)
55
+ res.response_id.should be
56
+ res.timestamp.should be
57
+ res.status.should be_nil
58
+ res.message.should be_nil
59
+ end
60
+ end
61
+ end
62
+
63
+ describe "account_login method" do
64
+ describe "missing arguments" do
65
+ context "missing user_id" do
66
+ use_vcr_cassette
67
+ it "should raise BadRequest error" do
68
+ lambda { Impermium.account_login(nil, @ip_address) }.should raise_error(Impermium::BadRequest, /user_id/)
69
+ end
70
+ end
71
+
72
+ context "missing enduser_ip" do
73
+ use_vcr_cassette
74
+ it "should raise BadRequest error" do
75
+ lambda { Impermium.account_login(@user_id, '') }.should raise_error(Impermium::BadRequest, /enduser_ip/)
76
+ end
77
+ end
78
+ end
79
+
80
+ describe "successful account_login request" do
81
+ use_vcr_cassette
82
+ it "should return an OK response" do
83
+ res = Impermium.account_login(@user_id, @ip_address)
84
+ res.response_id.should be
85
+ res.timestamp.should be
86
+ res.status.should be_nil
87
+ res.message.should be_nil
88
+ end
89
+ end
90
+ end
91
+
92
+ describe "account_analyst_feedback method" do
93
+ describe "missing arguments" do
94
+ context "missing analyst_id" do
95
+ use_vcr_cassette
96
+ it "should raise BadRequest error" do
97
+ lambda { Impermium.account_analyst_feedback(nil, @user_id, @desired_result) }.should raise_error(Impermium::BadRequest, /analyst_id/)
98
+ end
99
+ end
100
+
101
+ context "missing user_id" do
102
+ use_vcr_cassette
103
+ it "should raise BadRequest error" do
104
+ lambda { Impermium.account_analyst_feedback(@analyst_id, nil, @desired_result) }.should raise_error(Impermium::BadRequest, /user_id/)
105
+ end
106
+ end
107
+ end
108
+
109
+ describe "successful account_analyst_feedback method request" do
110
+ use_vcr_cassette
111
+ it "should return an OK response" do
112
+ res = Impermium.account_analyst_feedback(@analyst_id, @user_id, @desired_result)
113
+ res.response_id.should be_true
114
+ res.timestamp.should be_true
115
+ res.status.should be_nil
116
+ res.message.should be_nil
117
+ end
118
+ end
119
+ end
120
+
121
+ describe "account_user_feedback method" do
122
+ describe "missing arguments" do
123
+ context "missing reporter_user_id" do
124
+ use_vcr_cassette
125
+ it "should raise BadRequest error" do
126
+ lambda { Impermium.account_user_feedback(nil, "MODERATOR",
127
+ @ip_address, @user_id, @desired_result)
128
+ }.should raise_error(Impermium::BadRequest, /reporter_user_id/)
129
+ end
130
+ end
131
+
132
+ context "invalid reporter_user_type" do
133
+ use_vcr_cassette
134
+ it "should use default value" do
135
+ res = Impermium.account_user_feedback(@reporter_user_id, "NOT VALID", @ip_address, @user_id, @desired_result)
136
+ res.response_id.should be
137
+ res.timestamp.should be
138
+ res.status.should be_nil
139
+ res.message.should be_nil
140
+ end
141
+ end
142
+
143
+ context "missing reporter_ip" do
144
+ use_vcr_cassette
145
+ it "should raise BadRequest" do
146
+ lambda { Impermium.account_user_feedback(@reporter_user_id, "MODERATOR",
147
+ "", @user_id, @desired_result)
148
+ }.should raise_error(Impermium::BadRequest, /reporter_ip/)
149
+ end
150
+ end
151
+
152
+ context "missing user_id" do
153
+ use_vcr_cassette
154
+ it "should raise BadRequest error" do
155
+ lambda { Impermium.account_user_feedback(@reporter_user_id, "MODERATOR",
156
+ @ip_address, nil, @desired_result)
157
+ }.should raise_error(Impermium::BadRequest, /user_id/)
158
+ end
159
+ end
160
+
161
+ context "missing desired_result" do
162
+ use_vcr_cassette
163
+ it "should raise BadRequest error" do
164
+ lambda { Impermium.account_user_feedback(@reporter_user_id, "MODERATOR",
165
+ @ip_address, @user_id, nil)
166
+ }.should raise_error(Impermium::BadRequest, /desired_result/)
167
+ end
168
+ end
169
+ end
170
+
171
+ describe "successful request" do
172
+ use_vcr_cassette
173
+ it "should return an OK response" do
174
+ res = Impermium.account_user_feedback(@reporter_user_id, "ENDUSER", @ip_address, @user_id, @desired_result)
175
+ res.response_id.start_with?("CLID").should be_true
176
+ res.response_id.should be
177
+ res.timestamp.should be
178
+ res.status.should be_nil
179
+ end
180
+ end
181
+ end
182
+
183
+ end
184
+ end