shout-mouth-communicator 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (43) hide show
  1. data/.gitignore +6 -0
  2. data/.rvmrc +1 -0
  3. data/Gemfile +4 -0
  4. data/README.rdoc +7 -0
  5. data/Rakefile +2 -0
  6. data/lib/shout-mouth-communicator/shout-mouth-communicator.rb +241 -0
  7. data/lib/shout-mouth-communicator/version.rb +7 -0
  8. data/lib/shout-mouth-communicator.rb +1 -0
  9. data/shout-mouth-communicator.gemspec +25 -0
  10. data/specs/.gitkeep +0 -0
  11. data/specs/fakes/xmlrpc_server.rb +71 -0
  12. data/specs/fakes/xmlrpc_server_responses/add_user.xml +10 -0
  13. data/specs/fakes/xmlrpc_server_responses/bad_authentication.xml +30 -0
  14. data/specs/fakes/xmlrpc_server_responses/delete_page.xml +10 -0
  15. data/specs/fakes/xmlrpc_server_responses/delete_post.xml +10 -0
  16. data/specs/fakes/xmlrpc_server_responses/delete_user.xml +10 -0
  17. data/specs/fakes/xmlrpc_server_responses/edit_category.xml +10 -0
  18. data/specs/fakes/xmlrpc_server_responses/edit_comment.xml +10 -0
  19. data/specs/fakes/xmlrpc_server_responses/edit_page.xml +10 -0
  20. data/specs/fakes/xmlrpc_server_responses/edit_post.xml +11 -0
  21. data/specs/fakes/xmlrpc_server_responses/edit_tag.xml +10 -0
  22. data/specs/fakes/xmlrpc_server_responses/edit_user.xml +10 -0
  23. data/specs/fakes/xmlrpc_server_responses/get_authors.xml +41 -0
  24. data/specs/fakes/xmlrpc_server_responses/get_categories.xml +197 -0
  25. data/specs/fakes/xmlrpc_server_responses/get_comments.xml +101 -0
  26. data/specs/fakes/xmlrpc_server_responses/get_comments_all.xml +189 -0
  27. data/specs/fakes/xmlrpc_server_responses/get_comments_spam.xml +12 -0
  28. data/specs/fakes/xmlrpc_server_responses/get_options.xml +573 -0
  29. data/specs/fakes/xmlrpc_server_responses/get_page.xml +182 -0
  30. data/specs/fakes/xmlrpc_server_responses/get_pages.xml +188 -0
  31. data/specs/fakes/xmlrpc_server_responses/get_post.xml +193 -0
  32. data/specs/fakes/xmlrpc_server_responses/get_recent_posts.xml +385 -0
  33. data/specs/fakes/xmlrpc_server_responses/get_tags.xml +173 -0
  34. data/specs/fakes/xmlrpc_server_responses/get_user_info.xml +41 -0
  35. data/specs/fakes/xmlrpc_server_responses/new_category.xml +10 -0
  36. data/specs/fakes/xmlrpc_server_responses/new_media_object.xml +23 -0
  37. data/specs/fakes/xmlrpc_server_responses/new_page.xml +10 -0
  38. data/specs/fakes/xmlrpc_server_responses/new_post.xml +10 -0
  39. data/specs/fakes/xmlrpc_server_responses/set_options.xml +36 -0
  40. data/specs/fakes/xmlrpc_server_responses/validation_error.xml +30 -0
  41. data/specs/helpers/spec_helper.rb +9 -0
  42. data/specs/shout_mout_client_specification.rb +172 -0
  43. metadata +161 -0
