shout-mouth-communicator 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 (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