sms_aero 0.0.11 → 0.1.0

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.
Files changed (73) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +3 -6
  3. data/CHANGELOG.md +15 -10
  4. data/README.md +25 -30
  5. data/lib/sms_aero.rb +119 -34
  6. data/lib/sms_aero/birthday.rb +12 -0
  7. data/lib/sms_aero/callable.rb +6 -0
  8. data/lib/sms_aero/channel.rb +15 -0
  9. data/lib/sms_aero/digital.rb +7 -0
  10. data/lib/sms_aero/filled_string.rb +11 -0
  11. data/lib/sms_aero/future.rb +16 -0
  12. data/lib/sms_aero/group.rb +11 -0
  13. data/lib/sms_aero/optional.rb +15 -0
  14. data/lib/sms_aero/phone.rb +11 -0
  15. data/lib/sms_aero/response.rb +30 -0
  16. data/lib/sms_aero/response/with_balance.rb +5 -0
  17. data/lib/sms_aero/response/with_groups.rb +5 -0
  18. data/lib/sms_aero/response/with_id.rb +9 -0
  19. data/lib/sms_aero/response/with_senders.rb +5 -0
  20. data/lib/sms_aero/response/with_statuses.rb +5 -0
  21. data/lib/sms_aero/response/with_tariff.rb +5 -0
  22. data/lib/sms_aero/tariff.rb +8 -0
  23. data/sms_aero.gemspec +2 -4
  24. data/spec/{sms_aero/types → models}/birthday_spec.rb +2 -2
  25. data/spec/{sms_aero/types → models}/channel_spec.rb +2 -2
  26. data/spec/{sms_aero/types → models}/digital_spec.rb +1 -1
  27. data/spec/{sms_aero/types → models}/future_spec.rb +5 -5
  28. data/spec/{sms_aero/types → models}/phone_spec.rb +1 -1
  29. data/spec/{sms_aero/operations → operations}/add_blacklist_spec.rb +19 -3
  30. data/spec/{sms_aero/operations → operations}/add_group_spec.rb +4 -4
  31. data/spec/{sms_aero/operations → operations}/add_phone_spec.rb +39 -76
  32. data/spec/{sms_aero/operations → operations}/check_balance_spec.rb +2 -4
  33. data/spec/{sms_aero/operations → operations}/check_groups_spec.rb +0 -0
  34. data/spec/{sms_aero/operations → operations}/check_senders_spec.rb +5 -5
  35. data/spec/{sms_aero/operations → operations}/check_sending_spec.rb +3 -3
  36. data/spec/{sms_aero/operations → operations}/check_sign_spec.rb +2 -2
  37. data/spec/{sms_aero/operations → operations}/check_status_spec.rb +3 -3
  38. data/spec/{sms_aero/operations → operations}/check_tariff_spec.rb +1 -1
  39. data/spec/{sms_aero/operations → operations}/delete_group_spec.rb +3 -3
  40. data/spec/{sms_aero/operations → operations}/delete_phone_spec.rb +4 -4
  41. data/spec/{sms_aero/operations → operations}/send_sms_spec.rb +49 -11
  42. data/spec/spec_helper.rb +4 -1
  43. data/spec/support/en.yml +8 -0
  44. metadata +61 -101
  45. data/lib/sms_aero/models/answer.rb +0 -8
  46. data/lib/sms_aero/models/sms.rb +0 -16
  47. data/lib/sms_aero/models/tariff.rb +0 -8
  48. data/lib/sms_aero/operations/add_blacklist.rb +0 -11
  49. data/lib/sms_aero/operations/add_group.rb +0 -11
  50. data/lib/sms_aero/operations/add_phone.rb +0 -17
  51. data/lib/sms_aero/operations/check_balance.rb +0 -11
  52. data/lib/sms_aero/operations/check_groups.rb +0 -12
  53. data/lib/sms_aero/operations/check_senders.rb +0 -15
  54. data/lib/sms_aero/operations/check_sending.rb +0 -11
  55. data/lib/sms_aero/operations/check_sign.rb +0 -15
  56. data/lib/sms_aero/operations/check_status.rb +0 -11
  57. data/lib/sms_aero/operations/check_tariff.rb +0 -12
  58. data/lib/sms_aero/operations/delete_group.rb +0 -11
  59. data/lib/sms_aero/operations/delete_phone.rb +0 -12
  60. data/lib/sms_aero/operations/hlr.rb +0 -36
  61. data/lib/sms_aero/operations/send_sms.rb +0 -22
  62. data/lib/sms_aero/operations/send_to_group.rb +0 -15
  63. data/lib/sms_aero/types/birthday.rb +0 -20
  64. data/lib/sms_aero/types/channel.rb +0 -4
  65. data/lib/sms_aero/types/digital.rb +0 -8
  66. data/lib/sms_aero/types/filled_string.rb +0 -3
  67. data/lib/sms_aero/types/future.rb +0 -16
  68. data/lib/sms_aero/types/password.rb +0 -6
  69. data/lib/sms_aero/types/phone.rb +0 -12
  70. data/lib/sms_aero/types/sign_status.rb +0 -9
  71. data/spec/sms_aero/operations/hlr_spec.rb +0 -96
  72. data/spec/sms_aero/operations/send_to_group_spec.rb +0 -185
  73. data/spec/sms_aero/types/sign_status_spec.rb +0 -19
