mote_sms 1.0.1 → 1.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.travis.yml +1 -0
- data/lib/mote_sms/version.rb +1 -1
- data/mote_sms.gemspec +2 -2
- data/spec/mote_sms/message_spec.rb +11 -11
- data/spec/mote_sms/number_list_spec.rb +8 -8
- data/spec/mote_sms/number_spec.rb +7 -7
- data/spec/mote_sms/transports/action_mailer_transport_spec.rb +4 -4
- data/spec/mote_sms/transports/mobile_technics_transport_spec.rb +13 -13
- data/spec/mote_sms/transports/test_transport_spec.rb +2 -2
- data/spec/mote_sms_spec.rb +5 -5
- data/spec/spec_helper.rb +7 -0
- metadata +19 -33
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: c312886b6c0d6e48f72f426ba3efe178752581d5
|
4
|
+
data.tar.gz: 16edf6e1e061cf5a7004996e6fc83be54e5bb09d
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: af66032a5d8c66e65184c714bd3901a85797ccbaac71d26b1045c24a75b7fa78f521c9f20de50f0d3291ffa601e8986cfc4573f506296c58ab526e74233f5d7b
|
7
|
+
data.tar.gz: 2460d1109f8f138db675389344e589761b98ac307c17f950995b6d6f42aa75cb04cd3d873a48acbaa61cacdda22be3726c6d423a0654186aafd865ad84910327
|
data/.travis.yml
CHANGED
data/lib/mote_sms/version.rb
CHANGED
data/mote_sms.gemspec
CHANGED
@@ -19,10 +19,10 @@ Gem::Specification.new do |gem|
|
|
19
19
|
|
20
20
|
gem.required_ruby_version = '>= 1.9'
|
21
21
|
|
22
|
-
gem.add_dependency 'phony', ['~> 1.7
|
22
|
+
gem.add_dependency 'phony', ['~> 1.7']
|
23
23
|
|
24
24
|
gem.add_development_dependency 'rake'
|
25
|
-
gem.add_development_dependency 'rspec', ['~> 2.
|
25
|
+
gem.add_development_dependency 'rspec', ['~> 2.14']
|
26
26
|
gem.add_development_dependency 'webmock', ['~> 1.8.0']
|
27
27
|
gem.add_development_dependency 'actionmailer', ['>= 3.2']
|
28
28
|
end
|
@@ -8,26 +8,26 @@ describe MoteSMS::Message do
|
|
8
8
|
to '+41 79 123 12 12'
|
9
9
|
body 'This is the SMS content'
|
10
10
|
end
|
11
|
-
msg.from.number.
|
12
|
-
msg.to.normalized_numbers.
|
13
|
-
msg.body.
|
11
|
+
expect(msg.from.number).to be == 'SENDER'
|
12
|
+
expect(msg.to.normalized_numbers).to be == %w{41791231212}
|
13
|
+
expect(msg.body).to be == 'This is the SMS content'
|
14
14
|
end
|
15
15
|
|
16
16
|
context '#to' do
|
17
17
|
it 'behaves as accessor' do
|
18
18
|
subject.to = '41791231212'
|
19
|
-
subject.to.normalized_numbers.
|
19
|
+
expect(subject.to.normalized_numbers).to be == %w{41791231212}
|
20
20
|
end
|
21
21
|
|
22
22
|
it 'behaves as array' do
|
23
23
|
subject.to << '41791231212'
|
24
24
|
subject.to << '41797775544'
|
25
|
-
subject.to.normalized_numbers.
|
25
|
+
expect(subject.to.normalized_numbers).to be == %w{41791231212 41797775544}
|
26
26
|
end
|
27
27
|
|
28
28
|
it 'normalizes numbers' do
|
29
29
|
subject.to = '+41 79 123 12 12'
|
30
|
-
subject.to.normalized_numbers.
|
30
|
+
expect(subject.to.normalized_numbers).to be == %w{41791231212}
|
31
31
|
end
|
32
32
|
end
|
33
33
|
|
@@ -36,24 +36,24 @@ describe MoteSMS::Message do
|
|
36
36
|
subject { described_class.new(transport) }
|
37
37
|
|
38
38
|
it "sends messages to transport" do
|
39
|
-
transport.
|
39
|
+
expect(transport).to receive(:deliver).with(subject, {})
|
40
40
|
subject.deliver
|
41
41
|
end
|
42
42
|
|
43
43
|
it "can pass additional attributes to transport" do
|
44
|
-
transport.
|
44
|
+
expect(transport).to receive(:deliver).with(subject, serviceid: "myapplication")
|
45
45
|
subject.deliver serviceid: "myapplication"
|
46
46
|
end
|
47
47
|
|
48
48
|
it "can override per message transport using :transport option" do
|
49
|
-
transport.
|
49
|
+
expect(transport).to_not receive(:deliver)
|
50
50
|
subject.deliver transport: double(deliver: true)
|
51
51
|
end
|
52
52
|
|
53
53
|
it "uses global MoteSMS.transport if no per message transport defined" do
|
54
54
|
message = described_class.new
|
55
|
-
transport.
|
56
|
-
MoteSMS.
|
55
|
+
expect(transport).to receive(:deliver).with(message, {})
|
56
|
+
expect(MoteSMS).to receive(:transport) { transport }
|
57
57
|
message.deliver
|
58
58
|
end
|
59
59
|
end
|
@@ -3,31 +3,31 @@ require 'mote_sms/number_list'
|
|
3
3
|
|
4
4
|
describe MoteSMS::NumberList do
|
5
5
|
it 'has length' do
|
6
|
-
subject.length.
|
6
|
+
expect(subject.length).to be == 0
|
7
7
|
subject << '+41 79 111 22 33'
|
8
|
-
subject.length.
|
8
|
+
expect(subject.length).to be == 1
|
9
9
|
5.times { subject << '+41 79 222 33 44' }
|
10
|
-
subject.length.
|
10
|
+
expect(subject.length).to be == 6
|
11
11
|
end
|
12
12
|
|
13
13
|
it 'has empty?' do
|
14
|
-
subject.empty
|
14
|
+
expect(subject.empty?).to be_true
|
15
15
|
subject << '+41 79 111 22 33'
|
16
|
-
subject.empty
|
16
|
+
expect(subject.empty?).to be_false
|
17
17
|
end
|
18
18
|
|
19
19
|
it 'can add numbers by string' do
|
20
20
|
subject << '+41 79 111 22 33'
|
21
|
-
subject.normalized_numbers.
|
21
|
+
expect(subject.normalized_numbers).to be == %w{41791112233}
|
22
22
|
end
|
23
23
|
|
24
24
|
it 'can multiple numbers using push' do
|
25
25
|
subject.push '+41 79 111 22 33', '+41 44 111 22 33'
|
26
|
-
subject.normalized_numbers.
|
26
|
+
expect(subject.normalized_numbers).to be == %w{41791112233 41441112233}
|
27
27
|
end
|
28
28
|
|
29
29
|
it 'can push multiple numbers with adding country codes' do
|
30
30
|
subject.push '079 111 22 33', '0041 44 111 22 33', cc: '41', ndc: /(44|79)/
|
31
|
-
subject.normalized_numbers.
|
31
|
+
expect(subject.normalized_numbers).to be == %w{41791112233 41441112233}
|
32
32
|
end
|
33
33
|
end
|
@@ -36,15 +36,15 @@ describe MoteSMS::Number do
|
|
36
36
|
|
37
37
|
context 'non conforming number' do
|
38
38
|
it 'raises error when creating' do
|
39
|
-
|
40
|
-
|
41
|
-
|
39
|
+
expect { described_class.new('what ever?') }.to raise_error(ArgumentError, /unable to parse/i)
|
40
|
+
expect { described_class.new('0000') }.to raise_error(ArgumentError)
|
41
|
+
expect { described_class.new('123456789012345678901') }.to raise_error(ArgumentError)
|
42
42
|
end
|
43
43
|
end
|
44
44
|
|
45
45
|
context 'wrong cc/ndc' do
|
46
46
|
it 'raises error when creating instance with wrong ndc' do
|
47
|
-
|
47
|
+
expect { described_class.new('+41 44 364 35 33', cc: '41', ndc: '43') }.to raise_error(ArgumentError, /national destination/i)
|
48
48
|
end
|
49
49
|
end
|
50
50
|
|
@@ -57,13 +57,13 @@ describe MoteSMS::Number do
|
|
57
57
|
its(:vanity?) { should be_true }
|
58
58
|
|
59
59
|
it 'raises error if more than 11 alpha numeric chars' do
|
60
|
-
|
60
|
+
expect { described_class.new('1234567890AB', vanity: true) }.to raise_error(ArgumentError, /invalid vanity/i)
|
61
61
|
end
|
62
62
|
|
63
63
|
it 'can also be normal phone number' do
|
64
64
|
num = described_class.new('0800 123 12 12', vanity: true)
|
65
|
-
num.to_s.
|
66
|
-
num.to_number.
|
65
|
+
expect(num.to_s).to be == '08001231212'
|
66
|
+
expect(num.to_number).to be == '08001231212'
|
67
67
|
end
|
68
68
|
end
|
69
69
|
end
|
@@ -19,9 +19,9 @@ describe MoteSMS::ActionMailerTransport do
|
|
19
19
|
|
20
20
|
it 'sends SMS as e-mail' do
|
21
21
|
subject.deliver message
|
22
|
-
email.to.
|
23
|
-
email.from.
|
24
|
-
email.subject.
|
25
|
-
email.body.
|
22
|
+
expect(email.to).to be == ["sms@example.com"]
|
23
|
+
expect(email.from).to be == ["sms@example.com"]
|
24
|
+
expect(email.subject).to be == "SMS to +41 79 123 12 12"
|
25
|
+
expect(email.body).to be == "This is the SMS content"
|
26
26
|
end
|
27
27
|
end
|
@@ -7,7 +7,7 @@ require 'mote_sms/transports/mobile_technics_transport'
|
|
7
7
|
describe MoteSMS::MobileTechnicsTransport do
|
8
8
|
before do
|
9
9
|
@logger = described_class.logger
|
10
|
-
described_class.logger =
|
10
|
+
described_class.logger = double("logger", debug: true, info: true, error: true)
|
11
11
|
end
|
12
12
|
|
13
13
|
after do
|
@@ -33,10 +33,10 @@ describe MoteSMS::MobileTechnicsTransport do
|
|
33
33
|
it "sends POST to endpoint with URL encoded body" do
|
34
34
|
stub_request(:post, endpoint).with do |req|
|
35
35
|
params = CGI.parse(req.body)
|
36
|
-
params['username'].
|
37
|
-
params['password'].
|
38
|
-
params['text'].
|
39
|
-
params['call-number'].
|
36
|
+
expect(params['username']).to be == %w{example}
|
37
|
+
expect(params['password']).to be == %w{123456}
|
38
|
+
expect(params['text']).to be == ['Hello World, with äöü.']
|
39
|
+
expect(params['call-number']).to be == ['0041791231212']
|
40
40
|
end.to_return(success)
|
41
41
|
subject.deliver message
|
42
42
|
end
|
@@ -51,17 +51,17 @@ describe MoteSMS::MobileTechnicsTransport do
|
|
51
51
|
|
52
52
|
it 'raises exception if required parameter is missing' do
|
53
53
|
stub_request(:post, endpoint).to_return(body: 'Result_code: 02, call-number')
|
54
|
-
|
54
|
+
expect { subject.deliver message }.to raise_error(MoteSMS::MobileTechnicsTransport::ServiceError)
|
55
55
|
end
|
56
56
|
|
57
57
|
it 'raises exception if status code is not 200' do
|
58
58
|
stub_request(:post, endpoint).to_return(status: 500)
|
59
|
-
|
59
|
+
expect { subject.deliver message }.to raise_error(MoteSMS::MobileTechnicsTransport::ServiceError)
|
60
60
|
end
|
61
61
|
|
62
62
|
it 'returns message id' do
|
63
63
|
stub_request(:post, endpoint).to_return(success)
|
64
|
-
subject.deliver(message).
|
64
|
+
expect(subject.deliver(message)).to be == %w{43797917}
|
65
65
|
end
|
66
66
|
|
67
67
|
it 'logs curl compatible output' do
|
@@ -70,21 +70,21 @@ describe MoteSMS::MobileTechnicsTransport do
|
|
70
70
|
stub_request(:post, endpoint).to_return(success)
|
71
71
|
subject.deliver message
|
72
72
|
io.rewind
|
73
|
-
io.read.
|
73
|
+
expect(io.read).to match %r{curl -XPOST 'http://test.nth.ch' -d 'allow_adaption=1&}
|
74
74
|
end
|
75
75
|
end
|
76
76
|
|
77
77
|
context "#options" do
|
78
78
|
it 'can be passed in as last item in the constructor' do
|
79
79
|
transport = described_class.new endpoint, 'user', 'pass', allow_adaption: false, validity: 30
|
80
|
-
transport.options[:allow_adaption].
|
81
|
-
transport.options[:validity].
|
82
|
-
transport.options[:something].
|
80
|
+
expect(transport.options[:allow_adaption]).to be_false
|
81
|
+
expect(transport.options[:validity]).to be == 30
|
82
|
+
expect(transport.options[:something]).to be_nil
|
83
83
|
end
|
84
84
|
|
85
85
|
it 'should be exposed as hash' do
|
86
86
|
subject.options[:messageid] = "test"
|
87
|
-
subject.options[:messageid].
|
87
|
+
expect(subject.options[:messageid]).to be == "test"
|
88
88
|
end
|
89
89
|
|
90
90
|
it 'overrides settings from #defaults' do
|
@@ -6,12 +6,12 @@ describe MoteSMS::TestTransport do
|
|
6
6
|
before { MoteSMS.deliveries.clear }
|
7
7
|
|
8
8
|
it 'defines global #deliveries' do
|
9
|
-
MoteSMS.
|
9
|
+
expect(MoteSMS).to respond_to(:deliveries)
|
10
10
|
end
|
11
11
|
|
12
12
|
it 'appends deliveries' do
|
13
13
|
subject.deliver "firstMessage"
|
14
14
|
subject.deliver "secondMessage"
|
15
|
-
MoteSMS.deliveries.
|
15
|
+
expect(MoteSMS.deliveries).to be == %w{firstMessage secondMessage}
|
16
16
|
end
|
17
17
|
end
|
data/spec/mote_sms_spec.rb
CHANGED
@@ -5,7 +5,7 @@ describe MoteSMS do
|
|
5
5
|
subject { described_class }
|
6
6
|
|
7
7
|
it 'has a version' do
|
8
|
-
subject::VERSION.
|
8
|
+
expect(subject::VERSION).to match /\d/
|
9
9
|
end
|
10
10
|
|
11
11
|
context "transport" do
|
@@ -14,23 +14,23 @@ describe MoteSMS do
|
|
14
14
|
let(:transport) { double("transport") }
|
15
15
|
|
16
16
|
it "has no default transport" do
|
17
|
-
subject.transport.
|
17
|
+
expect(subject.transport).to be_nil
|
18
18
|
end
|
19
19
|
|
20
20
|
it "can change global transport" do
|
21
21
|
subject.transport = transport
|
22
|
-
subject.transport.
|
22
|
+
expect(subject.transport).to be == transport
|
23
23
|
end
|
24
24
|
|
25
25
|
context "#deliver" do
|
26
26
|
it 'delivers quick and dirty using global transport' do
|
27
|
-
transport.
|
27
|
+
expect(transport).to receive(:deliver).with(kind_of(MoteSMS::Message), {})
|
28
28
|
subject.transport = transport
|
29
29
|
subject.deliver { body 'Hello World' }
|
30
30
|
end
|
31
31
|
|
32
32
|
it 'raises error if block is missing' do
|
33
|
-
|
33
|
+
expect { subject.deliver }.to raise_error(ArgumentError, /block missing/i)
|
34
34
|
end
|
35
35
|
end
|
36
36
|
end
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,68 +1,60 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mote_sms
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
5
|
-
prerelease:
|
4
|
+
version: 1.0.2
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Lukas Westermann
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2013-07-10 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: phony
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
17
|
- - ~>
|
20
18
|
- !ruby/object:Gem::Version
|
21
|
-
version: 1.7
|
19
|
+
version: '1.7'
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
24
|
- - ~>
|
28
25
|
- !ruby/object:Gem::Version
|
29
|
-
version: 1.7
|
26
|
+
version: '1.7'
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: rake
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
|
-
- -
|
31
|
+
- - '>='
|
36
32
|
- !ruby/object:Gem::Version
|
37
33
|
version: '0'
|
38
34
|
type: :development
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
|
-
- -
|
38
|
+
- - '>='
|
44
39
|
- !ruby/object:Gem::Version
|
45
40
|
version: '0'
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: rspec
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
45
|
- - ~>
|
52
46
|
- !ruby/object:Gem::Version
|
53
|
-
version: '2.
|
47
|
+
version: '2.14'
|
54
48
|
type: :development
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
51
|
requirements:
|
59
52
|
- - ~>
|
60
53
|
- !ruby/object:Gem::Version
|
61
|
-
version: '2.
|
54
|
+
version: '2.14'
|
62
55
|
- !ruby/object:Gem::Dependency
|
63
56
|
name: webmock
|
64
57
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
58
|
requirements:
|
67
59
|
- - ~>
|
68
60
|
- !ruby/object:Gem::Version
|
@@ -70,7 +62,6 @@ dependencies:
|
|
70
62
|
type: :development
|
71
63
|
prerelease: false
|
72
64
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
65
|
requirements:
|
75
66
|
- - ~>
|
76
67
|
- !ruby/object:Gem::Version
|
@@ -78,22 +69,21 @@ dependencies:
|
|
78
69
|
- !ruby/object:Gem::Dependency
|
79
70
|
name: actionmailer
|
80
71
|
requirement: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
72
|
requirements:
|
83
|
-
- -
|
73
|
+
- - '>='
|
84
74
|
- !ruby/object:Gem::Version
|
85
75
|
version: '3.2'
|
86
76
|
type: :development
|
87
77
|
prerelease: false
|
88
78
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
-
none: false
|
90
79
|
requirements:
|
91
|
-
- -
|
80
|
+
- - '>='
|
92
81
|
- !ruby/object:Gem::Version
|
93
82
|
version: '3.2'
|
94
|
-
description:
|
95
|
-
|
96
|
-
|
83
|
+
description: |-
|
84
|
+
Unofficial ruby adapter for MobileTechnics HTTP Bulk SMS API.
|
85
|
+
Tries to mimick mail API, so users can switch e.g. ActionMailer
|
86
|
+
with this SMS provider.
|
97
87
|
email:
|
98
88
|
- lukas.westermann@at-point.ch
|
99
89
|
executables: []
|
@@ -127,30 +117,26 @@ files:
|
|
127
117
|
- spec/spec_helper.rb
|
128
118
|
homepage: https://at-point.ch/opensource
|
129
119
|
licenses: []
|
120
|
+
metadata: {}
|
130
121
|
post_install_message:
|
131
122
|
rdoc_options: []
|
132
123
|
require_paths:
|
133
124
|
- lib
|
134
125
|
required_ruby_version: !ruby/object:Gem::Requirement
|
135
|
-
none: false
|
136
126
|
requirements:
|
137
|
-
- -
|
127
|
+
- - '>='
|
138
128
|
- !ruby/object:Gem::Version
|
139
129
|
version: '1.9'
|
140
130
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
141
|
-
none: false
|
142
131
|
requirements:
|
143
|
-
- -
|
132
|
+
- - '>='
|
144
133
|
- !ruby/object:Gem::Version
|
145
134
|
version: '0'
|
146
|
-
segments:
|
147
|
-
- 0
|
148
|
-
hash: -686134082126475921
|
149
135
|
requirements: []
|
150
136
|
rubyforge_project:
|
151
|
-
rubygems_version:
|
137
|
+
rubygems_version: 2.0.3
|
152
138
|
signing_key:
|
153
|
-
specification_version:
|
139
|
+
specification_version: 4
|
154
140
|
summary: Deliver SMS using MobileTechnics HTTP API.
|
155
141
|
test_files:
|
156
142
|
- spec/mote_sms/message_spec.rb
|