mote_sms 1.0.1 → 1.0.2
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 +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
|