messagemedia-ruby 0.7.0 → 0.7.1

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.
checksums.yaml CHANGED
@@ -1,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- MjM5ZTNkNjA1YzUzMGY2YmQ1ZmUwYWU2NzBlNDE3NDgwYjQxNGZhMg==
5
- data.tar.gz: !binary |-
6
- YjRjNjM1YjgxNjZhN2QwYmIxMjE4NmMyMDRlYzhiZmY1ZGM4MTJjMA==
2
+ SHA1:
3
+ metadata.gz: 935902a5a49ea6a540f5b09d20c6adc75aee1969
4
+ data.tar.gz: 6938c8ba949cc4006a49b4a7eb9b42dfd2494639
7
5
  SHA512:
8
- metadata.gz: !binary |-
9
- ZjI4ZDYyNTQ1YTBhMmVhN2E5MWY1ZTk1OGUzMGIyYWYzMDkwNThjN2UwZDRh
10
- ZDdhNWQ4MjQwZTRkZmI5N2YwZWQ0ZDJiOWI1ZTc5OTU0NmI0OWI1ZDI0NmM0
11
- Nzg2ODQyY2ViMTI1ZTIxODQ3OTk4ZjQ4YWQyYjdlNWQ2ZDgyNTE=
12
- data.tar.gz: !binary |-
13
- YTc5NWQ0M2IzNGI0ZTAzODM1M2ZjYzE0MDU0ZWYzZmE1Y2EyMjg2MjEwN2Vh
14
- MjM4YmE4NmU4OTI5OTE3NmYzMmI3NTM4N2FhZDBmY2MzYjI0ZWEzMWRkZjQ2
15
- YTk2NTdmMzI1ODgzYmY2YzgzZWMzYjAyMGU5YjkwNDViMDljY2Q=
6
+ metadata.gz: 4c0ec1f0a52e1f89c60122d03065f12683857ba449541be3ffb0f19ed08ec0e267478c62fe37e41d4fae5dbfd85f17eba1e5972353ca674f2fdc4de07cf860b6
7
+ data.tar.gz: 44975416d2ea2db6c0708292ea1521aa02f316188d75ccbed2f512f6c476346cdcab293118adc30a4ed1a0d2415ad6e675149c5451c60fe4e91addb15221f5d1
@@ -0,0 +1,9 @@
1
+ messagemedia-ruby changelog
2
+ ===========================
3
+
4
+ Version 0.7.0
5
+ -------------
6
+
7
+ Released March 26, 2015
8
+
9
+ - Renamed gem from messagemedia-soap to messagemedia-ruby
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- [![Gem Version](https://badge.fury.io/rb/messagemedia-soap.svg)](http://badge.fury.io/rb/messagemedia-soap)
1
+ [![Gem Version](https://badge.fury.io/rb/messagemedia-ruby.svg)](http://badge.fury.io/rb/messagemedia-ruby)
2
2
  [![Build Status](https://travis-ci.org/messagemedia/messagemedia-ruby.svg)](https://travis-ci.org/messagemedia/messagemedia-ruby)
3
3
 
4
4
  # MessageMedia Ruby SDK
data/Rakefile CHANGED
@@ -1,8 +1,8 @@
1
1
  require 'rake/testtask'
2
2
 
3
- Rake::TestTask.new do |t|
4
- t.libs << 'test'
5
- end
3
+ require 'rspec/core/rake_task'
4
+
5
+ RSpec::Core::RakeTask.new
6
6
 
7
7
  desc 'Run tests'
8
- task :default => :test
8
+ task :default => :spec
@@ -1,5 +1,7 @@
1
1
  require 'savon'
2
2
 
3
+ require_relative 'message'
4
+
3
5
  module Messagemedia
4
6
  module SOAP
5
7
 
@@ -1,3 +1,3 @@
1
1
  module Messagemedia
2
- VERSION = '0.7.0'
2
+ VERSION = '0.7.1'
3
3
  end
@@ -21,7 +21,8 @@ Gem::Specification.new do |spec|
21
21
 
22
22
  spec.add_development_dependency 'bundler', '~> 1.5'
23
23
  spec.add_dependency 'rake'
24
+ spec.add_dependency 'rspec'
24
25
  spec.add_dependency 'savon', '~> 2.4'
25
- spec.add_dependency 'test-unit'
26
+ spec.add_dependency 'simplecov', '~> 0.9.2'
26
27
 
27
28
  end
@@ -0,0 +1,260 @@
1
+ require_relative '../../spec_helper'
2
+
3
+ require 'savon/mock/spec_helper'
4
+
5
+ describe Messagemedia::SOAP::Client do
6
+ include Savon::SpecHelper
7
+
8
+ before(:all) { savon.mock! }
9
+ after(:all) { savon.unmock! }
10
+
11
+ describe '#send_message' do
12
+ it 'sends a message' do
13
+
14
+ expected_request_body = {
15
+ :'api:authentication' => {
16
+ :'api:userId' => 'username',
17
+ :'api:password' => 'password'
18
+ },
19
+ :'api:requestBody' => {
20
+ :'api:messages' => {
21
+ :@sendMode => 'normal',
22
+ :'api:message' => [
23
+ {
24
+ :'api:content' => 'Test',
25
+ :'api:recipients' => {
26
+ :'api:recipient' => ['0491570156'],
27
+ :attributes! => {
28
+ :'api:recipient' => {
29
+ :uid => [0]
30
+ }
31
+ }
32
+ },
33
+ :@format => 'SMS',
34
+ :@sequenceNumber => 0,
35
+ :'api:deliveryReport' => true,
36
+ :'api:validityPeriod' => 1,
37
+ :'api:origin' => '0491570110'
38
+ }
39
+ ]
40
+ }
41
+ }
42
+ }
43
+
44
+ packaged_response = {
45
+ :code => 200,
46
+ :headers => {},
47
+ :body => Gyoku.xml({
48
+ :'SOAP-ENV:Envelope' => {
49
+ :'@xmlns:SOAP-ENV' => 'http://schemas.xmlsoap.org/soap/envelope/',
50
+ :'@xmlns:xsd' => 'http://www.w3.org/2001/XMLSchema',
51
+ :'@xmlns:xsi' => 'http://www.w3.org/2001/XMLSchema-instance',
52
+ :'@xmlns:SOAP-ENC' => 'http://schemas.xmlsoap.org/soap/encoding/',
53
+ :'SOAP-ENV:Body' => {
54
+ :send_messages_response => {
55
+ :@xmlns => 'http://xml.m4u.com.au/2009',
56
+ :result => {
57
+ :account_details => {
58
+ :@type => 'daily',
59
+ :@credit_limit => '500',
60
+ :@credit_remaining => '497'
61
+ },
62
+ :@sent => '1',
63
+ :@scheduled => '0',
64
+ :@failed => '0'
65
+ }
66
+ }
67
+ }
68
+ }
69
+ },
70
+ {
71
+ :key_converter => :none
72
+ })
73
+ }
74
+
75
+ savon.expects(:send_messages).with(message: expected_request_body).returns(packaged_response)
76
+
77
+ client = described_class.new('username', 'password')
78
+ result = client.send_message('0491570156', 'Test', 0, '0491570110')
79
+
80
+ expect(result).to_not be_nil
81
+ expect(result[:account_details]).to_not be_nil
82
+ expect(result[:account_details][:@type]).to eq('daily')
83
+ expect(result[:account_details][:@credit_limit]).to eq('500')
84
+ expect(result[:account_details][:@credit_remaining]).to eq('497')
85
+ expect(result[:@sent]).to eq('1')
86
+ expect(result[:@scheduled]).to eq('0')
87
+ expect(result[:@failed]).to eq('0')
88
+
89
+ end
90
+ end
91
+
92
+ describe '#send_messages' do
93
+ it 'sends multiple message' do
94
+ expected_request_body = {
95
+ :'api:authentication' => {
96
+ :'api:userId' => 'username',
97
+ :'api:password' => 'password'
98
+ },
99
+ :'api:requestBody' => {
100
+ :'api:messages' => {
101
+ :@sendMode => 'normal',
102
+ :'api:message' => [
103
+ {
104
+ :'api:content' => 'Test 1',
105
+ :'api:recipients' => {
106
+ :'api:recipient' => ['0491570156'],
107
+ :attributes! => {
108
+ :'api:recipient' => {
109
+ :uid => [0]
110
+ }
111
+ }
112
+ },
113
+ :@format => 'SMS',
114
+ :@sequenceNumber => 0,
115
+ :'api:deliveryReport' => true,
116
+ :'api:validityPeriod' => 1,
117
+ :'api:origin' => '0491570110'
118
+ },
119
+ {
120
+ :'api:content' => 'Test 2',
121
+ :'api:recipients' => {
122
+ :'api:recipient' => ['0491570157'],
123
+ :attributes! => {
124
+ :'api:recipient' => {
125
+ :uid => [1]
126
+ }
127
+ }
128
+ },
129
+ :@format => 'SMS',
130
+ :@sequenceNumber => 0,
131
+ :'api:deliveryReport' => false,
132
+ :'api:validityPeriod' => 2,
133
+ :'api:origin' => '0491570109'
134
+ }
135
+ ]
136
+ }
137
+ }
138
+ }
139
+
140
+ packaged_response = {
141
+ :code => 200,
142
+ :headers => {},
143
+ :body => Gyoku.xml({
144
+ :'SOAP-ENV:Envelope' => {
145
+ :'@xmlns:SOAP-ENV' => 'http://schemas.xmlsoap.org/soap/envelope/',
146
+ :'@xmlns:xsd' => 'http://www.w3.org/2001/XMLSchema',
147
+ :'@xmlns:xsi' => 'http://www.w3.org/2001/XMLSchema-instance',
148
+ :'@xmlns:SOAP-ENC' => 'http://schemas.xmlsoap.org/soap/encoding/',
149
+ :'SOAP-ENV:Body' => {
150
+ :send_messages_response => {
151
+ :@xmlns => 'http://xml.m4u.com.au/2009',
152
+ :result => {
153
+ :account_details => {
154
+ :@type => 'daily',
155
+ :@credit_limit => '500',
156
+ :@credit_remaining => '497'
157
+ },
158
+ :@sent => '2',
159
+ :@scheduled => '0',
160
+ :@failed => '0'
161
+ }
162
+ }
163
+ }
164
+ }
165
+ },
166
+ {
167
+ :key_converter => :none
168
+ })
169
+ }
170
+
171
+ savon.expects(:send_messages).with(message: expected_request_body).returns(packaged_response)
172
+
173
+ client = described_class.new('username', 'password')
174
+
175
+ message_1 = Messagemedia::SOAP::Message.new
176
+ message_1.content = 'Test 1'
177
+ message_1.add_recipient(0, '0491570156')
178
+ message_1.origin = '0491570110'
179
+
180
+ message_2 = Messagemedia::SOAP::Message.new
181
+ message_2.content = 'Test 2'
182
+ message_2.add_recipient(1, '0491570157')
183
+ message_2.delivery_report = false
184
+ message_2.validity_period = 2
185
+ message_2.origin = '0491570109'
186
+
187
+ result = client.send_messages([message_1, message_2])
188
+
189
+ expect(result).to_not be_nil
190
+ expect(result[:account_details]).to_not be_nil
191
+ expect(result[:account_details][:@type]).to eq('daily')
192
+ expect(result[:account_details][:@credit_limit]).to eq('500')
193
+ expect(result[:account_details][:@credit_remaining]).to eq('497')
194
+ expect(result[:@sent]).to eq('2')
195
+ expect(result[:@scheduled]).to eq('0')
196
+ expect(result[:@failed]).to eq('0')
197
+
198
+ end
199
+ end
200
+
201
+ describe '#get_user_info' do
202
+ it 'returns user info' do
203
+
204
+ expected_request_body = {
205
+ :'api:authentication' => {
206
+ :'api:userId' => 'username',
207
+ :'api:password' => 'password'
208
+ }
209
+ }
210
+
211
+ packaged_response = {
212
+ :code => 200,
213
+ :headers => {},
214
+ :body => Gyoku.xml({
215
+ :'SOAP-ENV:Envelope' => {
216
+ :'@xmlns:SOAP-ENV' => 'http://schemas.xmlsoap.org/soap/envelope/',
217
+ :'@xmlns:xsd' => 'http://www.w3.org/2001/XMLSchema',
218
+ :'@xmlns:xsi' => 'http://www.w3.org/2001/XMLSchema-instance',
219
+ :'@xmlns:SOAP-ENC' => 'http://schemas.xmlsoap.org/soap/encoding/',
220
+ :'SOAP-ENV:Body' => {
221
+ :check_user_response => {
222
+ :@xmlns => 'http://xml.m4u.com.au/2009',
223
+ :result => {
224
+ :account_details => {
225
+ :@type => 'daily',
226
+ :@credit_limit => '500',
227
+ :@credit_remaining => '497'
228
+ },
229
+ :@sent => '2',
230
+ :@scheduled => '0',
231
+ :@failed => '0'
232
+ }
233
+ }
234
+ }
235
+ }
236
+ },
237
+ {
238
+ :key_converter => :none
239
+ })
240
+ }
241
+
242
+ savon.expects(:check_user).with(message: expected_request_body).returns(packaged_response)
243
+
244
+ client = described_class.new('username', 'password')
245
+
246
+ result = client.get_user_info
247
+
248
+ expect(result).to_not be_nil
249
+ expect(result[:account_details]).to_not be_nil
250
+ expect(result[:account_details][:@type]).to eq('daily')
251
+ expect(result[:account_details][:@credit_limit]).to eq('500')
252
+ expect(result[:account_details][:@credit_remaining]).to eq('497')
253
+ expect(result[:@sent]).to eq('2')
254
+ expect(result[:@scheduled]).to eq('0')
255
+ expect(result[:@failed]).to eq('0')
256
+
257
+ end
258
+ end
259
+
260
+ end
@@ -0,0 +1,46 @@
1
+ require_relative '../../spec_helper'
2
+
3
+ describe Messagemedia::SOAP::Message do
4
+ let!(:message) { described_class.new }
5
+
6
+ describe '#to_api_hash' do
7
+ context 'multiple recipients' do
8
+ let!(:message_id_1) { 100 }
9
+ let!(:recipient_1) { 123456 }
10
+ let!(:recipient_2) { 456789 }
11
+
12
+ before do
13
+ # First test recipient, with a custom message ID
14
+ message.add_recipient(message_id_1, recipient_1)
15
+ # Second test recipient, no message ID
16
+ message.add_recipient(nil, recipient_2)
17
+ end
18
+
19
+ it 'should produce the correct hash' do
20
+ expected_hash = {
21
+ :'@format' => message.format,
22
+ :'@sequenceNumber' => message.sequence_number,
23
+ :'api:deliveryReport' => message.delivery_report,
24
+ :'api:validityPeriod' => message.validity_period,
25
+ :'api:content' => message.content,
26
+ :'api:recipients' => {
27
+ :'api:recipient' => [
28
+ recipient_1,
29
+ recipient_2
30
+ ],
31
+ :attributes! => {
32
+ :'api:recipient' => {
33
+ :uid => [
34
+ message_id_1,
35
+ nil
36
+ ]
37
+ }
38
+ }
39
+ }
40
+ }
41
+ expect(message.to_api_hash).to eq(expected_hash)
42
+ end
43
+
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,5 @@
1
+ require 'simplecov'
2
+ SimpleCov.start
3
+
4
+ require 'rspec'
5
+ require_relative '../lib/messagemedia-ruby'
metadata CHANGED
@@ -1,71 +1,85 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: messagemedia-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.0
4
+ version: 0.7.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tristan Penman
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-03-26 00:00:00.000000000 Z
11
+ date: 2015-05-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: '1.5'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.5'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ! '>='
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ! '>='
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
39
53
  - !ruby/object:Gem::Version
40
54
  version: '0'
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: savon
43
57
  requirement: !ruby/object:Gem::Requirement
44
58
  requirements:
45
- - - ~>
59
+ - - "~>"
46
60
  - !ruby/object:Gem::Version
47
61
  version: '2.4'
48
62
  type: :runtime
49
63
  prerelease: false
50
64
  version_requirements: !ruby/object:Gem::Requirement
51
65
  requirements:
52
- - - ~>
66
+ - - "~>"
53
67
  - !ruby/object:Gem::Version
54
68
  version: '2.4'
55
69
  - !ruby/object:Gem::Dependency
56
- name: test-unit
70
+ name: simplecov
57
71
  requirement: !ruby/object:Gem::Requirement
58
72
  requirements:
59
- - - ! '>='
73
+ - - "~>"
60
74
  - !ruby/object:Gem::Version
61
- version: '0'
75
+ version: 0.9.2
62
76
  type: :runtime
63
77
  prerelease: false
64
78
  version_requirements: !ruby/object:Gem::Requirement
65
79
  requirements:
66
- - - ! '>='
80
+ - - "~>"
67
81
  - !ruby/object:Gem::Version
68
- version: '0'
82
+ version: 0.9.2
69
83
  description: Support for Ruby applications to integrate with the MessageMedia SOAP
70
84
  API
71
85
  email:
@@ -75,8 +89,9 @@ executables:
75
89
  extensions: []
76
90
  extra_rdoc_files: []
77
91
  files:
78
- - .gitignore
79
- - .travis.yml
92
+ - ".gitignore"
93
+ - ".travis.yml"
94
+ - CHANGES.md
80
95
  - Gemfile
81
96
  - LICENSE.txt
82
97
  - README.md
@@ -88,7 +103,9 @@ files:
88
103
  - lib/messagemedia/soap/recipient.rb
89
104
  - lib/messagemedia/version.rb
90
105
  - messagemedia-ruby.gemspec
91
- - test/test_message.rb
106
+ - spec/messagemedia/soap/client_spec.rb
107
+ - spec/messagemedia/soap/message_spec.rb
108
+ - spec/spec_helper.rb
92
109
  homepage: http://www.messagemedia.com/
93
110
  licenses:
94
111
  - Apache
@@ -99,12 +116,12 @@ require_paths:
99
116
  - lib
100
117
  required_ruby_version: !ruby/object:Gem::Requirement
101
118
  requirements:
102
- - - ! '>='
119
+ - - ">="
103
120
  - !ruby/object:Gem::Version
104
121
  version: '0'
105
122
  required_rubygems_version: !ruby/object:Gem::Requirement
106
123
  requirements:
107
- - - ! '>='
124
+ - - ">="
108
125
  - !ruby/object:Gem::Version
109
126
  version: '0'
110
127
  requirements: []
@@ -114,4 +131,6 @@ signing_key:
114
131
  specification_version: 4
115
132
  summary: Simple Ruby interface for the MessageMedia SOAP API
116
133
  test_files:
117
- - test/test_message.rb
134
+ - spec/messagemedia/soap/client_spec.rb
135
+ - spec/messagemedia/soap/message_spec.rb
136
+ - spec/spec_helper.rb
@@ -1,46 +0,0 @@
1
- require 'test/unit'
2
-
3
- require_relative '../lib/messagemedia/soap/recipient'
4
- require_relative '../lib/messagemedia/soap/message'
5
-
6
- class TestMessage < Test::Unit::TestCase
7
-
8
- def test_to_api_hash
9
- message = Messagemedia::SOAP::Message.new
10
-
11
- # First test recipient, with a custom message ID
12
- message_id_1 = 100
13
- recipient_1 = 123456
14
- message.add_recipient(message_id_1, recipient_1)
15
-
16
- # Second test recipient, no message ID
17
- recipient_2 = 456789
18
- message.add_recipient(nil, recipient_2)
19
-
20
- expected_hash = {
21
- :'@format' => message.format,
22
- :'@sequenceNumber' => message.sequence_number,
23
- :'api:deliveryReport' => message.delivery_report,
24
- :'api:validityPeriod' => message.validity_period,
25
- :'api:content' => message.content,
26
- :'api:recipients' => {
27
- :'api:recipient' => [
28
- recipient_1,
29
- recipient_2
30
- ],
31
- :attributes! => {
32
- :'api:recipient' => {
33
- :uid => [
34
- message_id_1,
35
- nil
36
- ]
37
- }
38
- }
39
- }
40
- }
41
-
42
- assert_equal(expected_hash, message.to_api_hash)
43
-
44
- end
45
-
46
- end