inteltech_sms 0.1.4 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -66,3 +66,11 @@ matrix:
66
66
  - RUBYGEMS_VERSION=1.8.25
67
67
  - TEST_GEM=true
68
68
  - secure: "D6Sd+bPmNb3P+98W1arc+SbaFV8oC+0NhnZX9fcoIqCHfnVpt6Vd54idUxJv\nhhFUFmySl17zCX/HRaVoscpCYPcJWRWIeXSD4qrHlObaTx+BDKlMAlWl/Y7d\nQy9c4g+QbDhz94l3DeNW7VbCYz/YYyRPBCcZK+K3H1KPmMtngRU="
69
+ allow_failures:
70
+ - rvm: rbx-19mode
71
+ - rvm: rbx-19mode
72
+ env:
73
+ - RUBYGEMS_VERSION=1.8.25
74
+ - TEST_GEM=true
75
+ - secure: "D6Sd+bPmNb3P+98W1arc+SbaFV8oC+0NhnZX9fcoIqCHfnVpt6Vd54idUxJv\nhhFUFmySl17zCX/HRaVoscpCYPcJWRWIeXSD4qrHlObaTx+BDKlMAlWl/Y7d\nQy9c4g+QbDhz94l3DeNW7VbCYz/YYyRPBCcZK+K3H1KPmMtngRU="
76
+
@@ -50,6 +50,49 @@ Example ruby code:
50
50
  puts "send_multiple_sms (sending to mobiles should work, sending to a landline should fail):"
