sms_broker 1.0.0 → 1.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +16 -0
- data/.travis.yml +3 -0
- data/Gemfile +1 -0
- data/Rakefile +1 -1
- data/lib/sms_broker/client/base.rb +7 -8
- data/lib/sms_broker/client/nexmo.rb +6 -17
- data/lib/sms_broker/client/response/error.rb +1 -5
- data/lib/sms_broker/client/response/nexmo_error.rb +1 -5
- data/lib/sms_broker/client/response/nexmo_success.rb +13 -13
- data/lib/sms_broker/client/response/success.rb +0 -4
- data/lib/sms_broker/client/response/twilio_error.rb +5 -9
- data/lib/sms_broker/client/response/twilio_success.rb +14 -19
- data/lib/sms_broker/client/twilio.rb +16 -31
- data/lib/sms_broker/configuration.rb +9 -13
- data/lib/sms_broker/exceptions/invalid_service.rb +0 -3
- data/lib/sms_broker/exceptions/invalid_setup.rb +0 -4
- data/lib/sms_broker/message_sender.rb +14 -15
- data/lib/sms_broker/service.rb +3 -9
- data/lib/sms_broker/setup.rb +8 -12
- data/lib/sms_broker/version.rb +1 -3
- data/lib/sms_broker.rb +2 -6
- data/spec/sms_broker/nexmo_spec.rb +41 -37
- data/spec/sms_broker/real_call_spec.rb +63 -0
- data/spec/sms_broker/setup_spec.rb +12 -26
- data/spec/sms_broker/sms_broker_spec.rb +19 -93
- data/spec/sms_broker/twilio_spec.rb +35 -56
- data/spec/spec_helper.rb +8 -14
- data/spec/support/nexmo_helpers.rb +19 -72
- data/spec/support/vcr_cassettes/twilio/create_invalid_phone_error.yml +61 -0
- data/spec/support/vcr_cassettes/twilio/create_success.yml +68 -0
- metadata +10 -2
@@ -1,29 +1,25 @@
|
|
1
1
|
describe SmsBroker do
|
2
|
-
|
3
2
|
context 'Nexmo' do
|
4
|
-
|
5
|
-
let(:text_message) { 'Hello World' }
|
6
|
-
let(:from_phone) { ENV['NEXMO_PHONE_NUMBER'] }
|
7
|
-
let(:api_secret) { ENV['NEXMO_API_SECRET'] }
|
8
|
-
let(:sender_id) { ENV['NEXMO_SENDER_ID'] }
|
9
|
-
let(:to_phone) { '44741234567' }
|
10
|
-
let(:api_key) { ENV['NEXMO_API_SECRET'] }
|
11
|
-
|
12
3
|
context '#send_message' do
|
4
|
+
let(:text_message) { 'Hello World' }
|
5
|
+
let(:from_phone) { '+447476543210' }
|
6
|
+
let(:sender_id) { 'SenderID' }
|
7
|
+
let(:to_phone) { '+447491234567' }
|
8
|
+
let(:api_secret) { 'api_secret' }
|
9
|
+
let(:api_key) { 'api_key' }
|
13
10
|
|
14
11
|
before(:each) do
|
15
12
|
SmsBroker.clear_setup
|
16
13
|
end
|
17
14
|
|
18
15
|
context 'valid' do
|
19
|
-
|
20
16
|
it 'should send message with success' do
|
21
17
|
SmsBroker.setup do |config|
|
22
18
|
config.nexmo_setup \
|
23
19
|
phone_number: from_phone,
|
24
20
|
sender_id: sender_id,
|
25
21
|
secret: api_secret,
|
26
|
-
key:
|
22
|
+
key: api_key
|
27
23
|
end
|
28
24
|
|
29
25
|
stub_nexmo_create_message_success(sender_id, to_phone, text_message)
|
@@ -35,37 +31,32 @@ describe SmsBroker do
|
|
35
31
|
expect(response.message_id).not_to eq(nil)
|
36
32
|
end
|
37
33
|
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
end
|
48
|
-
|
49
|
-
stub_nexmo_create_message_success \
|
50
|
-
from_phone, to_phone, text_message
|
34
|
+
it 'should return error for invalid sender_id and fallback to ' \
|
35
|
+
'phone_number' do
|
36
|
+
SmsBroker.setup do |config|
|
37
|
+
config.nexmo_setup \
|
38
|
+
phone_number: from_phone,
|
39
|
+
sender_id: sender_id,
|
40
|
+
secret: api_secret,
|
41
|
+
key: api_key
|
42
|
+
end
|
51
43
|
|
52
|
-
|
53
|
-
|
44
|
+
stub_nexmo_create_message_invalid_sender_id_request \
|
45
|
+
sender_id, to_phone, text_message
|
54
46
|
|
55
|
-
|
47
|
+
stub_nexmo_create_message_success \
|
48
|
+
from_phone, to_phone, text_message
|
56
49
|
|
57
|
-
|
58
|
-
# this means that it tried to send with sender_id and failed
|
59
|
-
# and then sent with from_phone
|
60
|
-
expect(response.from).to eq(from_phone)
|
61
|
-
end
|
50
|
+
response = SmsBroker.message(text_message).to(to_phone).deliver
|
62
51
|
|
52
|
+
expect(response.success?).to eq(true)
|
53
|
+
# this means that it tried to send with sender_id and failed
|
54
|
+
# and then sent with from_phone
|
55
|
+
expect(response.from).to eq(from_phone)
|
63
56
|
end
|
64
|
-
|
65
57
|
end
|
66
58
|
|
67
59
|
context 'invalid' do
|
68
|
-
|
69
60
|
it 'should return error for invalid credentials' do
|
70
61
|
SmsBroker.setup do |config|
|
71
62
|
config.nexmo_setup \
|
@@ -83,10 +74,23 @@ describe SmsBroker do
|
|
83
74
|
expect(response.serialized.length).to be > 0
|
84
75
|
end
|
85
76
|
|
86
|
-
|
77
|
+
it 'should return error an unknown error' do
|
78
|
+
SmsBroker.setup do |config|
|
79
|
+
config.nexmo_setup \
|
80
|
+
phone_number: from_phone,
|
81
|
+
secret: api_secret,
|
82
|
+
key: api_key
|
83
|
+
end
|
87
84
|
|
88
|
-
|
85
|
+
stub_nexmo_create_message_unknown_error \
|
86
|
+
from_phone, to_phone, text_message
|
89
87
|
|
90
|
-
|
88
|
+
response = SmsBroker.message(text_message).to(to_phone).deliver
|
91
89
|
|
90
|
+
expect(response.success?).to eq(false)
|
91
|
+
expect(response.serialized.length).to be > 0
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
92
96
|
end
|
@@ -0,0 +1,63 @@
|
|
1
|
+
describe SmsBroker do
|
2
|
+
context 'SmsBroker' do
|
3
|
+
let(:text_message) { 'Hello World' }
|
4
|
+
|
5
|
+
context 'Valid real calls' do
|
6
|
+
before(:all) do
|
7
|
+
unless ENV['REAL_PHONE_NUMBER']
|
8
|
+
skip 'REAL_PHONE_NUMBER env var is required to run this spec'
|
9
|
+
end
|
10
|
+
|
11
|
+
WebMock.allow_net_connect!
|
12
|
+
|
13
|
+
SmsBroker.clear_setup
|
14
|
+
|
15
|
+
SmsBroker.setup do |config|
|
16
|
+
config.services %w(nexmo twilio)
|
17
|
+
|
18
|
+
config.default_service 'nexmo'
|
19
|
+
|
20
|
+
config.nexmo_setup \
|
21
|
+
key: ENV['NEXMO_LIVE_API_KEY'],
|
22
|
+
sender_id: ENV['NEXMO_LIVE_SENDER_ID'],
|
23
|
+
secret: ENV['NEXMO_LIVE_API_SECRET'],
|
24
|
+
phone_number: ENV['NEXMO_LIVE_PHONE_NUMBER']
|
25
|
+
|
26
|
+
config.twilio_setup \
|
27
|
+
sender_id: ENV['TWILIO_LIVE_SENDER_ID'],
|
28
|
+
auth_token: ENV['TWILIO_LIVE_AUTH_TOKEN'],
|
29
|
+
account_sid: ENV['TWILIO_LIVE_ACCOUNT_SID'],
|
30
|
+
phone_number: ENV['TWILIO_LIVE_PHONE_NUMBER']
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
after(:all) do
|
35
|
+
WebMock.disable_net_connect!
|
36
|
+
end
|
37
|
+
|
38
|
+
context 'Nexmo' do
|
39
|
+
it 'should successfuly send message' do
|
40
|
+
message = \
|
41
|
+
SmsBroker
|
42
|
+
.service(:nexmo)
|
43
|
+
.message(text_message)
|
44
|
+
.to(ENV['REAL_PHONE_NUMBER'])
|
45
|
+
|
46
|
+
expect(message.deliver.success?).to eq true
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
context 'Twillio' do
|
51
|
+
it 'should successfuly send message' do
|
52
|
+
message = \
|
53
|
+
SmsBroker
|
54
|
+
.service(:twilio)
|
55
|
+
.message(text_message)
|
56
|
+
.to(ENV['REAL_PHONE_NUMBER'])
|
57
|
+
|
58
|
+
expect(message.deliver.success?).to eq true
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
@@ -1,7 +1,5 @@
|
|
1
1
|
describe SmsBroker do
|
2
|
-
|
3
2
|
context 'Setup' do
|
4
|
-
|
5
3
|
before(:each) do
|
6
4
|
SmsBroker.clear_setup
|
7
5
|
end
|
@@ -9,7 +7,7 @@ describe SmsBroker do
|
|
9
7
|
it 'should set configs' do
|
10
8
|
setup = \
|
11
9
|
SmsBroker.setup do |config|
|
12
|
-
config.services
|
10
|
+
config.services %w(nexmo twilio)
|
13
11
|
|
14
12
|
config.default_service 'nexmo'
|
15
13
|
|
@@ -27,7 +25,7 @@ describe SmsBroker do
|
|
27
25
|
expect(setup.valid?).to eq(true)
|
28
26
|
|
29
27
|
expect(setup.options[:services]).to \
|
30
|
-
eq(
|
28
|
+
eq(%w(nexmo twilio))
|
31
29
|
|
32
30
|
expect(setup.options[:default_service]).to \
|
33
31
|
eq('nexmo')
|
@@ -46,13 +44,10 @@ describe SmsBroker do
|
|
46
44
|
end
|
47
45
|
|
48
46
|
context 'valid configs' do
|
49
|
-
|
50
47
|
before(:each) do
|
51
48
|
SmsBroker.setup do |config|
|
52
|
-
config.services
|
53
|
-
|
49
|
+
config.services %w(nexmo twilio)
|
54
50
|
config.default_service 'nexmo'
|
55
|
-
|
56
51
|
config.nexmo_setup \
|
57
52
|
key: 'NEXMO_API_KEY',
|
58
53
|
phone_number: 'phone',
|
@@ -76,15 +71,12 @@ describe SmsBroker do
|
|
76
71
|
|
77
72
|
expect(service.client).to be_a SmsBroker::Client::Twilio
|
78
73
|
end
|
79
|
-
|
80
74
|
end
|
81
75
|
|
82
76
|
context 'invalid configs' do
|
83
|
-
|
84
77
|
it 'should return error about available services' do
|
85
78
|
setup = SmsBroker.setup do |config|
|
86
|
-
config.services
|
87
|
-
|
79
|
+
config.services %w(nexmo twilio)
|
88
80
|
config.default_service 'nexmo'
|
89
81
|
end
|
90
82
|
|
@@ -108,43 +100,38 @@ describe SmsBroker do
|
|
108
100
|
|
109
101
|
it 'should return error default_service' do
|
110
102
|
setup = SmsBroker.setup do |config|
|
111
|
-
config.services
|
112
|
-
|
103
|
+
config.services %w(nexmo twilio)
|
113
104
|
config.default_service 'nope'
|
114
105
|
end
|
115
106
|
|
116
107
|
expect(setup.valid?).to eq(false)
|
117
108
|
|
118
109
|
expect(setup.errors[:default_service]).to \
|
119
|
-
include(
|
110
|
+
include('must be within ["nexmo", "twilio"]')
|
120
111
|
end
|
121
112
|
|
122
113
|
context 'setup!' do
|
123
|
-
|
124
114
|
it 'should raise exception for invalid setup' do
|
125
|
-
expect
|
115
|
+
expect do
|
126
116
|
SmsBroker.setup! do |config|
|
127
|
-
config.services
|
117
|
+
config.services %w(nexmo twilio)
|
128
118
|
config.default_service 'nope'
|
129
119
|
end
|
130
|
-
|
120
|
+
end.to raise_error(SmsBroker::Exceptions::InvalidSetup)
|
131
121
|
end
|
132
122
|
|
133
123
|
it 'should return error for missing required service setup' do
|
134
|
-
expect
|
124
|
+
expect do
|
135
125
|
SmsBroker.setup! do |config|
|
136
126
|
config.default_service 'nexmo'
|
137
127
|
|
138
128
|
config.nexmo_setup \
|
139
129
|
not_exists: 'key'
|
140
130
|
end
|
141
|
-
|
131
|
+
end.to raise_error(SmsBroker::Exceptions::InvalidSetup)
|
142
132
|
end
|
143
|
-
|
144
133
|
end
|
145
|
-
|
146
134
|
end
|
147
|
-
|
148
135
|
end
|
149
136
|
|
150
137
|
it 'should respond_to :message' do
|
@@ -154,8 +141,7 @@ describe SmsBroker do
|
|
154
141
|
it 'should raise InvalidSetup for service not being setup' do
|
155
142
|
SmsBroker.clear_setup
|
156
143
|
|
157
|
-
expect{ SmsBroker::Service.get(:twilio) }.to \
|
144
|
+
expect { SmsBroker::Service.get(:twilio) }.to \
|
158
145
|
raise_error SmsBroker::Exceptions::InvalidSetup
|
159
146
|
end
|
160
|
-
|
161
147
|
end
|
@@ -1,23 +1,20 @@
|
|
1
1
|
describe SmsBroker do
|
2
|
-
|
3
2
|
context 'SmsBroker' do
|
4
|
-
|
5
3
|
let(:text_message) { 'Hello World' }
|
4
|
+
let(:account_sid) { 'account_sid' }
|
5
|
+
let(:auth_token) { 'auth_token' }
|
6
6
|
|
7
7
|
context 'Invalid data when trying to deliver' do
|
8
|
-
|
9
|
-
before(:all) do
|
8
|
+
before(:each) do
|
10
9
|
SmsBroker.clear_setup
|
11
10
|
|
12
11
|
SmsBroker.setup do |config|
|
13
12
|
config.services ['twilio']
|
14
|
-
|
15
13
|
config.default_service 'twilio'
|
16
|
-
|
17
14
|
config.twilio_setup \
|
18
15
|
phone_number: '15005550001',
|
19
|
-
account_sid:
|
20
|
-
auth_token:
|
16
|
+
account_sid: account_sid,
|
17
|
+
auth_token: auth_token
|
21
18
|
end
|
22
19
|
end
|
23
20
|
|
@@ -25,121 +22,50 @@ describe SmsBroker do
|
|
25
22
|
response = SmsBroker.service.message(text_message).to(nil).deliver
|
26
23
|
|
27
24
|
expect(response.success?).to eq(false)
|
28
|
-
expect(response.serialized[:errors][:to]).to include(
|
25
|
+
expect(response.serialized[:errors][:to]).to include('is required')
|
29
26
|
end
|
30
27
|
|
31
28
|
it 'should return error for missing message' do
|
32
29
|
response = SmsBroker.service.message(nil).to(nil).deliver
|
33
30
|
|
34
31
|
expect(response.success?).to eq(false)
|
35
|
-
expect(response.serialized[:errors][:message]).to include(
|
32
|
+
expect(response.serialized[:errors][:message]).to include('is required')
|
36
33
|
end
|
37
34
|
|
38
35
|
it 'should return error for invalid message' do
|
39
|
-
message_160 =
|
40
|
-
|
41
|
-
|
36
|
+
message_160 = 'Lorem Ipsum is simply dummy text of the printing and ' \
|
37
|
+
'typesetting industry. Lorem Ipsum has been the ' \
|
38
|
+
'industrys standard dummy text ever since the 1500s, ' \
|
39
|
+
'when an'
|
42
40
|
|
43
41
|
response = \
|
44
42
|
SmsBroker.service.message(message_160).to('44123457891').deliver
|
45
43
|
|
46
44
|
expect(response.success?).to eq(false)
|
47
45
|
expect(response.serialized[:errors][:message]).to \
|
48
|
-
include(
|
46
|
+
include('cannot have length greater than 140')
|
49
47
|
end
|
50
|
-
|
51
48
|
end
|
52
49
|
|
53
50
|
context 'Invalid setup when trying to deliver' do
|
54
|
-
|
55
51
|
before(:all) do
|
56
52
|
SmsBroker.clear_setup
|
57
53
|
|
58
|
-
|
54
|
+
SmsBroker.setup do |config|
|
59
55
|
config.services ['nexmo']
|
60
|
-
|
61
56
|
config.default_service 'nexmo'
|
62
|
-
|
63
57
|
config.nexmo_setup \
|
64
|
-
key:
|
65
|
-
|
66
|
-
|
67
|
-
# secret: ENV['NEXMO_API_SECRET']
|
58
|
+
key: 'nexmo_api_key',
|
59
|
+
secret: 'nexmo_api_secret',
|
60
|
+
sender_id: 'nexmo_sender_id'
|
68
61
|
end
|
69
62
|
end
|
70
63
|
|
71
|
-
it 'should return error for missing
|
72
|
-
expect
|
64
|
+
it 'should return error for missing phone_number' do
|
65
|
+
expect do
|
73
66
|
SmsBroker.service.message(text_message).to('44123457891').deliver
|
74
|
-
|
75
|
-
end
|
76
|
-
|
77
|
-
end
|
78
|
-
|
79
|
-
context 'Valid real calls' do
|
80
|
-
|
81
|
-
before(:all) do
|
82
|
-
SmsBroker.clear_setup
|
83
|
-
|
84
|
-
SmsBroker.setup do |config|
|
85
|
-
config.services ['nexmo', 'twilio']
|
86
|
-
|
87
|
-
config.default_service 'nexmo'
|
88
|
-
|
89
|
-
config.nexmo_setup \
|
90
|
-
key: ENV['NEXMO_API_KEY'],
|
91
|
-
secret: ENV['NEXMO_API_SECRET'],
|
92
|
-
sender_id: ENV['NEXMO_SENDER_ID'],
|
93
|
-
phone_number: ENV['NEXMO_PHONE_NUMBER']
|
94
|
-
|
95
|
-
config.twilio_setup \
|
96
|
-
sender_id: ENV['TWILIO_LIVE_SENDER_ID'],
|
97
|
-
auth_token: ENV['TWILIO_LIVE_AUTH_TOKEN'],
|
98
|
-
account_sid: ENV['TWILIO_LIVE_ACCOUNT_SID'],
|
99
|
-
phone_number: ENV['TWILIO_LIVE_PHONE_NUMBER']
|
100
|
-
end
|
101
|
-
end
|
102
|
-
|
103
|
-
before(:all) do
|
104
|
-
unless ENV['REAL_PHONE_NUMBER']
|
105
|
-
skip "REAL_PHONE_NUMBER env var is required to run this spec"
|
106
|
-
end
|
107
|
-
|
108
|
-
WebMock.allow_net_connect!
|
109
|
-
end
|
110
|
-
|
111
|
-
after(:all) do
|
112
|
-
WebMock.disable_net_connect!
|
113
|
-
end
|
114
|
-
|
115
|
-
context 'Nexmo' do
|
116
|
-
|
117
|
-
it "should successfuly send message" do
|
118
|
-
message = \
|
119
|
-
SmsBroker.service(:nexmo).message('test').to(ENV['REAL_PHONE_NUMBER'])
|
120
|
-
|
121
|
-
response = message.deliver
|
122
|
-
|
123
|
-
expect(response.success?).to eq true
|
124
|
-
end
|
125
|
-
|
67
|
+
end.to raise_error SmsBroker::Exceptions::InvalidService
|
126
68
|
end
|
127
|
-
|
128
|
-
context 'Twillio' do
|
129
|
-
|
130
|
-
it "should successfuly send message" do
|
131
|
-
message = \
|
132
|
-
SmsBroker.service(:twilio).message('test').to(ENV['REAL_PHONE_NUMBER'])
|
133
|
-
|
134
|
-
response = message.deliver
|
135
|
-
|
136
|
-
expect(response.success?).to eq true
|
137
|
-
end
|
138
|
-
|
139
|
-
end
|
140
|
-
|
141
69
|
end
|
142
|
-
|
143
70
|
end
|
144
|
-
|
145
71
|
end
|
@@ -1,93 +1,76 @@
|
|
1
1
|
describe SmsBroker do
|
2
|
-
|
3
2
|
context 'Twilio' do
|
4
|
-
|
5
3
|
context '#send_message' do
|
6
|
-
|
7
4
|
let(:text_message) { 'Hello World' }
|
8
|
-
let(:from_phone) {
|
9
|
-
let(:
|
5
|
+
let(:from_phone) { '15005550006' }
|
6
|
+
let(:account_sid) { 'account_sid' }
|
7
|
+
let(:auth_token) { 'auth_token' }
|
10
8
|
|
11
9
|
before(:each) do
|
12
10
|
SmsBroker.clear_setup
|
13
11
|
end
|
14
12
|
|
15
|
-
def send_message(
|
16
|
-
|
17
|
-
|
18
|
-
response = SmsBroker.service.message(text).to(to).deliver
|
19
|
-
|
20
|
-
WebMock.disable_net_connect!
|
21
|
-
|
22
|
-
response
|
13
|
+
def send_message(text_message, to)
|
14
|
+
SmsBroker.service.message(text_message).to(to).deliver
|
23
15
|
end
|
24
16
|
|
25
17
|
context 'valid' do
|
26
|
-
|
27
18
|
it 'should send message with success' do
|
28
19
|
SmsBroker.setup do |config|
|
29
20
|
config.services ['twilio']
|
30
|
-
|
31
21
|
config.default_service 'twilio'
|
32
|
-
|
33
22
|
config.twilio_setup \
|
34
23
|
phone_number: from_phone,
|
35
|
-
account_sid:
|
36
|
-
auth_token:
|
24
|
+
account_sid: account_sid,
|
25
|
+
auth_token: auth_token
|
37
26
|
end
|
38
27
|
|
39
|
-
|
28
|
+
VCR.use_cassette('twilio/create_success') do
|
29
|
+
response = send_message(text_message, '15005550006')
|
40
30
|
|
41
|
-
|
42
|
-
|
43
|
-
|
31
|
+
expect(response.service).to eq(:twilio)
|
32
|
+
expect(response.success?).to eq(true)
|
33
|
+
expect(response.message_id).not_to eq(nil)
|
34
|
+
end
|
44
35
|
end
|
45
36
|
|
46
37
|
context 'with sender_id' do
|
47
|
-
|
48
38
|
before(:each) do
|
49
39
|
SmsBroker.setup do |config|
|
50
40
|
config.services ['twilio']
|
51
|
-
|
52
41
|
config.default_service 'twilio'
|
53
|
-
|
54
42
|
config.twilio_setup \
|
55
43
|
phone_number: '15005550001',
|
56
|
-
account_sid:
|
57
|
-
auth_token:
|
44
|
+
account_sid: account_sid,
|
45
|
+
auth_token: auth_token
|
58
46
|
end
|
59
47
|
end
|
60
48
|
|
61
49
|
it 'should return error for invalid sender_id' do
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
50
|
+
VCR.use_cassette('twilio/create_invalid_phone_error') do
|
51
|
+
response = send_message(text_message, '15005550006')
|
52
|
+
|
53
|
+
expect(response.service).to eq(:twilio)
|
54
|
+
expect(response.success?).to eq(false)
|
55
|
+
expect(response.serialized[:errors].keys).to include('21212')
|
56
|
+
# if the code is 21212 and message includes the phone_number,
|
57
|
+
# it means that it tried with sender_id and failed
|
58
|
+
expect(response.serialized[:errors]['21212'][0]).to \
|
59
|
+
include("The 'From' number +15005550001 is not a valid")
|
60
|
+
end
|
73
61
|
end
|
74
|
-
|
75
62
|
end
|
76
|
-
|
77
63
|
end
|
78
64
|
|
79
65
|
context 'invalid' do
|
80
|
-
|
81
66
|
it 'should return error for missing required data' do
|
82
67
|
SmsBroker.setup do |config|
|
83
68
|
config.services ['twilio']
|
84
|
-
|
85
69
|
config.default_service 'twilio'
|
86
|
-
|
87
70
|
config.twilio_setup \
|
88
71
|
phone_number: '15005550001',
|
89
|
-
account_sid:
|
90
|
-
auth_token:
|
72
|
+
account_sid: account_sid,
|
73
|
+
auth_token: auth_token
|
91
74
|
end
|
92
75
|
|
93
76
|
response = SmsBroker.message(text_message).deliver
|
@@ -98,25 +81,21 @@ describe SmsBroker do
|
|
98
81
|
it 'should return error for invalid from phone' do
|
99
82
|
SmsBroker.setup do |config|
|
100
83
|
config.services ['twilio']
|
101
|
-
|
102
84
|
config.default_service 'twilio'
|
103
|
-
|
104
85
|
config.twilio_setup \
|
105
86
|
phone_number: '15005550001',
|
106
|
-
account_sid:
|
107
|
-
auth_token:
|
87
|
+
account_sid: account_sid,
|
88
|
+
auth_token: auth_token
|
108
89
|
end
|
109
90
|
|
110
|
-
|
91
|
+
VCR.use_cassette('twilio/create_invalid_phone_error') do
|
92
|
+
response = send_message(text_message, '15005550006')
|
111
93
|
|
112
|
-
|
113
|
-
|
94
|
+
expect(response.success?).to eq(false)
|
95
|
+
expect(response.serialized.length).to be > 0
|
96
|
+
end
|
114
97
|
end
|
115
|
-
|
116
98
|
end
|
117
|
-
|
118
99
|
end
|
119
|
-
|
120
100
|
end
|
121
|
-
|
122
101
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,7 +1,10 @@
|
|
1
1
|
require 'pry'
|
2
|
-
require '
|
2
|
+
require 'vcr'
|
3
3
|
require 'simplecov'
|
4
4
|
require 'codeclimate-test-reporter'
|
5
|
+
require 'sms_broker'
|
6
|
+
require 'webmock/rspec'
|
7
|
+
require 'support/nexmo_helpers'
|
5
8
|
|
6
9
|
SimpleCov.start do
|
7
10
|
formatter SimpleCov::Formatter::MultiFormatter.new [
|
@@ -10,20 +13,11 @@ SimpleCov.start do
|
|
10
13
|
]
|
11
14
|
end
|
12
15
|
|
13
|
-
# load service_keys.yml to ENV
|
14
|
-
yml_file = File.expand_path('../support/services_keys.yml', __FILE__)
|
15
|
-
|
16
|
-
YAML.load(File.read(yml_file)).each do |key, value|
|
17
|
-
ENV[key] = value
|
18
|
-
end
|
19
|
-
|
20
|
-
require 'sms_broker'
|
21
|
-
require 'webmock/rspec'
|
22
|
-
|
23
|
-
require 'support/nexmo_helpers'
|
24
|
-
|
25
16
|
RSpec.configure do |config|
|
26
|
-
|
27
17
|
config.include NexmoHelpers
|
18
|
+
end
|
28
19
|
|
20
|
+
VCR.configure do |config|
|
21
|
+
config.cassette_library_dir = 'spec/support/vcr_cassettes'
|
22
|
+
config.hook_into :webmock
|
29
23
|
end
|