impermium 1.0.0

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