51
51
  puts res2.collect {|r| "sms to #{r.sms} #{r.success? ? 'was successfull' : "failed (#{r.class} with code #{r.response_code})"}."}.join("\n")
52
52
 
53
+ === Dummy for testing
54
+
55
+ A Dummy class is also provided for use with tests. The dummy class will return a response based on the response code given.
56
+
57
+ You can instantiate an instance of the DummyInteltechSms, passing the initial credit, and optionally the response code
58
+
59
+ Example ruby code:
60
+
61
+ require 'rubygems'
62
+
63
+ require 'dummy_inteltech_sms'
64
+
65
+ test_sms = '123'
66
+
67
+ gateway = DummyInteltechSms.new(1)
68
+
69
+ credit = gateway.get_credit.inspect
70
+
71
+ puts "You have #{credit} Credit/s left"
72
+
73
+ res = gateway.send_sms(test_sms,'Test from Ruby')
74
+ puts "send_sms to #{res.sms} was successfull."
75
+
76
+ credit = gateway.get_credit.inspect
77
+ puts "You have #{credit} Credit/s left"
78
+
79
+ begin
80
+ # This will return no credit
81
+ res = gateway.send_sms(test_sms,'Test from Ruby')
82
+ puts "send_sms to #{res.sms} was successfull."
83
+ rescue ex => InteltechSms::Error
84
+ puts "send_sms to #{res.sms} failed. Gateway response #{ex.response.class} with code #{ex.response.response_code}."
85
+ end
86
+
87
+ res2 = gateway.send_multiple_sms([test_sms, test_sms2, landline_sms],'Test from Ruby to multiple numbers')
88
+
89
+ gateway.response_code = InteltechSms::UNAUTHORIZED_RESPONSE_CODE
90
+ # OR
91
+ gateway = DummyInteltechSms.new(1,InteltechSms::UNAUTHORIZED_RESPONSE_CODE)
92
+
93
+ puts "send_multiple_sms (sending to mobiles should work, sending to a landline should fail):"
94
+ puts res2.collect {|r| "sms to #{r.sms} #{r.success? ? 'was successfull' : "failed (#{r.class} with code #{r.response_code})"}."}.join("\n")
95
+
53
96
  === Optional arguments
54
97
 
55
98
  There are a few optional parameters that the gateway will accept.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.4
1
+ 1.0.0
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "inteltech_sms"
8
- s.version = "0.1.4"
8
+ s.version = "1.0.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Ian Heggie"]
12
- s.date = "2013-10-29"
12
+ s.date = "2013-12-01"
13
13
  s.description = "Ruby gem that provides an InteltechSms class to check credit and send SMS text messages to single or multiple recipients"
14
14
  s.email = "ian@heggie.biz"
15
15
  s.extra_rdoc_files = [
@@ -27,8 +27,10 @@ Gem::Specification.new do |s|
27
27
  "Rakefile",
28
28
  "VERSION",
29
29
  "inteltech_sms.gemspec",
30
+ "lib/dummy_inteltech_sms.rb",
30
31
  "lib/inteltech_sms.rb",
31
32
  "test/helper.rb",
33
+ "test/test_dummy_inteltech_sms.rb",
32
34
  "test/test_inteltech_sms.rb"
33
35
  ]
34
36
  s.homepage = "http://github.com/ianheggie/inteltech_sms"
@@ -0,0 +1,61 @@
1
+
2
+ require 'net/http'
3
+
4
+ require 'inteltech_sms'
5
+
6
+ # Dummy Class for testing
7
+
8
+ class DummyInteltechSms < InteltechSms
9
+
10
+
11
+ attr_accessor :credit, :response_code
12
+
13
+ def initialize(credit, response_code = InteltechSms::SUCCESS_RESPONSE_CODE)
14
+ super('dummy_user', 'a_secret')
15
+ @credit = credit.to_i
16
+ @response_code = response_code
17
+ @last_sms = ''
18
+ end
19
+
20
+ def get_credit
21
+ res = InteltechSms::FakeHTTPSuccess.new(@response_code == InteltechSms::SUCCESS_RESPONSE_CODE ? "credit,#{@credit}" : @response_code)
22
+ process_get_credit_response(res)
23
+ end
24
+
25
+ def send_sms(sms, message, options = { })
26
+ this_response_code = response_code_for_sms(sms)
27
+ @credit -= 1 if this_response_code == InteltechSms::SUCCESS_RESPONSE_CODE
28
+ res = InteltechSms::FakeHTTPSuccess.new(this_response_code)
29
+ process_send_sms_response(res, sms)
30
+ end
31
+
32
+ def send_multiple_sms(sms, message, options = { })
33
+ this_response_code = response_code_for_sms(sms)
34
+ sms_array = (sms.respond_to?(:each) ? sms : sms.split(','))
35
+ @credit -= sms_array.size if this_response_code == InteltechSms::SUCCESS_RESPONSE_CODE
36
+
37
+ ret = [ ]
38
+ sms_array.each do |this_sms|
39
+ ret << Response.factory(this_sms.strip, this_response_code)
40
+ end
41
+ ret
42
+ end
43
+
44
+ private
45
+
46
+ def response_code_for_sms(sms)
47
+ ret = @response_code
48
+ if ret == InteltechSms::SUCCESS_RESPONSE_CODE
49
+ if @credit <= 0
50
+ ret = InteltechSms::NO_CREDIT_RESPONSE_CODE
51
+ else
52
+ ret = @last_sms == sms ? InteltechSms::DUPLICATE_RESPONSE_CODE : @response_code
53
+ @last_sms = sms
54
+ end
55
+ end
56
+ ret
57
+ end
58
+
59
+ end
60
+
61
+ # vi:ai sw=2:
@@ -3,6 +3,28 @@ require "rexml/document"
3
3
 
4
4
  class InteltechSms
5
5
 
6
+ SUCCESS_RESPONSE_CODE = '0000'
7
+ UNAUTHORIZED_RESPONSE_CODE = '2006'
8
+ ACCOUNT_NOT_ACTIVATED_RESPONSE_CODE = '2007'
9
+ INVALID_NUMBER_RESPONSE_CODE = '2015'
10
+ DUPLICATE_RESPONSE_CODE = '2016'
11
+ NO_CREDIT_RESPONSE_CODE = '2018'
12
+ UNAUTHORIZED_KEY_RESPONSE_CODE = '2022'
13
+ EMPTY_MESSAGE_RESPONSE_CODE = '2051'
14
+ TOO_MANY_RECIPIENTS_RESPONSE_CODE = '2052'
15
+
16
+ # General failures
17
+ INVALID_SENDER_RESPONSE_CODE = '2017'
18
+
19
+ class FakeHTTPSuccess
20
+ attr_accessor :body
21
+
22
+ def initialize(body)
23
+ @body = body
24
+ end
25
+ end
26
+
27
+
6
28
  class Error < StandardError
7
29
  attr_reader :response
8
30
  def initialize(response)
@@ -22,20 +44,24 @@ class InteltechSms
22
44
 
23
45
  def self.factory(sms, response_code)
24
46
  case response_code.strip
25
- when '0000'
47
+ when SUCCESS_RESPONSE_CODE
26
48
  Success.new(sms, response_code)
27
- when '2006'
49
+ when UNAUTHORIZED_RESPONSE_CODE
28
50
  Unauthorized.new(sms, response_code)
29
- when '2015'
51
+ when INVALID_NUMBER_RESPONSE_CODE
30
52
  BadRequest.new(sms, response_code)
31
- when '2016'
53
+ when DUPLICATE_RESPONSE_CODE
32
54
  Duplicate.new(sms, response_code)
33
- when '2018'
55
+ when NO_CREDIT_RESPONSE_CODE
34
56
  NoCredit.new(sms, response_code)
35
- when '2022'
57
+ when UNAUTHORIZED_KEY_RESPONSE_CODE
36
58
  Unauthorized.new(sms, response_code)
37
- when '2051'
59
+ when EMPTY_MESSAGE_RESPONSE_CODE
60
+ BadRequest.new(sms, response_code)
61
+ when TOO_MANY_RECIPIENTS_RESPONSE_CODE
38
62
  BadRequest.new(sms, response_code)
63
+ when ACCOUNT_NOT_ACTIVATED_RESPONSE_CODE
64
+ Unauthorized.new(sms, response_code)
39
65
  else
40
66
  Failure.new(sms, response_code)
41
67
  end
@@ -86,8 +112,29 @@ class InteltechSms
86
112
  def get_credit
87
113
  uri = URI('http://inteltech.com.au/secure-api/credit.php')
88
114
  res = Net::HTTP.post_form(uri, 'username' => @username, 'key' => @secret_key, 'method' => 'ruby')
115
+ process_get_credit_response(res)
116
+ end
117
+
118
+ def send_sms(sms, message, options = { })
119
+ uri = URI('http://inteltech.com.au/secure-api/send.single.php')
120
+ args = { :username => @username, :key => @secret_key, :sms => sms, :message => message, :method => 'ruby' }.merge(options)
121
+ res = Net::HTTP.post_form(uri, args)
122
+ process_send_sms_response(res, sms)
123
+ end
124
+
125
+ def send_multiple_sms(sms, message, options = { })
126
+ uri = URI('http://inteltech.com.au/secure-api/send.php')
127
+ sms_string = sms.respond_to?(:join) ? sms.join(',') : sms.to_s
128
+ args = { :username => @username, :key => @secret_key, :sms => sms_string, :message => message, :method => 'ruby' }.merge(options)
129
+ res = Net::HTTP.post_form(uri, args)
130
+ process_send_multiple_sms_response(res)
131
+ end
132
+
133
+ protected
134
+
135
+ def process_get_credit_response(res)
89
136
  case res
90
- when Net::HTTPSuccess, Net::HTTPRedirection
137
+ when Net::HTTPSuccess, Net::HTTPRedirection, InteltechSms::FakeHTTPSuccess
91
138
  if res.body =~ /credit,(\d*)/
92
139
  $1.to_i
93
140
  elsif res.body =~ /\d\d\d\d/
@@ -100,13 +147,9 @@ class InteltechSms
100
147
  end
101
148
  end
102
149
 
103
- def send_sms(sms, message, options = { })
104
- uri = URI('http://inteltech.com.au/secure-api/send.single.php')
105
-
106
- args = { :username => @username, :key => @secret_key, :sms => sms, :message => message, :method => 'ruby' }.merge(options)
107
- res = Net::HTTP.post_form(uri, args)
150
+ def process_send_sms_response(res, sms)
108
151
  case res
109
- when Net::HTTPSuccess, Net::HTTPRedirection
152
+ when Net::HTTPSuccess, Net::HTTPRedirection, InteltechSms::FakeHTTPSuccess
110
153
  r= Response.factory(sms, res.body)
111
154
  raise InteltechSms::Error.new(r) unless r.success?
112
155
  r
@@ -115,11 +158,7 @@ class InteltechSms
115
158
  end
116
159
  end
117
160
 
118
- def send_multiple_sms(sms, message, options = { })
119
- uri = URI('http://inteltech.com.au/secure-api/send.php')
120
- sms_string = sms.respond_to?(:join) ? sms.join(',') : sms.to_s
121
- args = { :username => @username, :key => @secret_key, :sms => sms_string, :message => message, :method => 'ruby' }.merge(options)
122
- res = Net::HTTP.post_form(uri, args)
161
+ def process_send_multiple_sms_response(res)
123
162
  case res
124
163
  when Net::HTTPSuccess, Net::HTTPRedirection
125
164
  doc = REXML::Document.new res.body
@@ -21,6 +21,7 @@ end
21
21
  #$LOAD_PATH.unshift(File.dirname(__FILE__))
22
22
 
23
23
  require 'inteltech_sms'
24
+ require 'dummy_inteltech_sms'
24
25
 
25
26
  class Test::Unit::TestCase
26
27
  end
@@ -0,0 +1,250 @@
1
+ require 'helper'
2
+ require 'net/http'
3
+
4
+ class TestDummyInteltechSms < Test::Unit::TestCase
5
+
6
+ # ==================================================
7
+ # Useful constants
8
+
9
+ TEST_SMS = '04111'
10
+ TEST_SMS2 = '04222'
11
+ LANDLINE_SMS = '03123'
12
+
13
+ # ==================================================
14
+ # Tests
15
+
16
+ # Code 0000 Message added to queue OK.
17
+
18
+ context "with credit" do
19
+
20
+ setup do
21
+ @good_gateway = DummyInteltechSms.new(123)
22
+ end
23
+
24
+ should "get_credit should return non zero credit" do
25
+ assert_operator @good_gateway.get_credit, :>, 0
26
+ end
27
+
28
+ should "send a single test sms via send_sms" do
29
+ expected = InteltechSms::Success.new(TEST_SMS, InteltechSms::SUCCESS_RESPONSE_CODE)
30
+ assert_equal expected, @good_gateway.send_sms(TEST_SMS,'Test from Ruby - send a single test sms via send_sms')
31
+ end
32
+ end
33
+
34
+ context "#send_multiple_sms" do
35
+ should "return an array with a response for each sms sent" do
36
+ @good_gateway = DummyInteltechSms.new(123)
37
+ @res = @good_gateway.send_multiple_sms [TEST_SMS, TEST_SMS2],'Test from Ruby - return an array with a response for each sms sent'
38
+ assert_kind_of Array, @res
39
+ assert_equal 2, @res.length
40
+ assert_equal InteltechSms::Success.new(TEST_SMS, InteltechSms::SUCCESS_RESPONSE_CODE), @res[0], "send_multiple_sms returns success for 1st element"
41
+ assert_equal InteltechSms::Success.new(TEST_SMS2, InteltechSms::SUCCESS_RESPONSE_CODE), @res[1], "send_multiple_sms returns success for 2nd element"
42
+ end
43
+
44
+ should "return an array with a response for each sms sent where a comma seperated string is provided" do
45
+ @good_gateway = DummyInteltechSms.new(123)
46
+ @res = @good_gateway.send_multiple_sms [TEST_SMS2, TEST_SMS].join(','),'Test from Ruby - return an array with a response for each sms sent where a comma seperated string is provided'
47
+ assert_kind_of Array, @res
48
+ assert_equal 2, @res.length
49
+ assert_equal InteltechSms::Success.new(TEST_SMS2, InteltechSms::SUCCESS_RESPONSE_CODE), @res[0], "send_multiple_sms returns success for 1st element"
50
+ assert_equal InteltechSms::Success.new(TEST_SMS, InteltechSms::SUCCESS_RESPONSE_CODE), @res[1], "send_multiple_sms returns success for 2nd element"
51
+ end
52
+ end
53
+
54
+ # --------------------------------------------------
55
+ # Code 2006 Not enough information has been supplied for authentication. Please ensure that your Username and Unique Key are supplied in your request.
56
+
57
+ context "with blank username" do
58
+ setup do
59
+ @bad_gateway = DummyInteltechSms.new(0, InteltechSms::UNAUTHORIZED_RESPONSE_CODE)
60
+ end
61
+
62
+ should "raise an Unauthorized Error exception when get_credit is called" do
63
+ ex = assert_raises InteltechSms::Error do
64
+ @bad_gateway.get_credit
65
+ end
66
+ assert_equal InteltechSms::Unauthorized.new('', InteltechSms::UNAUTHORIZED_RESPONSE_CODE), ex.response
67
+ end
68
+
69
+ should "raise an Unauthorized Error exception when send_sms is called" do
70
+ ex = assert_raises InteltechSms::Error do
71
+ @bad_gateway.send_sms TEST_SMS, 'Tests from ruby - with blank username raise an Unauthorized Error exception when send_sms is called'
72
+ end
73
+ assert_equal InteltechSms::Unauthorized.new(TEST_SMS, InteltechSms::UNAUTHORIZED_RESPONSE_CODE), ex.response
74
+ end
75
+
76
+ should "return an array Unauthorized responses when send_multiple_sms is called" do
77
+ @res = @bad_gateway.send_multiple_sms [TEST_SMS, TEST_SMS2], 'Test from Ruby - with blank username return an array Unauthorized responses when send_multiple_sms is called'
78
+ assert_kind_of Array, @res
79
+ assert_equal 2, @res.length, "send_multiple_sms returns results for each sms sent"
80
+ assert_kind_of InteltechSms::Unauthorized, @res[0], "send_multiple_sms returns Unauthorized for 1st element"
81
+ assert_equal InteltechSms::Unauthorized.new(TEST_SMS, InteltechSms::UNAUTHORIZED_RESPONSE_CODE), @res[0]
82
+ assert_kind_of InteltechSms::Unauthorized, @res[1], "send_multiple_sms returns Unauthorized for 2nd element"
83
+ assert_equal InteltechSms::Unauthorized.new(TEST_SMS2, InteltechSms::UNAUTHORIZED_RESPONSE_CODE), @res[1]
84
+ end
85
+
86
+ end
87
+
88
+ # --------------------------------------------------
89
+ # Code 2015 The destination mobile number is invalid.
90
+
91
+ # --------------------------------------------------
92
+ # Code 2016 Identical message sent to this recipient. Please try again in a few seconds.
93
+
94
+ context "with a good username and secure_key" do
95
+
96
+ setup do
97
+ @good_gateway = DummyInteltechSms.new(123)
98
+ end
99
+
100
+ should "reject the second of a pair of indentical messages" do
101
+ expected = InteltechSms::BadRequest.new(TEST_SMS, InteltechSms::DUPLICATE_RESPONSE_CODE)
102
+ @good_gateway.send_sms(TEST_SMS,'Test from Ruby - send two copies of single test sms via send_sms')
103
+
104
+ @good_gateway.response_code = InteltechSms::DUPLICATE_RESPONSE_CODE
105
+
106
+ ex = assert_raises InteltechSms::Error do
107
+ @good_gateway.send_sms(TEST_SMS,'Test from Ruby - send two copies of single test sms via send_sms')
108
+ end
109
+ assert_equal InteltechSms::Duplicate.new(TEST_SMS, InteltechSms::DUPLICATE_RESPONSE_CODE), ex.response
110
+ end
111
+
112
+ end
113
+
114
+ # --------------------------------------------------
115
+ # Code 2018 You have reached the end of your message credits. You will need to purchase more messages.
116
+
117
+ context "With an account without credit" do
118
+ setup do
119
+ @nocredit_gateway = DummyInteltechSms.new(0)
120
+ end
121
+
122
+ should "have get_credit return zero credit" do
123
+ assert_equal 0, @nocredit_gateway.get_credit
124
+ end
125
+
126
+ should "raise an NoCredit Error exception when send_sms is called" do
127
+ @nocredit_gateway.response_code = InteltechSms::NO_CREDIT_RESPONSE_CODE
128
+ ex = assert_raises InteltechSms::Error do
129
+ @nocredit_gateway.send_sms TEST_SMS, 'Test from ruby - no credit on send_sms'
130
+ end
131
+ assert_equal InteltechSms::NoCredit.new(TEST_SMS, InteltechSms::NO_CREDIT_RESPONSE_CODE), ex.response
132
+ end
133
+
134
+ should "return an array NoCredit responses when send_multiple_sms is called" do
135
+ @res = @nocredit_gateway.send_multiple_sms [TEST_SMS, TEST_SMS2], 'Test from Ruby - return an array NoCredit responses when send_multiple_sms is called'
136
+ assert_kind_of Array, @res
137
+ assert_equal 2, @res.length, "send_multiple_sms returns results for each sms sent"
138
+ assert_kind_of InteltechSms::NoCredit, @res[0], "send_multiple_sms returns NoCredit for 1st element"
139
+ assert_equal InteltechSms::NoCredit.new(TEST_SMS, InteltechSms::NO_CREDIT_RESPONSE_CODE), @res[0]
140
+ assert_kind_of InteltechSms::NoCredit, @res[1], "send_multiple_sms returns NoCredit for 2nd element"
141
+ assert_equal InteltechSms::NoCredit.new(TEST_SMS2, InteltechSms::NO_CREDIT_RESPONSE_CODE), @res[1]
142
+ end
143
+
144
+ end
145
+
146
+ # --------------------------------------------------
147
+ # Code 2022 Your Unique Key is incorrect. This may be caused by a recent password change.
148
+
149
+ context "With an incorrect secure_key" do
150
+ setup do
151
+ @bad_gateway = DummyInteltechSms.new(0, InteltechSms::UNAUTHORIZED_KEY_RESPONSE_CODE)
152
+ end
153
+
154
+ should "raise an Unauthorized Error exception when get_credit is called" do
155
+ ex = assert_raises InteltechSms::Error do
156
+ @bad_gateway.get_credit
157
+ end
158
+ assert_equal InteltechSms::Unauthorized.new('', InteltechSms::UNAUTHORIZED_KEY_RESPONSE_CODE), ex.response
159
+ end
160
+
161
+ should "raise an Unauthorized Error exception when send_sms is called" do
162
+ ex = assert_raises InteltechSms::Error do
163
+ @bad_gateway.send_sms TEST_SMS, 'Test from ruby - incorrect secure key send_sms call'
164
+ end
165
+ assert_equal InteltechSms::Unauthorized.new(TEST_SMS, InteltechSms::UNAUTHORIZED_KEY_RESPONSE_CODE), ex.response
166
+ end
167
+
168
+ should "return an array Unauthorized responses when send_multiple_sms is called" do
169
+ @res = @bad_gateway.send_multiple_sms [TEST_SMS, TEST_SMS2], 'Test from Ruby - with incorrect key return an array Unauthorized responses when send_multiple_sms is called'
170
+ assert_kind_of Array, @res
171
+ assert_equal 2, @res.length, "send_multiple_sms returns results for each sms sent"
172
+ assert_kind_of InteltechSms::Unauthorized, @res[0], "send_multiple_sms returns Unauthorized for 1st element"
173
+ assert_equal InteltechSms::Unauthorized.new(TEST_SMS, InteltechSms::UNAUTHORIZED_KEY_RESPONSE_CODE), @res[0]
174
+ assert_kind_of InteltechSms::Unauthorized, @res[1], "send_multiple_sms returns Unauthorized for 2nd element"
175
+ assert_equal InteltechSms::Unauthorized.new(TEST_SMS2, InteltechSms::UNAUTHORIZED_KEY_RESPONSE_CODE), @res[1]
176
+ end
177
+
178
+ end
179
+
180
+ context "with blank secure_key" do
181
+ setup do
182
+ @bad_gateway = DummyInteltechSms.new(0, InteltechSms::UNAUTHORIZED_KEY_RESPONSE_CODE)
183
+ end
184
+
185
+ should "raise an Unauthorized Error exception when get_credit is called" do
186
+ ex = assert_raises InteltechSms::Error do
187
+ @bad_gateway.get_credit
188
+ end
189
+ assert_equal InteltechSms::Unauthorized.new('', InteltechSms::UNAUTHORIZED_KEY_RESPONSE_CODE), ex.response
190
+ end
191
+
192
+ should "raise an Unauthorized Error exception when send_sms is called" do
193
+ ex = assert_raises InteltechSms::Error do
194
+ @bad_gateway.send_sms TEST_SMS, 'Test from ruby - blank secure key send_sms call'
195
+ end
196
+ assert_equal InteltechSms::Unauthorized.new(TEST_SMS, InteltechSms::UNAUTHORIZED_KEY_RESPONSE_CODE), ex.response
197
+ end
198
+
199
+ should "return an array Unauthorized responses when send_multiple_sms is called" do
200
+ @res = @bad_gateway.send_multiple_sms [TEST_SMS, TEST_SMS2], 'Test from Ruby - with blank secure key return an array Unauthorized responses when send_multiple_sms is called'
201
+ assert_kind_of Array, @res
202
+ assert_equal 2, @res.length, "send_multiple_sms returns results for each sms sent"
203
+ assert_kind_of InteltechSms::Unauthorized, @res[0], "send_multiple_sms returns Unauthorized for 1st element"
204
+ assert_equal InteltechSms::Unauthorized.new(TEST_SMS, InteltechSms::UNAUTHORIZED_KEY_RESPONSE_CODE), @res[0]
205
+ assert_kind_of InteltechSms::Unauthorized, @res[1], "send_multiple_sms returns Unauthorized for 2nd element"
206
+ assert_equal InteltechSms::Unauthorized.new(TEST_SMS2, InteltechSms::UNAUTHORIZED_KEY_RESPONSE_CODE), @res[1]
207
+ end
208
+
209
+ end
210
+
211
+ # --------------------------------------------------
212
+ # Code 2051 Message is empty.
213
+
214
+ context "with an empty message" do
215
+
216
+ setup do
217
+ @good_gateway = DummyInteltechSms.new(0, InteltechSms::EMPTY_MESSAGE_RESPONSE_CODE)
218
+ end
219
+
220
+ should "raise an BadRequest Error exception when send_sms is called" do
221
+ ex = assert_raises InteltechSms::Error do
222
+ @good_gateway.send_sms TEST_SMS, ''
223
+ end
224
+ assert_equal InteltechSms::BadRequest.new(TEST_SMS, InteltechSms::EMPTY_MESSAGE_RESPONSE_CODE), ex.response
225
+ end
226
+
227
+ should "return an array BadRequest responses when send_multiple_sms is called" do
228
+ @res = @good_gateway.send_multiple_sms [TEST_SMS, TEST_SMS2, LANDLINE_SMS], ''
229
+ assert_kind_of Array, @res
230
+ assert_equal 3, @res.length, "send_multiple_sms returns results for each sms sent"
231
+ assert_kind_of InteltechSms::BadRequest, @res[0], "send_multiple_sms returns BadRequest for 1st element"
232
+ assert_equal InteltechSms::BadRequest.new(TEST_SMS, InteltechSms::EMPTY_MESSAGE_RESPONSE_CODE), @res[0]
233
+ assert_kind_of InteltechSms::BadRequest, @res[1], "send_multiple_sms returns BadRequest for 2nd element"
234
+ assert_equal InteltechSms::BadRequest.new(TEST_SMS2, InteltechSms::EMPTY_MESSAGE_RESPONSE_CODE), @res[1]
235
+ assert_kind_of InteltechSms::BadRequest, @res[2], "send_multiple_sms returns BadRequest for 2nd element"
236
+ assert_equal InteltechSms::BadRequest.new(LANDLINE_SMS, InteltechSms::EMPTY_MESSAGE_RESPONSE_CODE), @res[2]
237
+ end
238
+
239
+ end
240
+
241
+
242
+ # --------------------------------------------------
243
+ # Code 2100-2199 Internal error
244
+
245
+ # (Unable to trigger these errors to test them)
246
+
247
+ end
248
+
249
+ # vi: sw=2 sm ai:
250
+
@@ -84,7 +84,7 @@ class TestInteltechSms < Test::Unit::TestCase
84
84
  assert_equal InteltechSms::Success.new(TEST_SMS2, "0000"), @res[0], "send_multiple_sms returns success for 1st element"
85
85
  assert_equal InteltechSms::Success.new(TEST_SMS, "0000"), @res[1], "send_multiple_sms returns success for 2nd element"
86
86
  end
87
- end
87
+ end
88
88
  end
89
89
 
90
90
  # --------------------------------------------------
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: inteltech_sms
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 1.0.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-10-29 00:00:00.000000000 Z
12
+ date: 2013-12-01 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rdoc
@@ -142,8 +142,10 @@ files:
142
142
  - Rakefile
143
143
  - VERSION
144
144
  - inteltech_sms.gemspec
145
+ - lib/dummy_inteltech_sms.rb
145
146
  - lib/inteltech_sms.rb
146
147
  - test/helper.rb
148
+ - test/test_dummy_inteltech_sms.rb
147
149
  - test/test_inteltech_sms.rb
148
150
  homepage: http://github.com/ianheggie/inteltech_sms
149
151
  licenses:
@@ -160,7 +162,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
160
162
  version: '0'
161
163
  segments:
162
164
  - 0
163
- hash: 206346697614286170
165
+ hash: -1430435096325391718
164
166
  required_rubygems_version: !ruby/object:Gem::Requirement
165
167
  none: false
166
168
  requirements: