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,67 @@
1
+ require "spec_helper"
2
+
3
+ describe "client configuration" do
4
+
5
+ describe "default configuration" do
6
+ before(:each) do
7
+ @keys = Impermium::Configuration::VALID_CONFIG_KEYS
8
+ end
9
+
10
+ it "should support current API version: 3.1" do
11
+ client = Impermium.new
12
+ client.api_version.should == '3.1'
13
+ end
14
+
15
+ describe "configuration attributes" do
16
+ it "should have configuration read attributes" do
17
+ client = Impermium.new
18
+ @keys.each { |key| client.respond_to?(key).should be_true }
19
+ end
20
+
21
+ it "should have configuration write attributes" do
22
+ client = Impermium.new
23
+ @keys.each { |key| client.respond_to?("#{key}=").should be_true }
24
+ end
25
+
26
+ it "should correctly set values through attributes" do
27
+ client = Impermium.new
28
+ @keys.each do |key|
29
+ client.send("#{key}=", key)
30
+ end
31
+
32
+ @keys.each do |key|
33
+ client.send(key).should == key
34
+ end
35
+ end
36
+ end
37
+
38
+ describe "through initialization" do
39
+ before(:each) do
40
+ @config = {
41
+ :adapter => "some_adapter",
42
+ :api_version => "0.1",
43
+ :api_key => "impermium_key_001",
44
+ :client_name => "Impermium Client",
45
+ :client_id => "Client ID",
46
+ :endpoint => "http://our.test.endpoint.com"
47
+ }
48
+ end
49
+
50
+ it "should set values to those passed during initialization" do
51
+ client = Impermium::Client.new(@config)
52
+ @config.each do |k, v|
53
+ client.send("#{k}").should == v
54
+ end
55
+ end
56
+ end
57
+ end
58
+
59
+ describe "URL composing" do
60
+ it "should contain passed path in the api URL" do
61
+ path = "some/request/path/"
62
+ client = Impermium.new(:api_key => "test_api_key")
63
+ client.api_url(path).should include(path)
64
+ end
65
+ end
66
+
67
+ end
@@ -0,0 +1,173 @@
1
+ require "spec_helper"
2
+ require "json"
3
+
4
+ describe "content API section" do
5
+ describe "blog_post object" do
6
+ before(:each) do
7
+ @user_id = "whi345"
8
+ @analyst_id = "4n4l1s7"
9
+ @reporter_user_id = "r3p0rt3r"
10
+ @ip = "1.1.1.1"
11
+ @content = "just a simple post"
12
+ @post_id = "just-a-post#984721"
13
+ @permalink = "http://example.com/2012/03/05/just_a_post"
14
+ @url = "http://example.com"
15
+ @desired_result = {:spam_classifier => { :label => "notspam" }}
16
+ end
17
+
18
+ describe "blog_post method" do
19
+ describe "missing arguments" do
20
+
21
+ context "missing user_id" do
22
+ use_vcr_cassette
23
+ it "should raise BadRequest error" do
24
+ lambda { Impermium.blog_post(nil, @post_id, @content, @permalink, @url, @ip) }.should raise_error(Impermium::BadRequest, /user_id/)
25
+ end
26
+ end
27
+
28
+ context "missing blog_post_id" do
29
+ use_vcr_cassette
30
+ it "should raise BadRequest error" do
31
+ lambda { Impermium.blog_post(@user_id, nil, @content, @permalink, @url, @ip) }.should raise_error(Impermium::BadRequest, /blog_post_id/)
32
+ end
33
+ end
34
+
35
+ context "missing content" do
36
+ use_vcr_cassette
37
+ it "should raise BadRequest error" do
38
+ lambda { Impermium.blog_post(@user_id, @post_id, nil, @permalink, @url, @ip) }.should raise_error(Impermium::BadRequest, /content/)
39
+ end
40
+ end
41
+
42
+ context "missing blog_post_permalink" do
43
+ use_vcr_cassette
44
+ it "should raise BadRequest error" do
45
+ lambda { Impermium.blog_post(@user_id, @post_id, @content, nil, @url, @ip) }.should raise_error(Impermium::BadRequest, /blog_post_permalink/)
46
+ end
47
+ end
48
+
49
+ context "missing blog_url" do
50
+ use_vcr_cassette
51
+ it "should raise BadRequest error" do
52
+ lambda { Impermium.blog_post(@user_id, @post_id, @content, @permalink, nil, @ip) }.should raise_error(Impermium::BadRequest, /blog_url/)
53
+ end
54
+ end
55
+
56
+ context "missing enduser_ip" do
57
+ use_vcr_cassette
58
+ it "should raise BadRequest error" do
59
+ lambda { Impermium.blog_post(@user_id, @post_id, @content, @permalink, @url, nil) }.should raise_error(Impermium::BadRequest, /enduser_ip/)
60
+ end
61
+ end
62
+ end
63
+
64
+ describe "successful blog_post request" do
65
+ use_vcr_cassette
66
+ it "should mark blog post with 'notspam' label" do
67
+ res = Impermium.blog_post(@user_id, @post_id, @content, @permalink, @url, @ip)
68
+ res.spam_classifier.label.should == "notspam"
69
+ res.spam_classifier.score.to_f.should < 0.4
70
+ end
71
+ end
72
+ end
73
+
74
+ describe "blog_post_analyst_feedback method" do
75
+ describe "missing arguments" do
76
+ context "missing analyst_id" do
77
+ use_vcr_cassette
78
+ it "should raise BadRequest error" do
79
+ lambda { Impermium.blog_post_analyst_feedback(nil, @post_id, @desired_result) }.should raise_error(Impermium::BadRequest, /analyst_id/)
80
+ end
81
+ end
82
+
83
+ context "missing blog_post_id" do
84
+ use_vcr_cassette
85
+ it "should raise BadRequest error" do
86
+ lambda { Impermium.blog_post_analyst_feedback(@analyst_id, nil, @desired_result) }.should raise_error(Impermium::BadRequest, /blog_post_id/)
87
+ end
88
+ end
89
+
90
+ context "missing desired_result" do
91
+ use_vcr_cassette
92
+ it "should raise BadRequest error" do
93
+ lambda { Impermium.blog_post_analyst_feedback(@analyst_id, @post_id, nil) }.should raise_error(Impermium::BadRequest, /desired_result/)
94
+ end
95
+ end
96
+ end
97
+
98
+ describe "successful request" do
99
+ use_vcr_cassette
100
+ it "should return an OK response" do
101
+ res = Impermium.blog_post_analyst_feedback(@analyst_id, @post_id, @desired_result)
102
+ res.response_id.should be_true
103
+ res.timestamp.should be_true
104
+ res.status.should be_nil
105
+ res.message.should be_nil
106
+ end
107
+ end
108
+ end
109
+
110
+ describe "blog_post_user_feedback method" do
111
+ describe "missing arguments" do
112
+ context "missing reporter_user_id" do
113
+ use_vcr_cassette
114
+ it "should raise BadRequest error" do
115
+ lambda { Impermium.blog_post_user_feedback(nil, "MODERATOR",
116
+ @ip, @post_id, @desired_result)
117
+ }.should raise_error(Impermium::BadRequest, /reporter_user_id/)
118
+ end
119
+ end
120
+
121
+ context "invalid reporter_user_type" do
122
+ use_vcr_cassette
123
+ it "should use default value" do
124
+ res = Impermium.blog_post_user_feedback(@reporter_user_id, "NOT VALID", @ip, @post_id, @desired_result)
125
+ res.response_id.should be
126
+ res.timestamp.should be
127
+ res.status.should be_nil
128
+ res.message.should be_nil
129
+ end
130
+ end
131
+
132
+ context "missing reporter_ip" do
133
+ use_vcr_cassette
134
+ it "should raise BadRequest error" do
135
+ lambda { Impermium.blog_post_user_feedback(@reporter_user_id, "MODERATOR",
136
+ "", @post_id, @desired_result)
137
+ }.should raise_error(Impermium::BadRequest, /reporter_ip/)
138
+ end
139
+ end
140
+
141
+ context "missing blog_post_id" do
142
+ use_vcr_cassette
143
+ it "should raise BadRequest error" do
144
+ lambda { Impermium.blog_post_user_feedback(@reporter_user_id, "MODERATOR",
145
+ @ip, nil, @desired_result)
146
+ }.should raise_error(Impermium::BadRequest, /blog_post_id/)
147
+ end
148
+ end
149
+
150
+ context "missing desired_result" do
151
+ use_vcr_cassette
152
+ it "should raise BadRequest error" do
153
+ lambda { Impermium.blog_post_user_feedback(@reporter_user_id, "MODERATOR",
154
+ @ip, @post_id, nil)
155
+ }.should raise_error(Impermium::BadRequest, /desired_result/)
156
+ end
157
+ end
158
+ end
159
+
160
+ describe "successful request" do
161
+ use_vcr_cassette
162
+ it "should return an OK response" do
163
+ res = Impermium.blog_post_user_feedback(@reporter_user_id, "ENDUSER", @ip, @post_id, @desired_result)
164
+ res.response_id.start_with?("CLID").should be_true
165
+ res.response_id.should be
166
+ res.timestamp.should be
167
+ res.status.should be_nil
168
+ end
169
+ end
170
+ end
171
+
172
+ end
173
+ end
@@ -0,0 +1,205 @@
1
+ require "spec_helper"
2
+ require "json"
3
+
4
+ describe "content API section" do
5
+ describe "bookmark object" do
6
+ before(:each) do
7
+ @user_id = "whi777"
8
+ @analyst_id = "4n4l1s7_ID"
9
+ @reporter_user_id = "r3p0rt3r_ID"
10
+ @ip = "2.2.2.2"
11
+ @bookmark_id = "b00km4rk_ID"
12
+ @bookmark_url = "http://example.com/category/book/marks/33?query=whi"
13
+ @like_value = "1"
14
+ @desired_result = {:spam_classifier => { :label => "notspam" }}
15
+ end
16
+
17
+ describe "bookmark 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.bookmark(nil, @bookmark_id, @bookmark_url, @ip) }.should raise_error(Impermium::BadRequest, /user_id/)
24
+ end
25
+ end
26
+
27
+ context "missing bookmark_id" do
28
+ use_vcr_cassette
29
+ it "should raise BadRequest error" do
30
+ lambda { Impermium.bookmark(@user_id, nil, @bookmark_url, @ip) }.should raise_error(Impermium::BadRequest, /bookmark_id/)
31
+ end
32
+ end
33
+
34
+ context "missing bookmark_url" do
35
+ use_vcr_cassette
36
+ it "should raise BadRequest error" do
37
+ lambda { Impermium.bookmark(@user_id, @bookmark_id, nil, @ip) }.should raise_error(Impermium::BadRequest, /bookmark_url/)
38
+ end
39
+ end
40
+
41
+ context "missing enduser_ip" do
42
+ use_vcr_cassette
43
+ it "should raise BadRequest error" do
44
+ lambda { Impermium.bookmark(@user_id, @bookmark_id, @bookmark_url, nil) }.should raise_error(Impermium::BadRequest, /enduser_ip/)
45
+ end
46
+ end
47
+ end
48
+
49
+ describe "successful request" do
50
+ use_vcr_cassette
51
+ it "should mark bookmark with 'notspam' label" do
52
+ res = Impermium.bookmark(@user_id, @bookmark_id, @bookmark_url, @ip)
53
+ res.spam_classifier.label.should == "notspam"
54
+ end
55
+ end
56
+ end
57
+
58
+ describe "bookmark_like method" do
59
+ describe "missing arguments" do
60
+
61
+ context "missing user_id" do
62
+ use_vcr_cassette
63
+ it "should raise BadRequest error" do
64
+ lambda { Impermium.bookmark_like(nil, @bookmark_id, @bookmark_url, @like_value, @ip) }.should raise_error(Impermium::BadRequest, /user_id/)
65
+ end
66
+ end
67
+
68
+ context "missing bookmark_id" do
69
+ use_vcr_cassette
70
+ it "should raise BadRequest error" do
71
+ lambda { Impermium.bookmark_like(@user_id, nil, @bookmark_url, @like_value, @ip) }.should raise_error(Impermium::BadRequest, /bookmark_id/)
72
+ end
73
+ end
74
+
75
+ context "missing bookmark_url" do
76
+ use_vcr_cassette
77
+ it "should raise BadRequest error" do
78
+ lambda { Impermium.bookmark_like(@user_id, @bookmark_id, nil, @like_value, @ip) }.should raise_error(Impermium::BadRequest, /bookmark_url/)
79
+ end
80
+ end
81
+
82
+ context "missing like_value" do
83
+ use_vcr_cassette
84
+ it "should raise BadRequest error" do
85
+ lambda { Impermium.bookmark_like(@user_id, @bookmark_id, @bookmark_url, nil, @ip) }.should raise_error(Impermium::BadRequest, /like_value/)
86
+ end
87
+ end
88
+
89
+ context "missing enduser_ip" do
90
+ use_vcr_cassette
91
+ it "should raise BadRequest error" do
92
+ lambda { Impermium.bookmark_like(@user_id, @bookmark_id, @bookmark_url, @like_value, nil) }.should raise_error(Impermium::BadRequest, /enduser_ip/)
93
+ end
94
+ end
95
+ end
96
+
97
+ describe "successful request" do
98
+ use_vcr_cassette
99
+ it "should mark like with 'notspam' label" do
100
+ res = Impermium.bookmark_like(@user_id, @bookmark_id, @bookmark_url, @like_value, @ip)
101
+ res.spam_classifier.label.should == "notspam"
102
+ end
103
+ end
104
+ end
105
+
106
+ describe "bookmark_analyst_feedback method" do
107
+ describe "missing arguments" do
108
+ context "missing analyst_id" do
109
+ use_vcr_cassette
110
+ it "should raise BadRequest error" do
111
+ lambda { Impermium.bookmark_analyst_feedback(nil, @bookmark_id, @desired_result) }.should raise_error(Impermium::BadRequest, /analyst_id/)
112
+ end
113
+ end
114
+
115
+ context "missing bookmark_id" do
116
+ use_vcr_cassette
117
+ it "should raise BadRequest error" do
118
+ lambda { Impermium.bookmark_analyst_feedback(@analyst_id, nil, @desired_result) }.should raise_error(Impermium::BadRequest, /bookmark_id/)
119
+ end
120
+ end
121
+
122
+ context "missing desired_result" do
123
+ use_vcr_cassette
124
+ it "should raise BadRequest error" do
125
+ lambda { Impermium.bookmark_analyst_feedback(@analyst_id, @bookmark_id, nil) }.should raise_error(Impermium::BadRequest, /desired_result/)
126
+ end
127
+ end
128
+ end
129
+
130
+ describe "successful request" do
131
+ use_vcr_cassette
132
+ it "should return an OK response" do
133
+ res = Impermium.bookmark_analyst_feedback(@analyst_id, @bookmark_id, @desired_result)
134
+ res.response_id.should be_true
135
+ res.timestamp.should be_true
136
+ res.status.should be_nil
137
+ res.message.should be_nil
138
+ end
139
+ end
140
+ end
141
+
142
+ describe "bookmark_user_feedback method" do
143
+ describe "missing arguments" do
144
+ context "missing reporter_user_id" do
145
+ use_vcr_cassette
146
+ it "should raise BadRequest error" do
147
+ lambda { Impermium.bookmark_user_feedback(nil, "MODERATOR",
148
+ @ip, @bookmark_id, @desired_result)
149
+ }.should raise_error(Impermium::BadRequest, /reporter_user_id/)
150
+ end
151
+ end
152
+
153
+ context "invalid reporter_user_type" do
154
+ use_vcr_cassette
155
+ it "should use default value" do
156
+ res = Impermium.bookmark_user_feedback(@reporter_user_id, "NOT VALID", @ip, @bookmark_id, @desired_result)
157
+ res.response_id.should be
158
+ res.timestamp.should be
159
+ res.status.should be_nil
160
+ res.message.should be_nil
161
+ end
162
+ end
163
+
164
+ context "missing reporter_ip" do
165
+ use_vcr_cassette
166
+ it "should raise BadRequest error" do
167
+ lambda { Impermium.bookmark_user_feedback(@reporter_user_id, "MODERATOR",
168
+ "", @bookmark_id, @desired_result)
169
+ }.should raise_error(Impermium::BadRequest, /reporter_ip/)
170
+ end
171
+ end
172
+
173
+ context "missing bookmark_id" do
174
+ use_vcr_cassette
175
+ it "should raise BadRequest error" do
176
+ lambda { Impermium.bookmark_user_feedback(@reporter_user_id, "MODERATOR",
177
+ @ip, nil, @desired_result)
178
+ }.should raise_error(Impermium::BadRequest, /bookmark_id/)
179
+ end
180
+ end
181
+
182
+ context "missing desired_result" do
183
+ use_vcr_cassette
184
+ it "should raise BadRequest error" do
185
+ lambda { Impermium.bookmark_user_feedback(@reporter_user_id, "MODERATOR",
186
+ @ip, @bookmark_id, nil)
187
+ }.should raise_error(Impermium::BadRequest, /desired_result/)
188
+ end
189
+ end
190
+ end
191
+
192
+ describe "successful request" do
193
+ use_vcr_cassette
194
+ it "should return an OK response" do
195
+ res = Impermium.bookmark_user_feedback(@reporter_user_id, "ENDUSER", @ip, @bookmark_id, @desired_result)
196
+ res.response_id.start_with?("CLID").should be_true
197
+ res.response_id.should be
198
+ res.timestamp.should be
199
+ res.status.should be_nil
200
+ end
201
+ end
202
+ end
203
+
204
+ end
205
+ end
@@ -0,0 +1,178 @@
1
+ require "spec_helper"
2
+ require "json"
3
+
4
+ describe "content API section" do
5
+ describe "comment object" do
6
+ before(:each) do
7
+ @user_id = "whi345"
8
+ @analyst_id = "4n4l1s7"
9
+ @reporter_user_id = "r3p0rt3r"
10
+ @ip = "1.1.1.1"
11
+ @content = "a simple comment"
12
+ @comment_id = "simple-comment-347865"
13
+ @comment_permalink = "http://example.com/2012/03/05/just_a_comment"
14
+ @article_permalink = "http://example.com/2012/01/05/just_a_post"
15
+ @desired_result = {:spam_classifier => { :label => "notspam" }}
16
+ end
17
+
18
+ describe "comment method" do
19
+ describe "missing arguments" do
20
+
21
+ context "missing user_id" do
22
+ use_vcr_cassette
23
+ it "should raise BadRequest error" do
24
+ lambda { Impermium.comment(nil, @comment_id, @content, @comment_permalink, @article_permalink, @ip)
25
+ }.should raise_error(Impermium::BadRequest, /user_id/)
26
+ end
27
+ end
28
+
29
+ context "missing comment_id" do
30
+ use_vcr_cassette
31
+ it "should raise BadRequest error" do
32
+ lambda { Impermium.comment(@user_id, nil, @content, @comment_permalink, @article_permalink, @ip)
33
+ }.should raise_error(Impermium::BadRequest, /comment_id/)
34
+ end
35
+ end
36
+
37
+ context "missing content" do
38
+ use_vcr_cassette
39
+ it "should raise BadRequest error" do
40
+ lambda { Impermium.comment(@user_id, @comment_id, nil, @comment_permalink, @article_permalink, @ip)
41
+ }.should raise_error(Impermium::BadRequest, /content/)
42
+ end
43
+ end
44
+
45
+ context "missing comment_permalink" do
46
+ use_vcr_cassette
47
+ it "should raise BadRequest error" do
48
+ lambda { Impermium.comment(@user_id, @comment_id, @content, nil, @article_permalink, @ip)
49
+ }.should raise_error(Impermium::BadRequest, /comment_permalink/)
50
+ end
51
+ end
52
+
53
+ context "missing article_permalink" do
54
+ use_vcr_cassette
55
+ it "should raise BadRequest error" do
56
+ lambda { Impermium.comment(@user_id, @comment_id, @content, @comment_permalink, nil, @ip)
57
+ }.should raise_error(Impermium::BadRequest, /article_permalink/)
58
+ end
59
+ end
60
+
61
+ context "missing enduser_ip" do
62
+ use_vcr_cassette
63
+ it "should raise BadRequest error" do
64
+ lambda { Impermium.comment(@user_id, @comment_id, @content, @comment_permalink, @article_permalink, nil)
65
+ }.should raise_error(Impermium::BadRequest, /enduser_ip/)
66
+ end
67
+ end
68
+ end
69
+
70
+ describe "successful request" do
71
+ use_vcr_cassette
72
+ it "should mark comment with 'notspam' label" do
73
+ res = Impermium.comment(@user_id, @comment_id, @content, @comment_permalink, @article_permalink, @ip)
74
+ res.spam_classifier.label.should == "notspam"
75
+ end
76
+ end
77
+ end
78
+
79
+ describe "comment_analyst_feedback method" do
80
+ describe "missing arguments" do
81
+ context "missing analyst_id" do
82
+ use_vcr_cassette
83
+ it "should raise BadRequest error" do
84
+ lambda { Impermium.comment_analyst_feedback(nil, @comment_id, @desired_result) }.should raise_error(Impermium::BadRequest, /analyst_id/)
85
+ end
86
+ end
87
+
88
+ context "missing comment_id" do
89
+ use_vcr_cassette
90
+ it "should raise BadRequest error" do
91
+ lambda { Impermium.comment_analyst_feedback(@analyst_id, nil, @desired_result) }.should raise_error(Impermium::BadRequest, /comment_id/)
92
+ end
93
+ end
94
+
95
+ context "missing desired_result" do
96
+ use_vcr_cassette
97
+ it "should raise BadRequest error" do
98
+ lambda { Impermium.comment_analyst_feedback(@analyst_id, @comment_id, nil) }.should raise_error(Impermium::BadRequest, /desired_result/)
99
+ end
100
+ end
101
+ end
102
+
103
+ describe "successful request" do
104
+ use_vcr_cassette
105
+ it "should return an OK response" do
106
+ res = Impermium.comment_analyst_feedback(@analyst_id, @comment_id, @desired_result)
107
+ res.response_id.should be_true
108
+ res.timestamp.should be_true
109
+ res.status.should be_nil
110
+ res.message.should be_nil
111
+ end
112
+ end
113
+ end
114
+
115
+ describe "comment_user_feedback method" do
116
+ describe "missing arguments" do
117
+ context "missing reporter_user_id" do
118
+ use_vcr_cassette
119
+ it "should raise BadRequest error" do
120
+ lambda { Impermium.comment_user_feedback(nil, "MODERATOR",
121
+ @ip, @comment_id, @desired_result)
122
+ }.should raise_error(Impermium::BadRequest, /reporter_user_id/)
123
+ end
124
+ end
125
+
126
+ context "invalid reporter_user_type" do
127
+ use_vcr_cassette
128
+ it "should use default value" do
129
+ res = Impermium.comment_user_feedback(@reporter_user_id, "NOT VALID", @ip, @comment_id, @desired_result)
130
+ res.response_id.should be
131
+ res.timestamp.should be
132
+ res.status.should be_nil
133
+ res.message.should be_nil
134
+ end
135
+ end
136
+
137
+ context "missing reporter_ip" do
138
+ use_vcr_cassette
139
+ it "should raise BadRequest error" do
140
+ lambda { Impermium.comment_user_feedback(@reporter_user_id, "MODERATOR",
141
+ "", @comment_id, @desired_result)
142
+ }.should raise_error(Impermium::BadRequest, /reporter_ip/)
143
+ end
144
+ end
145
+
146
+ context "missing comment_id" do
147
+ use_vcr_cassette
148
+ it "should raise BadRequest error" do
149
+ lambda { Impermium.comment_user_feedback(@reporter_user_id, "MODERATOR",
150
+ @ip, nil, @desired_result)
151
+ }.should raise_error(Impermium::BadRequest, /comment_id/)
152
+ end
153
+ end
154
+
155
+ context "missing desired_result" do
156
+ use_vcr_cassette
157
+ it "should raise BadRequest error" do
158
+ lambda { Impermium.comment_user_feedback(@reporter_user_id, "MODERATOR",
159
+ @ip, @comment_id, nil)
160
+ }.should raise_error(Impermium::BadRequest, /desired_result/)
161
+ end
162
+ end
163
+ end
164
+
165
+ describe "successful request" do
166
+ use_vcr_cassette
167
+ it "should return an OK response" do
168
+ res = Impermium.comment_user_feedback(@reporter_user_id, "ENDUSER", @ip, @comment_id, @desired_result)
169
+ res.response_id.start_with?("CLID").should be_true
170
+ res.response_id.should be
171
+ res.timestamp.should be
172
+ res.status.should be_nil
173
+ end
174
+ end
175
+ end
176
+
177
+ end
178
+ end