@@ -0,0 +1,11 @@
1
+ class SmsAero::Phone < String
2
+ extend SmsAero::Callable
3
+
4
+ private
5
+
6
+ def initialize(value)
7
+ phone = value.to_s.scan(/\d/).join[/[^0].*/].to_s
8
+ raise "'#{value}' is not a valid phone" unless phone[/^\d{11,13}$/]
9
+ super phone
10
+ end
11
+ end
@@ -0,0 +1,30 @@
1
+ class SmsAero::Response
2
+ extend Dry::Initializer
3
+ extend SmsAero::Optional
4
+ option :reason, proc(&:to_s), default: proc { nil }
5
+ option :result, proc(&:strip), default: -> { "accepted" }
6
+
7
+ def success?
8
+ result == "accepted"
9
+ end
10
+
11
+ class << self
12
+ def build(*res)
13
+ body = res.last
14
+ new JSON.parse(body.first)
15
+ end
16
+
17
+ def new(opts)
18
+ super \
19
+ opts.each_with_object({}) { |(key, val), obj| obj[key.to_sym] = val }
20
+ end
21
+ end
22
+
23
+ # Operation-specific responses
24
+ require_relative "response/with_balance"
25
+ require_relative "response/with_groups"
26
+ require_relative "response/with_id"
27
+ require_relative "response/with_senders"
28
+ require_relative "response/with_statuses"
29
+ require_relative "response/with_tariff"
30
+ end
@@ -0,0 +1,5 @@
1
+ class SmsAero
2
+ class Response::WithBalance < Response
3
+ option :balance, proc(&:to_f), optional: true
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ class SmsAero
2
+ class Response::WithGroups < Response
3
+ option :reason, method(:Array), as: :channels, optional: true
4
+ end
5
+ end
@@ -0,0 +1,9 @@
1
+ class SmsAero
2
+ class Response::WithId < Response
3
+ option :id, proc(&:to_s), optional: true
4
+
5
+ def success?
6
+ id.to_s != ""
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,5 @@
1
+ class SmsAero
2
+ class Response::WithSenders < Response
3
+ option :data, method(:Array), optional: true, as: :senders
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ class SmsAero
2
+ class Response::WithStatuses < Response
3
+ option :data, method(:Array), optional: true, as: :statuses
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ class SmsAero
2
+ class Response::WithTariff < Response
3
+ option :reason, SmsAero::Tariff, optional: true, as: :tariff
4
+ end
5
+ end
@@ -0,0 +1,8 @@
1
+ class SmsAero::Tariff
2
+ extend Dry::Initializer
3
+ extend SmsAero::Callable
4
+ include SmsAero::Optional
5
+
6
+ option :"Direct channel", proc(&:to_f), optional: true, as: :direct
7
+ option :"Digital channel", proc(&:to_f), optional: true, as: :digital
8
+ end
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |gem|
2
2
  gem.name = "sms_aero"
3
- gem.version = "0.0.11"
3
+ gem.version = "0.1.0"
4
4
  gem.author = "Andrew Kozin (nepalez)"
5
5
  gem.email = "andrew.kozin@gmail.com"
6
6
  gem.homepage = "https://github.com/nepalez/sms_aero"
@@ -13,9 +13,7 @@ Gem::Specification.new do |gem|
13
13
 