@@ -0,0 +1,36 @@
1
+ <?xml version="1.0"?>
2
+ <methodResponse>
3
+ <params>
4
+ <param>
5
+ <value>
6
+ <struct>
7
+ <member>
8
+ <name>blog_title</name>
9
+ <value>
10
+ <struct>
11
+ <member>
12
+ <name>desc</name>
13
+ <value>
14
+ <string>Site Title</string>
15
+ </value>
16
+ </member>
17
+ <member>
18
+ <name>readonly</name>
19
+ <value>
20
+ <boolean>0</boolean>
21
+ </value>
22
+ </member>
23
+ <member>
24
+ <name>value</name>
25
+ <value>
26
+ <string>ttle</string>
27
+ </value>
28
+ </member>
29
+ </struct>
30
+ </value>
31
+ </member>
32
+ </struct>
33
+ </value>
34
+ </param>
35
+ </params>
36
+ </methodResponse>
@@ -0,0 +1,30 @@
1
+ <?xml version="1.0"?>
2
+ <methodResponse>
3
+ <params>
4
+ <param>
5
+ <value>
6
+ <struct>
7
+ <member>
8
+ <name>fault</name>
9
+ <value>
10
+ <struct>
11
+ <member>
12
+ <name>faultCode</name>
13
+ <value>
14
+ <int>4003</int>
15
+ </value>
16
+ </member>
17
+ <member>
18
+ <name>faultString</name>
19
+ <value>
20
+ <string>["Firstname must not be blank", "Lastname must not be blank", "Email must not be blank"]</string>
21
+ </value>
22
+ </member>
23
+ </struct>
24
+ </value>
25
+ </member>
26
+ </struct>
27
+ </value>
28
+ </param>
29
+ </params>
30
+ </methodResponse>
@@ -0,0 +1,9 @@
1
+ require 'rspec'
2
+ require File.expand_path('../../fakes/xmlrpc_server', __FILE__)
3
+
4
+ ENV['RACK_ENV'] = 'test'
5
+
6
+ RSpec.configure do |configuration|
7
+ configuration.before(:all){ @server = XMLrpcServer.new }
8
+ configuration.after(:all){ @server.kill}
9
+ end
@@ -0,0 +1,172 @@
1
+ require File.expand_path('../helpers/spec_helper', __FILE__)
2
+ require File.expand_path('../../lib/shout-mouth-communicator', __FILE__)
3
+
4
+ describe "Shout Mouth RPC API" do
5
+
6
+ before(:all) do
7
+ @shout_mouth_client = ShoutMouthCommunicator.new("http://0.0.0.0:4000/xmlrpc.php", "1", "correct", "password")
8
+ end
9
+
10
+ after(:each) do
11
+ @shout_mouth_client.client.http_header_extra = nil
12
+ end
13
+
14
+ it "should disallow authorization to the system when credentials are incorrect" do
15
+ shout_mouth_client = ShoutMouthCommunicator.new("http://0.0.0.0:4000/xmlrpc.php", "1", "wrong", "password")
16
+ shout_mouth_client.authorized?.should be_false
17
+ end
18
+
19
+ it "should allow authorization to the system when the credentails are correct" do
20
+ @shout_mouth_client.authorized?.should be_true
21
+ end
22
+
23
+ it "should return a list of correct tags" do
24
+ tags = @shout_mouth_client.tags
25
+ tags[0].should include "tag_id"=>"1"
26
+ tags[1].should include "tag_id"=>"2"
27
+ tags[2].should include "tag_id"=>"3"
28
+ tags[3].should include "tag_id"=>"4"
29
+ end
30
+
31
+ it "should return the correct response when a tag is edited" do
32
+ response = @shout_mouth_client.edit_tag 1, "Boooooommmmmmm!"
33
+ response.should be_true
34
+ end
35
+
36
+ it "should return a list of correct categories" do
37
+ categories = @shout_mouth_client.categories
38
+ categories[0].should include "categoryId"=> "1"
39
+ categories[1].should include "categoryId"=> "2"
40
+ categories[2].should include "categoryId"=> "3"
41
+ categories[3].should include "categoryId"=> "4"
42
+ end
43
+
44
+ it "should return the correct response when a category has been created" do
45
+ response = @shout_mouth_client.new_category("Category123", "Category123 Description")
46
+ response.should == 5
47
+ end
48
+
49
+ it "should return the correct response when a category is edited" do
50
+ response = @shout_mouth_client.edit_category(5, "edited")
51
+ response.should be_true
52
+ end
53
+
54
+ it "should return a correct list of posts" do
55
+ posts = @shout_mouth_client.posts
56
+ posts.count.should == 2
57
+ posts[0]["title"].should == "This is how we roll"
58
+ posts[1]["title"].should == "New Post 1"
59
+ end
60
+
61
+ it "should return a post when the get_post method is called" do
62
+ post = @shout_mouth_client.post 1
63
+ post["title"].should == "This is how we roll"
64
+ end
65
+
66
+ it "should return a correct response when a new post is added" do
67
+ response = @shout_mouth_client.new_post "title", "description", "category1,category2", "publish", DateTime.now, "tag1,tag2"
68
+ response.should == 4
69
+ end
70
+
71
+ it "should return a correct response when a post is edited" do
72
+ response = @shout_mouth_client.edit_post 4, "title_edit", "description_edit", "category9,category10", "publish", DateTime.now, "tag9,tag10"
73
+ response.should be_true
74
+ end
75
+
76
+ it "should return a correct response when the delete post method is called" do
77
+ response = @shout_mouth_client.delete_post 4
78
+ response.should be_true
79
+ end
80
+
81
+ it "should return a correct list of pages when the pages method is called" do
82
+ pages = @shout_mouth_client.pages
83
+ pages.first["title"].should == "bang"
84
+ end
85
+
86
+ it "should return a correct page when the page method is called" do
87
+ page = @shout_mouth_client.page 8
88
+ page["title"].should == "bang"
89
+ end
90
+
91
+ it "should return a correct response when the new post method is called" do
92
+ response = @shout_mouth_client.new_page "new page 1", "body", "publish", 1, 0
93
+ response.should == 10
94
+ end
95
+
96
+ it "should return a correct response when the edit page method is called" do
97
+ @shout_mouth_client.client.http_header_extra = {"response_file" => "edit_page"}
98
+ response = @shout_mouth_client.edit_page 10, "new page 123", "body", "publish", 1, 0
99
+ response.should == 10
100
+ end
101
+
102
+ it "should return a correct response when the delete page method is called" do
103
+ response = @shout_mouth_client.delete_page 10
104
+ response.should be_true
105
+ end
106
+
107
+ it "should return comments for a post when the get post comments methods is called" do
108
+ comments = @shout_mouth_client.comments_for_post 4
109
+ comments.first["user_id"].should == "ham@ok.com"
110
+ end
111
+
112
+ it "should return no comments for a post when the get comments method is called with the spam flag" do
113
+ @shout_mouth_client.client.http_header_extra = {"response_file" => "get_comments_spam"}
114
+ @shout_mouth_client.comments_for_post(4, "spam").should be_empty
115
+ end
116
+
117
+ it "should return all active comments when the comments method is called" do
118
+ @shout_mouth_client.client.http_header_extra = {"response_file" => "get_comments_all"}
119
+ comments = @shout_mouth_client.comments
120
+ comments.count.should == 2
121
+ end
122
+
123
+ it "should return the correct response when the edit comment method is called" do
124
+ response = @shout_mouth_client.edit_comment(1, "comment_changed", "content", "http://google.com", "dan@dan.com", "active")
125
+ response.should be_true
126
+ end
127
+
128
+ it "should return a list of avaliable settings for the shout mouth instance when the settings method is called" do
129
+ settings = @shout_mouth_client.settings
130
+ settings["software_name"]["value"].should == "Shout Mouth Blog Engine"
131
+ settings["administrator_email"]["value"].should == "admin@yourserver.com"
132
+ end
133
+
134
+ it "should return a setting when a settings is edited" do
135
+ setting = @shout_mouth_client.edit_settings({"blog_title" => "ttle"})
136
+ setting["blog_title"]["value"].should == "ttle"
137
+ end
138
+
139
+ it "should return all users when the user method is called" do
140
+ users = @shout_mouth_client.users
141
+ users.first["user_email"].should == "dan@shout_mouth.com"
142
+ end
143
+
144
+ it "should return information about the current user when the current user method is called" do
145
+ user = @shout_mouth_client.current_user
146
+ user["firstname"].should == "Daniel"
147
+ user["lastname"].should == "Watson"
148
+ end
149
+
150
+ it "should return true when the add use method is called" do
151
+ @shout_mouth_client.add_user("email@address.com", "password", "firstname", "lastname").should be_true
152
+ end
153
+
154
+ it "should return true when the edit user method is called" do
155
+ @shout_mouth_client.edit_user("1", "email@address.com", "password", "firstname", "lastname").should be_true
156
+ end
157
+
158
+ it "should return true when the delete user method is called" do
159
+ @shout_mouth_client.delete_user(1).should be_true
160
+ end
161
+
162
+ it "should return the correct url when a file is uploaded" do
163
+ @shout_mouth_client.upload_file("Austria.gif", [])["url"].should == "http://0.0.0.0:4000/uploads/Austria.gif"
164
+ end
165
+
166
+ it "should have errors if the response contains validation errors" do
167
+ @shout_mouth_client.client.http_header_extra = {"response_file" => "validation_error"}
168
+ @shout_mouth_client.edit_user("1", "email@addess.com", "password", "", "")
169
+ @shout_mouth_client.has_errors?.should be_true
170
+ @shout_mouth_client.errors.count.should == 3
171
+ end
172
+ end
metadata ADDED
@@ -0,0 +1,161 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: shout-mouth-communicator
3
+ version: !ruby/object:Gem::Version
4
+ prerelease:
5
+ version: 1.0.0
6
+ platform: ruby
7
+ authors:
8
+ - Dan Watson
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+
13
+ date: 2011-05-24 00:00:00 +01:00
14
+ default_executable:
15
+ dependencies:
16
+ - !ruby/object:Gem::Dependency
17
+ name: racksh
18
+ prerelease: false
19
+ requirement: &id001 !ruby/object:Gem::Requirement
20
+ none: false
21
+ requirements:
22
+ - - ">="
23
+ - !ruby/object:Gem::Version
24
+ version: "0"
25
+ type: :development
26
+ version_requirements: *id001
27
+ - !ruby/object:Gem::Dependency
28
+ name: thin
29
+ prerelease: false
30
+ requirement: &id002 !ruby/object:Gem::Requirement
31
+ none: false
32
+ requirements:
33
+ - - ">="
34
+ - !ruby/object:Gem::Version
35
+ version: "0"
36
+ type: :development
37
+ version_requirements: *id002
38
+ - !ruby/object:Gem::Dependency
39
+ name: rspec
40
+ prerelease: false
41
+ requirement: &id003 !ruby/object:Gem::Requirement
42
+ none: false
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: "0"
47
+ type: :development
48
+ version_requirements: *id003
49
+ description: An xmlrpc client that allows administration of the Shout Mouth blog engine"
50
+ email:
51
+ - dan@dotnetguy.co.uk
52
+ executables: []
53
+
54
+ extensions: []
55
+
56
+ extra_rdoc_files: []
57
+
58
+ files:
59
+ - .gitignore
60
+ - .rvmrc
61
+ - Gemfile
62
+ - README.rdoc
63
+ - Rakefile
64
+ - lib/shout-mouth-communicator.rb
65
+ - lib/shout-mouth-communicator/shout-mouth-communicator.rb
66
+ - lib/shout-mouth-communicator/version.rb
67
+ - shout-mouth-communicator.gemspec
68
+ - specs/.gitkeep
69
+ - specs/fakes/xmlrpc_server.rb
70
+ - specs/fakes/xmlrpc_server_responses/add_user.xml
71
+ - specs/fakes/xmlrpc_server_responses/bad_authentication.xml
72
+ - specs/fakes/xmlrpc_server_responses/delete_page.xml
73
+ - specs/fakes/xmlrpc_server_responses/delete_post.xml
74
+ - specs/fakes/xmlrpc_server_responses/delete_user.xml
75
+ - specs/fakes/xmlrpc_server_responses/edit_category.xml
76
+ - specs/fakes/xmlrpc_server_responses/edit_comment.xml
77
+ - specs/fakes/xmlrpc_server_responses/edit_page.xml
78
+ - specs/fakes/xmlrpc_server_responses/edit_post.xml
79
+ - specs/fakes/xmlrpc_server_responses/edit_tag.xml
80
+ - specs/fakes/xmlrpc_server_responses/edit_user.xml
81
+ - specs/fakes/xmlrpc_server_responses/get_authors.xml
82
+ - specs/fakes/xmlrpc_server_responses/get_categories.xml
83
+ - specs/fakes/xmlrpc_server_responses/get_comments.xml
84
+ - specs/fakes/xmlrpc_server_responses/get_comments_all.xml
85
+ - specs/fakes/xmlrpc_server_responses/get_comments_spam.xml
86
+ - specs/fakes/xmlrpc_server_responses/get_options.xml
87
+ - specs/fakes/xmlrpc_server_responses/get_page.xml
88
+ - specs/fakes/xmlrpc_server_responses/get_pages.xml
89
+ - specs/fakes/xmlrpc_server_responses/get_post.xml
90
+ - specs/fakes/xmlrpc_server_responses/get_recent_posts.xml
91
+ - specs/fakes/xmlrpc_server_responses/get_tags.xml
92
+ - specs/fakes/xmlrpc_server_responses/get_user_info.xml
93
+ - specs/fakes/xmlrpc_server_responses/new_category.xml
94
+ - specs/fakes/xmlrpc_server_responses/new_media_object.xml
95
+ - specs/fakes/xmlrpc_server_responses/new_page.xml
96
+ - specs/fakes/xmlrpc_server_responses/new_post.xml
97
+ - specs/fakes/xmlrpc_server_responses/set_options.xml
98
+ - specs/fakes/xmlrpc_server_responses/validation_error.xml
99
+ - specs/helpers/spec_helper.rb
100
+ - specs/shout_mout_client_specification.rb
101
+ has_rdoc: true
102
+ homepage: https://github.com/dotnetguyuk/shout-mouth-communicator
103
+ licenses: []
104
+
105
+ post_install_message:
106
+ rdoc_options: []
107
+
108
+ require_paths:
109
+ - lib
110
+ required_ruby_version: !ruby/object:Gem::Requirement
111
+ none: false
112
+ requirements:
113
+ - - ">="
114
+ - !ruby/object:Gem::Version
115
+ version: "0"
116
+ required_rubygems_version: !ruby/object:Gem::Requirement
117
+ none: false
118
+ requirements:
119
+ - - ">="
120
+ - !ruby/object:Gem::Version
121
+ version: "0"
122
+ requirements: []
123
+
124
+ rubyforge_project: shout-mouth-communicator
125
+ rubygems_version: 1.6.2
126
+ signing_key:
127
+ specification_version: 3
128
+ summary: Shout Mouth Blog Engine API Wrapper
129
+ test_files:
130
+ - specs/fakes/xmlrpc_server.rb
131
+ - specs/fakes/xmlrpc_server_responses/add_user.xml
132
+ - specs/fakes/xmlrpc_server_responses/bad_authentication.xml
133
+ - specs/fakes/xmlrpc_server_responses/delete_page.xml
134
+ - specs/fakes/xmlrpc_server_responses/delete_post.xml
135
+ - specs/fakes/xmlrpc_server_responses/delete_user.xml
136
+ - specs/fakes/xmlrpc_server_responses/edit_category.xml
137
+ - specs/fakes/xmlrpc_server_responses/edit_comment.xml
138
+ - specs/fakes/xmlrpc_server_responses/edit_page.xml
139
+ - specs/fakes/xmlrpc_server_responses/edit_post.xml
140
+ - specs/fakes/xmlrpc_server_responses/edit_tag.xml
141
+ - specs/fakes/xmlrpc_server_responses/edit_user.xml
142
+ - specs/fakes/xmlrpc_server_responses/get_authors.xml
143
+ - specs/fakes/xmlrpc_server_responses/get_categories.xml
144
+ - specs/fakes/xmlrpc_server_responses/get_comments.xml
145
+ - specs/fakes/xmlrpc_server_responses/get_comments_all.xml
146
+ - specs/fakes/xmlrpc_server_responses/get_comments_spam.xml
147
+ - specs/fakes/xmlrpc_server_responses/get_options.xml
148
+ - specs/fakes/xmlrpc_server_responses/get_page.xml
149
+ - specs/fakes/xmlrpc_server_responses/get_pages.xml
150
+ - specs/fakes/xmlrpc_server_responses/get_post.xml
151
+ - specs/fakes/xmlrpc_server_responses/get_recent_posts.xml
152
+ - specs/fakes/xmlrpc_server_responses/get_tags.xml
153
+ - specs/fakes/xmlrpc_server_responses/get_user_info.xml
154
+ - specs/fakes/xmlrpc_server_responses/new_category.xml
155
+ - specs/fakes/xmlrpc_server_responses/new_media_object.xml
156
+ - specs/fakes/xmlrpc_server_responses/new_page.xml
157
+ - specs/fakes/xmlrpc_server_responses/new_post.xml
158
+ - specs/fakes/xmlrpc_server_responses/set_options.xml
159
+ - specs/fakes/xmlrpc_server_responses/validation_error.xml
160
+ - specs/helpers/spec_helper.rb
161
+ - specs/shout_mout_client_specification.rb