sms77 0.4.0 → 0.5.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.
- checksums.yaml +4 -4
- data/.gitignore +6 -4
- data/.idea/.gitignore +8 -0
- data/.idea/inspectionProfiles/Project_Default.xml +6 -0
- data/.idea/modules.xml +8 -0
- data/.idea/ruby-client.iml +18 -0
- data/.idea/vcs.xml +6 -0
- data/Gemfile +2 -2
- data/LICENSE +20 -20
- data/README.md +41 -35
- data/Rakefile +5 -5
- data/doc/Sms77/Client.html +230 -0
- data/doc/Sms77/Contacts/Action.html +131 -0
- data/doc/Sms77/Contacts.html +126 -0
- data/doc/Sms77/Endpoint.html +187 -0
- data/doc/Sms77/Hooks/Action.html +131 -0
- data/doc/Sms77/Hooks/EventType.html +146 -0
- data/doc/Sms77/Hooks/RequestMethod.html +131 -0
- data/doc/Sms77/Hooks/Validator.html +598 -0
- data/doc/Sms77/Hooks.html +126 -0
- data/doc/Sms77/Journal/Type.html +136 -0
- data/doc/Sms77/Journal/Validator.html +394 -0
- data/doc/Sms77/Journal.html +126 -0
- data/doc/Sms77/Lookup/Type.html +136 -0
- data/doc/Sms77/Lookup.html +126 -0
- data/doc/Sms77/Resource.html +870 -0
- data/doc/Sms77/Resources/Analytics.html +263 -0
- data/doc/Sms77/Resources/Balance.html +246 -0
- data/doc/Sms77/Resources/Contacts.html +449 -0
- data/doc/Sms77/Resources/Hooks.html +457 -0
- data/doc/Sms77/Resources/Journal.html +261 -0
- data/doc/Sms77/Resources/Lookup.html +540 -0
- data/doc/Sms77/Resources/Pricing.html +263 -0
- data/doc/Sms77/Resources/Sms.html +261 -0
- data/doc/Sms77/Resources/Status.html +261 -0
- data/doc/Sms77/Resources/Subaccounts.html +651 -0
- data/doc/Sms77/Resources/ValidateForVoice.html +261 -0
- data/doc/Sms77/Resources/Voice.html +261 -0
- data/doc/Sms77/Resources.html +128 -0
- data/doc/Sms77/Sms/Type.html +126 -0
- data/doc/Sms77/Sms.html +126 -0
- data/doc/Sms77/Subaccounts/Action.html +141 -0
- data/doc/Sms77/Subaccounts/Validator.html +490 -0
- data/doc/Sms77/Subaccounts.html +126 -0
- data/doc/Sms77/Util.html +1033 -0
- data/doc/Sms77.html +146 -0
- data/doc/_index.html +444 -0
- data/doc/class_list.html +51 -0
- data/doc/css/common.css +1 -0
- data/doc/css/full_list.css +58 -0
- data/doc/css/style.css +497 -0
- data/doc/file.README.html +112 -0
- data/doc/file_list.html +56 -0
- data/doc/frames.html +17 -0
- data/doc/index.html +112 -0
- data/doc/js/app.js +314 -0
- data/doc/js/full_list.js +216 -0
- data/doc/js/jquery.js +4 -0
- data/doc/method_list.html +563 -0
- data/doc/top-level-namespace.html +110 -0
- data/lib/sms77/client.rb +30 -29
- data/lib/sms77/contacts.rb +10 -9
- data/lib/sms77/endpoint.rb +17 -15
- data/lib/sms77/hooks.rb +67 -64
- data/lib/sms77/journal.rb +39 -38
- data/lib/sms77/lookup.rb +11 -10
- data/lib/sms77/resource.rb +94 -93
- data/lib/sms77/resources/analytics.rb +21 -16
- data/lib/sms77/resources/balance.rb +19 -15
- data/lib/sms77/resources/contacts.rb +38 -25
- data/lib/sms77/resources/hooks.rb +40 -29
- data/lib/sms77/resources/journal.rb +20 -15
- data/lib/sms77/resources/lookup.rb +47 -29
- data/lib/sms77/resources/pricing.rb +20 -15
- data/lib/sms77/resources/sms.rb +20 -15
- data/lib/sms77/resources/status.rb +20 -15
- data/lib/sms77/resources/subaccounts.rb +66 -0
- data/lib/sms77/resources/validate_for_voice.rb +20 -15
- data/lib/sms77/resources/voice.rb +20 -15
- data/lib/sms77/sms.rb +9 -8
- data/lib/sms77/subaccounts.rb +55 -0
- data/lib/sms77/util.rb +68 -67
- data/lib/sms77/version.rb +5 -5
- data/lib/sms77.rb +6 -6
- data/release.sh +4 -7
- data/sms77.gemspec +21 -21
- data/spec/EnvKeyStore.rb +14 -14
- data/spec/matchers.rb +22 -22
- data/spec/sms77/balance_spec.rb +12 -12
- data/spec/sms77/client_spec.rb +15 -15
- data/spec/sms77/contacts_spec.rb +129 -116
- data/spec/sms77/hooks_spec.rb +108 -105
- data/spec/sms77/instance_spec.rb +22 -20
- data/spec/sms77/journal_spec.rb +86 -86
- data/spec/sms77/lookup_spec.rb +179 -179
- data/spec/sms77/pricing_spec.rb +76 -76
- data/spec/sms77/sms_spec.rb +103 -103
- data/spec/sms77/subaccounts_spec.rb +121 -0
- data/spec/sms77/validate_for_voice_spec.rb +19 -19
- data/spec/sms77/voice_spec.rb +51 -51
- data/spec/sms77_spec.rb +9 -7
- data/spec/spec_helper.rb +53 -53
- metadata +75 -17
data/lib/sms77/util.rb
CHANGED
@@ -1,68 +1,69 @@
|
|
1
|
-
require 'date'
|
2
|
-
|
3
|
-
module
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
1
|
+
require 'date'
|
2
|
+
|
3
|
+
# This module exposes general utilities used throughout the library.
|
4
|
+
module Sms77::Util
|
5
|
+
def self.to_numbered_bool(val)
|
6
|
+
if true == val
|
7
|
+
return 1
|
8
|
+
elsif false == val
|
9
|
+
return 0
|
10
|
+
end
|
11
|
+
|
12
|
+
return val
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.get_namespace_members_by_type(ns, type)
|
16
|
+
ns.constants.map(&ns.method(:const_get)).grep(type)
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.get_namespace_classes(ns)
|
20
|
+
return self.get_namespace_members_by_type(ns, Class)
|
21
|
+
end
|
22
|
+
|
23
|
+
def self.get_module_constant_values(mod)
|
24
|
+
mod.constants(false).map &mod.method(:const_get)
|
25
|
+
end
|
26
|
+
|
27
|
+
def self.is_valid_url?(str)
|
28
|
+
str =~ URI::regexp
|
29
|
+
end
|
30
|
+
|
31
|
+
def self.is_valid_datetime?(str)
|
32
|
+
begin
|
33
|
+
DateTime.parse(str)
|
34
|
+
true
|
35
|
+
rescue ArgumentError
|
36
|
+
false
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
def self.is_positive_integer?(val)
|
41
|
+
/\A\d+\z/.match?(val.to_s)
|
42
|
+
end
|
43
|
+
|
44
|
+
def self.in_module_constants?(needle, mod)
|
45
|
+
get_module_constant_values(mod).include?(needle)
|
46
|
+
end
|
47
|
+
|
48
|
+
def self.valid_float?(str)
|
49
|
+
!!Float(str) rescue false
|
50
|
+
end
|
51
|
+
|
52
|
+
def self.numeric?(val)
|
53
|
+
return true if val.is_a?(Integer)
|
54
|
+
|
55
|
+
val.scan(/\D/).empty?
|
56
|
+
end
|
57
|
+
|
58
|
+
def self.boolean?(val)
|
59
|
+
[true, false].include? val
|
60
|
+
end
|
61
|
+
|
62
|
+
def self.nil_or_lengthy_string?(val)
|
63
|
+
val.nil? || (val.is_a?(String) && val.length)
|
64
|
+
end
|
65
|
+
|
66
|
+
def self.lengthy_string?(val)
|
67
|
+
return val.is_a?(String) && !val.empty?
|
68
|
+
end
|
68
69
|
end
|
data/lib/sms77/version.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Sms77
|
4
|
-
VERSION = '0.
|
5
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Sms77
|
4
|
+
VERSION = '0.5.0'
|
5
|
+
end
|
data/lib/sms77.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'sms77/version'
|
4
|
-
|
5
|
-
module Sms77
|
6
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'sms77/version'
|
4
|
+
|
5
|
+
module Sms77
|
6
|
+
end
|
data/release.sh
CHANGED
data/sms77.gemspec
CHANGED
@@ -1,22 +1,22 @@
|
|
1
|
-
lib = File.expand_path('../lib', __FILE__)
|
2
|
-
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
3
|
-
|
4
|
-
require 'sms77/version'
|
5
|
-
|
6
|
-
Gem::Specification.new do |spec|
|
7
|
-
spec.add_development_dependency 'bundler', '~> 2.1'
|
8
|
-
spec.add_development_dependency 'rake', '~> 13.0'
|
9
|
-
spec.add_development_dependency 'rspec', '~> 3.9'
|
10
|
-
spec.add_runtime_dependency 'faraday', '~> 1.1'
|
11
|
-
spec.author = '
|
12
|
-
spec.description = 'Send SMS &
|
13
|
-
spec.email = 'support@
|
14
|
-
spec.files = `git ls-files`.split("\n")
|
15
|
-
spec.homepage = 'https://github.com/
|
16
|
-
spec.license = 'MIT'
|
17
|
-
spec.name = 'sms77'
|
18
|
-
spec.required_ruby_version = '>= 2.6.0'
|
19
|
-
spec.summary = 'Official API Client for the
|
20
|
-
spec.test_files = Dir['spec/**/*']
|
21
|
-
spec.version = Sms77::VERSION
|
1
|
+
lib = File.expand_path('../lib', __FILE__)
|
2
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
3
|
+
|
4
|
+
require 'sms77/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.add_development_dependency 'bundler', '~> 2.1'
|
8
|
+
spec.add_development_dependency 'rake', '~> 13.0'
|
9
|
+
spec.add_development_dependency 'rspec', '~> 3.9'
|
10
|
+
spec.add_runtime_dependency 'faraday', '~> 1.1'
|
11
|
+
spec.author = 'seven communications GmbH & Co. KG'
|
12
|
+
spec.description = 'Send SMS & text-to-speech messages via the seven SMS Gateway.'
|
13
|
+
spec.email = 'support@seven.io'
|
14
|
+
spec.files = `git ls-files`.split("\n")
|
15
|
+
spec.homepage = 'https://github.com/seven-io/ruby-client'
|
16
|
+
spec.license = 'MIT'
|
17
|
+
spec.name = 'sms77'
|
18
|
+
spec.required_ruby_version = '>= 2.6.0'
|
19
|
+
spec.summary = 'Official API Client for the seven SMS Gateway'
|
20
|
+
spec.test_files = Dir['spec/**/*']
|
21
|
+
spec.version = Sms77::VERSION
|
22
22
|
end
|
data/spec/EnvKeyStore.rb
CHANGED
@@ -1,15 +1,15 @@
|
|
1
|
-
class EnvKeyStore
|
2
|
-
def initialize(key)
|
3
|
-
@key = "SMS77_TEST_#{key}"
|
4
|
-
|
5
|
-
@store = ENV[@key]
|
6
|
-
end
|
7
|
-
|
8
|
-
def get(fallback = nil)
|
9
|
-
@store.nil? ? fallback : @store
|
10
|
-
end
|
11
|
-
|
12
|
-
def set(val, only_on_nil = false)
|
13
|
-
@store = val unless only_on_nil
|
14
|
-
end
|
1
|
+
class EnvKeyStore
|
2
|
+
def initialize(key)
|
3
|
+
@key = "SMS77_TEST_#{key}"
|
4
|
+
|
5
|
+
@store = ENV[@key]
|
6
|
+
end
|
7
|
+
|
8
|
+
def get(fallback = nil)
|
9
|
+
@store.nil? ? fallback : @store
|
10
|
+
end
|
11
|
+
|
12
|
+
def set(val, only_on_nil = false)
|
13
|
+
@store = val unless only_on_nil
|
14
|
+
end
|
15
15
|
end
|
data/spec/matchers.rb
CHANGED
@@ -1,23 +1,23 @@
|
|
1
|
-
RSpec::Matchers.define :be_nil_or_lengthy_string do
|
2
|
-
match do |val|
|
3
|
-
Sms77::Util::nil_or_lengthy_string?(val)
|
4
|
-
end
|
5
|
-
end
|
6
|
-
|
7
|
-
RSpec::Matchers.define :be_boolean do
|
8
|
-
match do |val|
|
9
|
-
Sms77::Util::boolean?(val)
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
|
-
RSpec::Matchers.define :be_numeric do
|
14
|
-
match do |val|
|
15
|
-
Sms77::Util::numeric?(val)
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
RSpec::Matchers.define :be_lengthy_string do
|
20
|
-
match do |val|
|
21
|
-
Sms77::Util::lengthy_string?(val)
|
22
|
-
end
|
1
|
+
RSpec::Matchers.define :be_nil_or_lengthy_string do
|
2
|
+
match do |val|
|
3
|
+
Sms77::Util::nil_or_lengthy_string?(val)
|
4
|
+
end
|
5
|
+
end
|
6
|
+
|
7
|
+
RSpec::Matchers.define :be_boolean do
|
8
|
+
match do |val|
|
9
|
+
Sms77::Util::boolean?(val)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
RSpec::Matchers.define :be_numeric do
|
14
|
+
match do |val|
|
15
|
+
Sms77::Util::numeric?(val)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
RSpec::Matchers.define :be_lengthy_string do
|
20
|
+
match do |val|
|
21
|
+
Sms77::Util::lengthy_string?(val)
|
22
|
+
end
|
23
23
|
end
|
data/spec/sms77/balance_spec.rb
CHANGED
@@ -1,12 +1,12 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'spec_helper'
|
4
|
-
require 'sms77/resources/balance'
|
5
|
-
|
6
|
-
RSpec.describe Sms77, 'balance' do
|
7
|
-
it 'returns the account balance' do
|
8
|
-
helper = Helper.new(Sms77::Resources::Balance)
|
9
|
-
balance = helper.request(helper.resource.method(:retrieve), 155.55)
|
10
|
-
expect(balance).to be_a(Float)
|
11
|
-
end
|
12
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
require 'sms77/resources/balance'
|
5
|
+
|
6
|
+
RSpec.describe Sms77, 'balance' do
|
7
|
+
it 'returns the account balance' do
|
8
|
+
helper = Helper.new(Sms77::Resources::Balance)
|
9
|
+
balance = helper.request(helper.resource.method(:retrieve), 155.55)
|
10
|
+
expect(balance).to be_a(Float)
|
11
|
+
end
|
12
|
+
end
|
data/spec/sms77/client_spec.rb
CHANGED
@@ -1,15 +1,15 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require '
|
4
|
-
require 'sms77/
|
5
|
-
require '
|
6
|
-
|
7
|
-
RSpec.describe Sms77, 'client' do
|
8
|
-
it 'should contain all resource modules' do
|
9
|
-
client = Sms77::Client.new(Sms77::Resource.new('x'))
|
10
|
-
|
11
|
-
client.instance_variables.each do |var|
|
12
|
-
expect(Sms77::Resources.const_get(client.instance_variable_get(var).class.name)).to be_truthy
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
require 'sms77/client'
|
5
|
+
require 'sms77/resource'
|
6
|
+
|
7
|
+
RSpec.describe Sms77, 'client' do
|
8
|
+
it 'should contain all resource modules' do
|
9
|
+
client = Sms77::Client.new(Sms77::Resource.new('x'))
|
10
|
+
|
11
|
+
client.instance_variables.each do |var|
|
12
|
+
expect(Sms77::Resources.const_get(client.instance_variable_get(var).class.name)).to be_truthy
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
data/spec/sms77/contacts_spec.rb
CHANGED
@@ -1,116 +1,129 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'spec_helper'
|
4
|
-
require 'sms77/contacts'
|
5
|
-
require 'sms77/resources/contacts'
|
6
|
-
|
7
|
-
RSpec.describe Sms77, 'contacts' do
|
8
|
-
$new_contact_id = nil
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
expect(
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
expect(
|
38
|
-
expect(
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
"
|
45
|
-
"
|
46
|
-
"
|
47
|
-
"
|
48
|
-
"
|
49
|
-
"
|
50
|
-
"
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
body =
|
55
|
-
|
56
|
-
expect(body).to be_a(String)
|
57
|
-
|
58
|
-
body.split("\n").each do |contact|
|
59
|
-
assert_contact(contact)
|
60
|
-
end
|
61
|
-
end
|
62
|
-
|
63
|
-
it 'returns all contacts as JSON' do
|
64
|
-
stub = [
|
65
|
-
{ ID: '4848436', Name: '', Number: '' },
|
66
|
-
{ ID: '4848437', Name: '', Number: '' },
|
67
|
-
{ ID: '4848433', Name: 'Alf Albert', Number: '007' },
|
68
|
-
{ ID: '3172517', Name: 'BNN Nolte', Number: '004911112' },
|
69
|
-
{ ID: '4848434', Name: 'Harry Harald', Number: '0049123456' },
|
70
|
-
{ ID: '4848431', Name: 'Karl Konrad', Number: '00123456' },
|
71
|
-
{ ID: '4848432', Name: 'Petra Pan', Number: '00513414' },
|
72
|
-
{ ID: '2925186', Name: 'Tom Tester', Number: '004901234567890' }
|
73
|
-
]
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
body
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
require 'sms77/contacts'
|
5
|
+
require 'sms77/resources/contacts'
|
6
|
+
|
7
|
+
RSpec.describe Sms77, 'contacts' do
|
8
|
+
$new_contact_id = nil
|
9
|
+
|
10
|
+
def assert_new(response_body)
|
11
|
+
if response_body.is_a?(String)
|
12
|
+
code, $new_contact_id = response_body.split("\n")
|
13
|
+
$new_contact_id = $new_contact_id.to_i
|
14
|
+
else
|
15
|
+
code = response_body[:return]
|
16
|
+
$new_contact_id = response_body[:id]
|
17
|
+
end
|
18
|
+
|
19
|
+
expect(code).to be_numeric
|
20
|
+
expect($new_contact_id).to be_an_instance_of(Integer)
|
21
|
+
end
|
22
|
+
|
23
|
+
def assert_contact(contact)
|
24
|
+
if contact.is_a?(String)
|
25
|
+
id, name, number = contact.split(';')
|
26
|
+
|
27
|
+
id = id.gsub('"', '')
|
28
|
+
name = name.gsub('"', '')
|
29
|
+
number = number.gsub('"', '')
|
30
|
+
else
|
31
|
+
id = contact[:ID]
|
32
|
+
name = contact[:Name]
|
33
|
+
number = contact[:Number]
|
34
|
+
end
|
35
|
+
|
36
|
+
expect(id).to be_numeric
|
37
|
+
expect(name).to be_an_instance_of(String)
|
38
|
+
expect(number.sub('+', '')).to be_numeric
|
39
|
+
end
|
40
|
+
|
41
|
+
it 'returns all contacts as CSV' do
|
42
|
+
stub = <<~CSV
|
43
|
+
"4848436";"";""
|
44
|
+
"4848437";"";""
|
45
|
+
"4848433";"Alf Albert";"007"
|
46
|
+
"3172517";"BNN Nolte";"004911112"
|
47
|
+
"4848434";"Harry Harald";"0049123456"
|
48
|
+
"4848431";"Karl Konrad";"00123456"
|
49
|
+
"4848432";"Petra Pan";"00513414"
|
50
|
+
"2925186";"Tom Tester";"004901234567890"
|
51
|
+
CSV
|
52
|
+
|
53
|
+
helper = Helper.new(Sms77::Resources::Contacts)
|
54
|
+
body = helper.request(helper.resource.method(:read), stub)
|
55
|
+
|
56
|
+
expect(body).to be_a(String)
|
57
|
+
|
58
|
+
body.split("\n").each do |contact|
|
59
|
+
assert_contact(contact)
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
it 'returns all contacts as JSON' do
|
64
|
+
stub = [
|
65
|
+
{ ID: '4848436', Name: '', Number: '' },
|
66
|
+
{ ID: '4848437', Name: '', Number: '' },
|
67
|
+
{ ID: '4848433', Name: 'Alf Albert', Number: '007' },
|
68
|
+
{ ID: '3172517', Name: 'BNN Nolte', Number: '004911112' },
|
69
|
+
{ ID: '4848434', Name: 'Harry Harald', Number: '0049123456' },
|
70
|
+
{ ID: '4848431', Name: 'Karl Konrad', Number: '00123456' },
|
71
|
+
{ ID: '4848432', Name: 'Petra Pan', Number: '00513414' },
|
72
|
+
{ ID: '2925186', Name: 'Tom Tester', Number: '004901234567890' }
|
73
|
+
]
|
74
|
+
|
75
|
+
helper = Helper.new(Sms77::Resources::Contacts)
|
76
|
+
body = helper.request(helper.resource.method(:read), stub, { json: true })
|
77
|
+
|
78
|
+
expect(body).to be_a(Array)
|
79
|
+
|
80
|
+
body.each do |contact|
|
81
|
+
assert_contact(contact)
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
it 'creates a contact and returns its ID as TEXT' do
|
86
|
+
stub = <<~TEXT
|
87
|
+
152
|
88
|
+
4868400
|
89
|
+
TEXT
|
90
|
+
|
91
|
+
helper = Helper.new(Sms77::Resources::Contacts)
|
92
|
+
body = helper.request(helper.resource.method(:write), stub, {})
|
93
|
+
|
94
|
+
expect(body).to be_a(String)
|
95
|
+
|
96
|
+
assert_new(body)
|
97
|
+
end
|
98
|
+
|
99
|
+
it 'deletes a contact with given ID and return code' do
|
100
|
+
helper = Helper.new(Sms77::Resources::Contacts)
|
101
|
+
expect(helper.request(helper.resource.method(:delete), 152, { id: $new_contact_id })).to be_a(Integer)
|
102
|
+
end
|
103
|
+
|
104
|
+
it 'creates a contact and returns its ID as JSON' do
|
105
|
+
helper = Helper.new(Sms77::Resources::Contacts)
|
106
|
+
body = helper.request(helper.resource.method(:write), { id: 4868401, return: '152' }, { json: true })
|
107
|
+
|
108
|
+
expect(body).to be_a(Hash)
|
109
|
+
|
110
|
+
assert_new(body)
|
111
|
+
end
|
112
|
+
|
113
|
+
it 'deletes a contact with given ID and return code as JSON' do
|
114
|
+
helper = Helper.new(Sms77::Resources::Contacts)
|
115
|
+
body = helper.request(
|
116
|
+
helper.resource.method(:delete),
|
117
|
+
{
|
118
|
+
return: '152'
|
119
|
+
},
|
120
|
+
{
|
121
|
+
id: $new_contact_id,
|
122
|
+
json: true,
|
123
|
+
}
|
124
|
+
)
|
125
|
+
|
126
|
+
expect(body).to be_a(Hash)
|
127
|
+
expect(body[:return]).to be_a(String)
|
128
|
+
end
|
129
|
+
end
|