14
14
  gem.required_ruby_version = ">= 2.2"
15
15
 
16
- gem.add_runtime_dependency "dry-types", ">= 0.9"
17
- gem.add_runtime_dependency "evil-struct", ">= 0.0.4"
18
- gem.add_runtime_dependency "evil-client", "~> 0.3.2"
16
+ gem.add_runtime_dependency "evil-client", "~> 1.1"
19
17
 
20
18
  gem.add_development_dependency "rake", ">= 10"
21
19
  gem.add_development_dependency "rspec", "~> 3.0"
@@ -1,6 +1,6 @@
1
1
  require "spec_helper"
2
2
 
3
- RSpec.describe SmsAero::Types::Birthday do
3
+ RSpec.describe SmsAero::Birthday do
4
4
  subject { described_class[source] }
5
5
 
6
6
  context "date:" do
@@ -27,7 +27,7 @@ RSpec.describe SmsAero::Types::Birthday do
27
27
  let(:source) { "Foobar" }
28
28
 
29
29
  it "fails" do
30
- expect { subject }.to raise_error(TypeError, /Foobar/)
30
+ expect { subject }.to raise_error(StandardError, /Foobar/)
31
31
  end
32
32
  end
33
33
  end
@@ -1,11 +1,11 @@
1
1
  require "spec_helper"
2
2
 
3
- RSpec.describe SmsAero::Types::Channel do
3
+ RSpec.describe SmsAero::Channel do
4
4
  context "valid code:" do
5
5
  let(:codes) { [1, 2, 3, 4, 6] }
6
6
 
7
7
  it "returns a code" do
8
- codes.each { |code| expect(described_class[code]).to eq code }
8
+ codes.each { |code| expect(described_class[code]).to eq code.to_s }
9
9
  end
10
10
  end
11
11
 
@@ -1,6 +1,6 @@
1
1
  require "spec_helper"
2
2
 
3
- RSpec.describe SmsAero::Types::Digital do
3
+ RSpec.describe SmsAero::Digital do
4
4
  subject { described_class[source] }
5
5
 
6
6
  context "false:" do
@@ -1,13 +1,13 @@
1
1
  require "spec_helper"
2
2
 
3
- RSpec.describe SmsAero::Types::Future do
3
+ RSpec.describe SmsAero::Future do
4
4
  subject { described_class[source] }
5
5
 
6
6
  context "time in future:" do
7
7
  let(:source) { Time.now + 3600 }
8
8
 
9
9
  it "returns UNIX time in seconds" do
10
- expect(subject).to eq source.to_i
10
+ expect(subject).to eq source.to_i.to_s
11
11
  end
12
12
  end
13
13
 
@@ -16,7 +16,7 @@ RSpec.describe SmsAero::Types::Future do
16
16
  let(:source) { time.strftime "%Y-%m-%d %H:%M:%S" }
17
17
 
18
18
  it "returns UNIX time in seconds" do
19
- expect(subject).to eq time.to_i
19
+ expect(subject).to eq time.to_i.to_s
20
20
  end
21
21
  end
22
22
 
@@ -24,7 +24,7 @@ RSpec.describe SmsAero::Types::Future do
24
24
  let(:source) { Time.now - 3600 }
25
25
 
26
26
  it "fails" do
27
- expect { subject }.to raise_error(TypeError)
27
+ expect { subject }.to raise_error(StandardError)
28
28
  end
29
29
  end
30
30
 
@@ -32,7 +32,7 @@ RSpec.describe SmsAero::Types::Future do
32
32
  let(:source) { "foobar" }
33
33
 
34
34
  it "fails" do
35
- expect { subject }.to raise_error(TypeError, /foobar/)
35
+ expect { subject }.to raise_error(StandardError, /foobar/)
36
36
  end
37
37
  end
38
38
  end
@@ -1,6 +1,6 @@
1
1
  require "spec_helper"
2
2
 
3
- RSpec.describe SmsAero::Types::Phone do
3
+ RSpec.describe SmsAero::Phone do
4
4
  subject { described_class[source] }
5
5
 
6
6
  context "valid phone:" do
@@ -22,11 +22,27 @@ RSpec.describe SmsAero, "#add_blacklist" do
22
22
  end
23
23
 
24
24
  it "returns success" do
25
- expect(subject).to be_kind_of SmsAero::Answer
25
+ expect(subject).to be_kind_of SmsAero::Response
26
26
  expect(subject.result).to eq "accepted"
27
27
  end
28
28
  end
29
29
 
30
+ context "by token:" do
31
+ let(:settings) { { user: "LOGIN", token: "PASSWORD" } }
32
+ let(:url) do
33
+ "https://gate.smsaero.ru/addblacklist?" \
34
+ "answer=json&" \
35
+ "password=PASSWORD&" \
36
+ "phone=70181324388&" \
37
+ "user=LOGIN"
38
+ end
39
+
40
+ it "sends a request" do
41
+ subject
42
+ expect(a_request(:post, url)).to have_been_made
43
+ end
44
+ end
45
+
30
46
  context "via GET:" do
31
47
  let(:url) do
32
48
  "https://gate.smsaero.ru/addblacklist?" \
@@ -65,7 +81,7 @@ RSpec.describe SmsAero, "#add_blacklist" do
65
81
  before { params[:phone] = "foobar23" }
66
82
 
67
83
  it "raises an exception" do
68
- expect { subject }.to raise_error(TypeError, /23/)
84
+ expect { subject }.to raise_error(Evil::Client::ValidationError, /23/)
69
85
  end
70
86
  end
71
87
 
@@ -73,7 +89,7 @@ RSpec.describe SmsAero, "#add_blacklist" do
73
89
  before { params.delete :phone }
74
90
 
75
91
  it "raises an exception" do
76
- expect { subject }.to raise_error(ArgumentError)
92
+ expect { subject }.to raise_error(Evil::Client::ValidationError, /phone/)
77
93
  end
78
94
  end
79
95
  end
@@ -22,7 +22,7 @@ RSpec.describe SmsAero, "#add_group" do
22
22
  end
23
23
 
24
24
  it "returns success" do
25
- expect(subject).to be_kind_of SmsAero::Answer
25
+ expect(subject).to be_kind_of SmsAero::Response
26
26
  expect(subject.result).to eq "accepted"
27
27
  end
28
28
  end
@@ -56,7 +56,7 @@ RSpec.describe SmsAero, "#add_group" do
56
56
  before { settings[:use_ssl] = false }
57
57
 
58
58
  it "returns success" do
59
- expect(subject).to be_kind_of SmsAero::Answer
59
+ expect(subject).to be_kind_of SmsAero::Response
60
60
  expect(subject.result).to eq "accepted"
61
61
  end
62
62
  end
@@ -65,7 +65,7 @@ RSpec.describe SmsAero, "#add_group" do
65
65
  before { params[:group] = "" }
66
66
 
67
67
  it "raises an exception" do
68
- expect { subject }.to raise_error(TypeError)
68
+ expect { subject }.to raise_error(Evil::Client::ValidationError)
69
69
  end
70
70
  end
71
71
 
@@ -73,7 +73,7 @@ RSpec.describe SmsAero, "#add_group" do
73
73
  before { params.delete :group }
74
74
 
75
75
  it "raises an exception" do
76
- expect { subject }.to raise_error(ArgumentError)
76
+ expect { subject }.to raise_error(Evil::Client::ValidationError, /group/)
77
77
  end
78
78
  end
79
79
  end
@@ -1,5 +1,5 @@
1
1
  RSpec.describe SmsAero, "#add_phone" do
2
- let(:settings) { { user: "LOGIN", password: "PASSWORD" } }
2
+ let(:settings) { { user: "LOGIN", token: "TOKEN" } }
3
3
  let(:client) { described_class.new(settings) }
4
4
  let(:params) { { phone: "+7 (909) 382-84-45" } }
5
5
  let(:answer) { { result: "accepted" } }
@@ -10,10 +10,7 @@ RSpec.describe SmsAero, "#add_phone" do
10
10
  context "using ssl via POST:" do
11
11
  let(:url) do
12
12
  "https://gate.smsaero.ru/addphone?" \
13
- "answer=json&" \
14
- "password=319f4d26e3c536b5dd871bb2c52e3178&" \
15
- "phone=79093828445&" \
16
- "user=LOGIN"
13
+ "answer=json&password=TOKEN&phone=79093828445&user=LOGIN"
17
14
  end
18
15
 
19
16
  it "sends a request" do
@@ -22,7 +19,7 @@ RSpec.describe SmsAero, "#add_phone" do
22
19
  end
23
20
 
24
21
  it "returns success" do
25
- expect(subject).to be_kind_of SmsAero::Answer
22
+ expect(subject).to be_kind_of SmsAero::Response
26
23
  expect(subject.result).to eq "accepted"
27
24
  end
28
25
  end
@@ -30,10 +27,7 @@ RSpec.describe SmsAero, "#add_phone" do
30
27
  context "via GET:" do
31
28
  let(:url) do
32
29
  "https://gate.smsaero.ru/addphone?" \
33
- "answer=json&" \
34
- "password=319f4d26e3c536b5dd871bb2c52e3178&" \
35
- "phone=79093828445&" \
36
- "user=LOGIN"
30
+ "answer=json&password=TOKEN&phone=79093828445&user=LOGIN"
37
31
  end
38
32
 
39
33
  before { settings[:use_post] = false }
@@ -47,10 +41,7 @@ RSpec.describe SmsAero, "#add_phone" do
47
41
  context "not using ssl:" do
48
42
  let(:url) do
49
43
  "http://gate.smsaero.ru/addphone?" \
50
- "answer=json&" \
51
- "password=319f4d26e3c536b5dd871bb2c52e3178&" \
52
- "phone=79093828445&" \
53
- "user=LOGIN"
44
+ "answer=json&password=TOKEN&phone=79093828445&user=LOGIN"
54
45
  end
55
46
 
56
47
  before { settings[:use_ssl] = false }
@@ -65,7 +56,7 @@ RSpec.describe SmsAero, "#add_phone" do
65
56
  before { params[:phone] = "1324" }
66
57
 
67
58
  it "raises an exception" do
68
- expect { subject }.to raise_error(TypeError, /1324/)
59
+ expect { subject }.to raise_error(Evil::Client::ValidationError, /1324/)
69
60
  end
70
61
  end
71
62
 
@@ -73,18 +64,14 @@ RSpec.describe SmsAero, "#add_phone" do
73
64
  before { params.delete :phone }
74
65
 
75
66
  it "raises an exception" do
76
- expect { subject }.to raise_error(ArgumentError)
67
+ expect { subject }.to raise_error(Evil::Client::ValidationError)
77
68
  end
78
69
  end
79
70
 
80
71
  context "with valid fname:" do
81
72
  let(:url) do
82
73
  "https://gate.smsaero.ru/addphone?" \
83
- "answer=json&" \
84
- "fname=joe&" \
85
- "password=319f4d26e3c536b5dd871bb2c52e3178&" \
86
- "phone=79093828445&" \
87
- "user=LOGIN"
74
+ "answer=json&fname=joe&password=TOKEN&phone=79093828445&user=LOGIN"
88
75
  end
89
76
 
90
77
  before { params[:fname] = "joe" }
@@ -95,22 +82,10 @@ RSpec.describe SmsAero, "#add_phone" do
95
82
  end
96
83
  end
97
84
 
98
- context "with invalid fname:" do
99
- before { params[:fname] = "" }
100
-
101
- it "raises an exception" do
102
- expect { subject }.to raise_error(TypeError)
103
- end
104
- end
105
-
106
85
  context "with valid sname:" do
107
86
  let(:url) do
108
87
  "https://gate.smsaero.ru/addphone?" \
109
- "answer=json&" \
110
- "password=319f4d26e3c536b5dd871bb2c52e3178&" \
111
- "phone=79093828445&" \
112
- "sname=joe&" \
113
- "user=LOGIN"
88
+ "answer=json&password=TOKEN&phone=79093828445&sname=joe&user=LOGIN"
114
89
  end
115
90
 
116
91
  before { params[:sname] = "joe" }
@@ -121,22 +96,10 @@ RSpec.describe SmsAero, "#add_phone" do
121
96
  end
122
97
  end
123
98
 
124
- context "with invalid sname:" do
125
- before { params[:sname] = "" }
126
-
127
- it "raises an exception" do
128
- expect { subject }.to raise_error(TypeError)
129
- end
130
- end
131
-
132
99
  context "with valid lname:" do
133
100
  let(:url) do
134
101
  "https://gate.smsaero.ru/addphone?" \
135
- "answer=json&" \
136
- "lname=smith&" \
137
- "password=319f4d26e3c536b5dd871bb2c52e3178&" \
138
- "phone=79093828445&" \
139
- "user=LOGIN"
102
+ "answer=json&lname=smith&password=TOKEN&phone=79093828445&user=LOGIN"
140
103
  end
141
104
 
142
105
  before { params[:lname] = "smith" }
@@ -147,22 +110,10 @@ RSpec.describe SmsAero, "#add_phone" do
147
110
  end
148
111
  end
149
112
 
150
- context "with invalid lname:" do
151
- before { params[:lname] = "" }
152
-
153
- it "raises an exception" do
154
- expect { subject }.to raise_error(TypeError)
155
- end
156
- end
157
-
158
113
  context "with valid group:" do
159
114
  let(:url) do
160
115
  "https://gate.smsaero.ru/addphone?" \
161
- "answer=json&" \
162
- "group=qux&" \
163
- "password=319f4d26e3c536b5dd871bb2c52e3178&" \
164
- "phone=79093828445&" \
165
- "user=LOGIN"
116
+ "answer=json&group=qux&password=TOKEN&phone=79093828445&user=LOGIN"
166
117
  end
167
118
 
168
119
  before { params[:group] = "qux" }
@@ -177,18 +128,14 @@ RSpec.describe SmsAero, "#add_phone" do
177
128
  before { params[:group] = "" }
178
129
 
179
130
  it "raises an exception" do
180
- expect { subject }.to raise_error(TypeError)
131
+ expect { subject }.to raise_error(Evil::Client::ValidationError)
181
132
  end
182
133
  end
183
134
 
184
135
  context "with valid param:" do
185
136
  let(:url) do
186
137
  "https://gate.smsaero.ru/addphone?" \
187
- "answer=json&" \
188
- "param=qux&" \
189
- "password=319f4d26e3c536b5dd871bb2c52e3178&" \
190
- "phone=79093828445&" \
191
- "user=LOGIN"
138
+ "answer=json&param=qux&password=TOKEN&phone=79093828445&user=LOGIN"
192
139
  end
193
140
 
194
141
  before { params[:param] = "qux" }
@@ -199,22 +146,38 @@ RSpec.describe SmsAero, "#add_phone" do
199
146
  end
200
147
  end
201
148
 
202
- context "with invalid param:" do
203
- before { params[:param] = "" }
149
+ context "with valid param2:" do
150
+ let(:url) do
151
+ "https://gate.smsaero.ru/addphone?" \
152
+ "answer=json&param2=qux&password=TOKEN&phone=79093828445&user=LOGIN"
153
+ end
154
+
155
+ before { params[:param2] = "qux" }
156
+
157
+ it "sends a request" do
158
+ subject
159
+ expect(a_request(:post, url)).to have_been_made
160
+ end
161
+ end
162
+
163
+ context "with valid param3:" do
164
+ let(:url) do
165
+ "https://gate.smsaero.ru/addphone?" \
166
+ "answer=json&param3=qux&password=TOKEN&phone=79093828445&user=LOGIN"
167
+ end
204
168
 
205
- it "raises an exception" do
206
- expect { subject }.to raise_error(TypeError)
169
+ before { params[:param3] = "qux" }
170
+
171
+ it "sends a request" do
172
+ subject
173
+ expect(a_request(:post, url)).to have_been_made
207
174
  end
208
175
  end
209
176
 
210
177
  context "with valid bday:" do
211
178
  let(:url) do
212
179
  "https://gate.smsaero.ru/addphone?" \
213
- "answer=json&" \
214
- "bday=1901-08-17&" \
215
- "password=319f4d26e3c536b5dd871bb2c52e3178&" \
216
- "phone=79093828445&" \
217
- "user=LOGIN"
180
+ "answer=json&bday=1901-08-17&password=TOKEN&phone=79093828445&user=LOGIN"
218
181
  end
219
182
 
220
183
  before { params[:bday] = Date.parse("1901-08-17") }
@@ -229,7 +192,7 @@ RSpec.describe SmsAero, "#add_phone" do
229
192
  before { params[:bday] = "foo" }
230
193
 
231
194
  it "raises an exception" do
232
- expect { subject }.to raise_error(TypeError, /foo/)
195
+ expect { subject }.to raise_error(Evil::Client::ValidationError, /foo/)
233
196
  end
234
197
  end
235
198
  end