elk 0.0.13 → 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.
@@ -1,4 +1,4 @@
1
1
  --colour
2
2
  --format progress
3
3
  --loadby mtime
4
- --reverse
4
+ --reverse
@@ -1,5 +1,3 @@
1
- require 'rubygems'
2
- require 'bundler/setup'
3
1
  require 'rspec'
4
2
  require 'webmock/rspec'
5
3
 
@@ -16,4 +14,12 @@ def configure_elk
16
14
  config.username = 'USERNAME'
17
15
  config.password = 'PASSWORD'
18
16
  end
19
- end
17
+ end
18
+
19
+ def get_headers
20
+ { "Accept" => "application/json" }
21
+ end
22
+
23
+ def post_headers
24
+ { "Accept" => "application/json", "Content-Type" => "application/x-www-form-urlencoded" }
25
+ end
@@ -0,0 +1,69 @@
1
+ require "spec_helper"
2
+ require "elk"
3
+
4
+ describe Elk::Client do
5
+ it { is_expected.to respond_to(:configure) }
6
+ it { is_expected.to respond_to(:base_url) }
7
+ it { is_expected.to respond_to(:base_domain) }
8
+ it { is_expected.to respond_to(:username) }
9
+ it { is_expected.to respond_to(:username=) }
10
+ it { is_expected.to respond_to(:password) }
11
+ it { is_expected.to respond_to(:password=) }
12
+
13
+ let(:username) { "username" }
14
+ let(:password) { "password" }
15
+
16
+ it "should accept username and password" do
17
+ client = Elk::Client.new(username: username, password: password)
18
+ expect(client.username).to eq(username)
19
+ expect(client.password).to eq(password)
20
+ end
21
+
22
+ describe ".base_url" do
23
+ context "detect missing username and/or password" do
24
+ context "when nothing is configured" do
25
+ specify do
26
+ subject.configure do |config|
27
+ config.username = nil
28
+ config.password = nil
29
+ end
30
+
31
+ expect { subject.base_url }.to raise_error(Elk::AuthError)
32
+ end
33
+ end
34
+
35
+ context "when username is missing" do
36
+ specify do
37
+ subject.configure do |config|
38
+ config.username = nil
39
+ config.password = "PASSWORD"
40
+ end
41
+
42
+ expect { subject.base_url }.to raise_error(Elk::AuthError)
43
+ end
44
+ end
45
+
46
+ context "when password is missing" do
47
+ specify do
48
+ subject.configure do |config|
49
+ config.username = "USERNAME"
50
+ config.password = nil
51
+ end
52
+
53
+ expect { subject.base_url }.to raise_error(Elk::AuthError)
54
+ end
55
+ end
56
+
57
+ context "when all is configured" do
58
+ specify do
59
+ subject.configure do |config|
60
+ config.username = "USERNAME"
61
+ config.password = "PASSWORD"
62
+ end
63
+
64
+ expect { subject.base_url }.not_to raise_error
65
+ end
66
+ end
67
+ end
68
+ end
69
+ end
@@ -0,0 +1,70 @@
1
+ require "spec_helper"
2
+ require "elk"
3
+
4
+ describe Elk do
5
+
6
+ subject { Elk }
7
+
8
+ it { is_expected.to respond_to(:client) }
9
+ it { is_expected.to respond_to(:configure) }
10
+ it { is_expected.to respond_to(:base_url) }
11
+ it { is_expected.to respond_to(:base_domain) }
12
+ it { is_expected.to respond_to(:username) }
13
+ it { is_expected.to respond_to(:username=) }
14
+ it { is_expected.to respond_to(:password) }
15
+ it { is_expected.to respond_to(:password=) }
16
+
17
+ describe ".client" do
18
+ it "should reuse the same client object" do
19
+ expect(Elk.client.object_id).to eq(Elk.client.object_id)
20
+ end
21
+ end
22
+
23
+ describe ".base_url" do
24
+ context "detect missing username and/or password" do
25
+ context "when nothing is configured" do
26
+ specify do
27
+ subject.configure do |config|
28
+ config.username = nil
29
+ config.password = nil
30
+ end
31
+
32
+ expect { subject.base_url }.to raise_error(Elk::AuthError)
33
+ end
34
+ end
35
+
36
+ context "when username is missing" do
37
+ specify do
38
+ subject.configure do |config|
39
+ config.username = nil
40
+ config.password = "PASSWORD"
41
+ end
42
+
43
+ expect { subject.base_url }.to raise_error(Elk::AuthError)
44
+ end
45
+ end
46
+
47
+ context "when password is missing" do
48
+ specify do
49
+ subject.configure do |config|
50
+ config.username = "USERNAME"
51
+ config.password = nil
52
+ end
53
+
54
+ expect { subject.base_url }.to raise_error(Elk::AuthError)
55
+ end
56
+ end
57
+
58
+ context "when all is configured" do
59
+ specify do
60
+ subject.configure do |config|
61
+ config.username = "USERNAME"
62
+ config.password = "PASSWORD"
63
+ end
64
+
65
+ expect { subject.base_url }.not_to raise_error
66
+ end
67
+ end
68
+ end
69
+ end
70
+ end
@@ -0,0 +1,93 @@
1
+ require "spec_helper"
2
+ require "elk"
3
+ require "json"
4
+
5
+ describe Elk::Number do
6
+ subject(:number) { described_class.new({}) }
7
+
8
+ let(:client) { instance_double(Elk::Client) }
9
+
10
+ describe "#new" do
11
+ context "when passing a client" do
12
+ subject(:number) { described_class.new(client: client) }
13
+
14
+ it "should use the passed in client" do
15
+ expect(number.client).to eq(client)
16
+ end
17
+ end
18
+
19
+ context "without passing a client" do
20
+ it "should instantiate a client" do
21
+ expect(number.client).to be_an(Elk::Client)
22
+ end
23
+ end
24
+ end
25
+
26
+ describe "#status" do
27
+ subject(:status) { described_class.new(active: active).status }
28
+
29
+ context "with an active number" do
30
+ let(:active) { "yes" }
31
+
32
+ it { is_expected.to eq(:active) }
33
+ end
34
+
35
+ context "with an deallocated number" do
36
+ let(:active) { "no" }
37
+
38
+ it { is_expected.to eq(:deallocated) }
39
+ end
40
+
41
+ context "without any status" do
42
+ let(:active) { }
43
+
44
+ it { is_expected.to eq(nil) }
45
+ end
46
+
47
+ context "with an unknown status" do
48
+ let(:active) { "bananas" }
49
+
50
+ it { is_expected.to eq(nil) }
51
+ end
52
+ end
53
+
54
+ describe ".allocate" do
55
+ let(:allocate_response) { double("Response", body: JSON.dump({}) ) }
56
+
57
+ context "when passing a client" do
58
+ it "should use the passed in client" do
59
+ expect(client).to receive(:post)
60
+ .with("/Numbers", country: "no") { allocate_response }
61
+ described_class.allocate(client: client, country: "no")
62
+ end
63
+ end
64
+
65
+ context "without passing a client" do
66
+ it "should instantiate a client" do
67
+ expect_any_instance_of(Elk::Client).to receive(:post)
68
+ .with("/Numbers", country: "no") { allocate_response }
69
+ described_class.allocate(country: "no")
70
+ end
71
+ end
72
+ end
73
+
74
+ describe ".all" do
75
+ let(:all_response) { double("Response", body: JSON.dump(data: []) ) }
76
+
77
+ context "when passing a client" do
78
+ it "should use the passed in client" do
79
+ expect(client).to receive(:get)
80
+ .with("/Numbers") { all_response }
81
+ described_class.all(client: client)
82
+ end
83
+ end
84
+
85
+ context "without passing a client" do
86
+ it "should instantiate a client" do
87
+ expect_any_instance_of(Elk::Client).to receive(:get)
88
+ .with("/Numbers") { all_response }
89
+ described_class.all
90
+ end
91
+ end
92
+ end
93
+ end
@@ -0,0 +1,66 @@
1
+ require "spec_helper"
2
+ require "elk"
3
+ require "json"
4
+
5
+ describe Elk::SMS do
6
+ subject(:sms) { described_class.new({}) }
7
+
8
+ let(:client) { instance_double(Elk::Client) }
9
+
10
+ describe "#new" do
11
+ context "when passing a client" do
12
+ subject(:sms) { described_class.new(client: client) }
13
+
14
+ it "should use the passed in client" do
15
+ expect(sms.client).to eq(client)
16
+ end
17
+ end
18
+
19
+ context "without passing a client" do
20
+ it "should instantiate a client" do
21
+ expect(sms.client).to be_an(Elk::Client)
22
+ end
23
+ end
24
+ end
25
+
26
+ describe ".send" do
27
+ let(:sms_response) { double("Response", body: JSON.dump({}) ) }
28
+
29
+ context "when passing a client" do
30
+ it "should use the passed in client" do
31
+ expect(client).to receive(:post)
32
+ .with("/SMS", from: "", to: "", message: "") { sms_response }
33
+ described_class.send(client: client, from: "", to: "", message: "")
34
+ end
35
+ end
36
+
37
+ context "without passing a client" do
38
+ it "should instantiate a client" do
39
+ expect_any_instance_of(Elk::Client).to receive(:post)
40
+ .with("/SMS", from: "", to: "", message: "") { sms_response }
41
+ described_class.send(from: "", to: "", message: "")
42
+ end
43
+ end
44
+
45
+ end
46
+
47
+ describe ".all" do
48
+ let(:all_response) { double("Response", body: JSON.dump(data: []) ) }
49
+
50
+ context "when passing a client" do
51
+ it "should use the passed in client" do
52
+ expect(client).to receive(:get)
53
+ .with("/SMS") { all_response }
54
+ described_class.all(client: client)
55
+ end
56
+ end
57
+
58
+ context "without passing a client" do
59
+ it "should instantiate a client" do
60
+ expect_any_instance_of(Elk::Client).to receive(:get)
61
+ .with("/SMS") { all_response }
62
+ described_class.all
63
+ end
64
+ end
65
+ end
66
+ end
@@ -0,0 +1,50 @@
1
+ require "spec_helper"
2
+ require "elk"
3
+
4
+ describe Elk::Util do
5
+ describe "#verify_parameters" do
6
+ let(:parameters) { { from: "mom", to: "god" } }
7
+
8
+ context "with all required parameters" do
9
+ let(:required_parameters) { [:from, :to] }
10
+
11
+ it "should not raise any exceptions" do
12
+ extend Elk::Util
13
+ expect {
14
+ verify_parameters(parameters, required_parameters)
15
+ }.to_not raise_error
16
+ end
17
+ end
18
+
19
+ context "with a missing required parameter" do
20
+ let(:required_parameters) { [:from, :to, :message] }
21
+
22
+ it "should raise missing parameter exception" do
23
+ extend Elk::Util
24
+ expect {
25
+ verify_parameters(parameters, required_parameters)
26
+ }.to raise_error(Elk::MissingParameter)
27
+ end
28
+ end
29
+ end
30
+
31
+ describe ".parse_json" do
32
+ subject { Elk::Util }
33
+
34
+ context "with empty object body" do
35
+ let(:body) { "{}" }
36
+
37
+ it "should return empty hash" do
38
+ expect(subject.parse_json(body)).to eq({})
39
+ end
40
+ end
41
+
42
+ context "with garbage json" do
43
+ let(:body) { fixture("bad_response_body.txt").read }
44
+
45
+ it "should raise bad response exception" do
46
+ expect { subject.parse_json(body) }.to raise_error(Elk::BadResponse)
47
+ end
48
+ end
49
+ end
50
+ end
metadata CHANGED
@@ -1,83 +1,69 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: elk
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.13
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
- - Johan Eckerstroem
7
+ - Johan Eckerström
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-11-19 00:00:00.000000000 Z
11
+ date: 2016-02-13 00:00:00.000000000 Z
12
12
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: multi_json
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - ~>
18
- - !ruby/object:Gem::Version
19
- version: '1.0'
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - ~>
25
- - !ruby/object:Gem::Version
26
- version: '1.0'
27
13
  - !ruby/object:Gem::Dependency
28
14
  name: rest-client
29
15
  requirement: !ruby/object:Gem::Requirement
30
16
  requirements:
31
- - - ~>
17
+ - - "~>"
32
18
  - !ruby/object:Gem::Version
33
19
  version: '1.6'
34
20
  type: :runtime
35
21
  prerelease: false
36
22
  version_requirements: !ruby/object:Gem::Requirement
37
23
  requirements:
38
- - - ~>
24
+ - - "~>"
39
25
  - !ruby/object:Gem::Version
40
26
  version: '1.6'
41
27
  - !ruby/object:Gem::Dependency
42
28
  name: rake
43
29
  requirement: !ruby/object:Gem::Requirement
44
30
  requirements:
45
- - - ~>
31
+ - - "~>"
46
32
  - !ruby/object:Gem::Version
47
33
  version: '10.0'
48
34
  type: :development
49
35
  prerelease: false
50
36
  version_requirements: !ruby/object:Gem::Requirement
51
37
  requirements:
52
- - - ~>
38
+ - - "~>"
53
39
  - !ruby/object:Gem::Version
54
40
  version: '10.0'
55
41
  - !ruby/object:Gem::Dependency
56
42
  name: rspec
57
43
  requirement: !ruby/object:Gem::Requirement
58
44
  requirements:
59
- - - ~>
45
+ - - "~>"
60
46
  - !ruby/object:Gem::Version
61
- version: '2.0'
47
+ version: '3.0'
62
48
  type: :development
63
49
  prerelease: false
64
50
  version_requirements: !ruby/object:Gem::Requirement
65
51
  requirements:
66
- - - ~>
52
+ - - "~>"
67
53
  - !ruby/object:Gem::Version
68
- version: '2.0'
54
+ version: '3.0'
69
55
  - !ruby/object:Gem::Dependency
70
56
  name: webmock
71
57
  requirement: !ruby/object:Gem::Requirement
72
58
  requirements:
73
- - - ~>
59
+ - - "~>"
74
60
  - !ruby/object:Gem::Version
75
61
  version: '1.0'
76
62
  type: :development
77
63
  prerelease: false
78
64
  version_requirements: !ruby/object:Gem::Requirement
79
65
  requirements:
80
- - - ~>
66
+ - - "~>"
81
67
  - !ruby/object:Gem::Version
82
68
  version: '1.0'
83
69
  description: Elk can be used to allocate a phone numbers, manage the numbers and send
@@ -89,16 +75,15 @@ extra_rdoc_files:
89
75
  - README.MD
90
76
  - MIT-LICENSE
91
77
  files:
92
- - README.MD
93
78
  - MIT-LICENSE
79
+ - README.MD
80
+ - lib/elk.rb
81
+ - lib/elk/client.rb
82
+ - lib/elk/error.rb
94
83
  - lib/elk/number.rb
95
84
  - lib/elk/sms.rb
96
85
  - lib/elk/util.rb
97
86
  - lib/elk/version.rb
98
- - lib/elk.rb
99
- - spec/elk/number_spec.rb
100
- - spec/elk/sms_spec.rb
101
- - spec/elk_spec.rb
102
87
  - spec/fixtures/allocates_a_number.txt
103
88
  - spec/fixtures/auth_error.txt
104
89
  - spec/fixtures/bad_response_body.txt
@@ -114,8 +99,15 @@ files:
114
99
  - spec/fixtures/server_error.txt
115
100
  - spec/fixtures/sms_history.txt
116
101
  - spec/fixtures/updates_a_number.txt
102
+ - spec/integration/number_spec.rb
103
+ - spec/integration/sms_spec.rb
117
104
  - spec/spec.opts
118
105
  - spec/spec_helper.rb
106
+ - spec/unit/client_spec.rb
107
+ - spec/unit/elk_spec.rb
108
+ - spec/unit/number_spec.rb
109
+ - spec/unit/sms_spec.rb
110
+ - spec/unit/utils_spec.rb
119
111
  homepage: https://github.com/jage/elk
120
112
  licenses:
121
113
  - MIT
@@ -126,18 +118,18 @@ require_paths:
126
118
  - lib
127
119
  required_ruby_version: !ruby/object:Gem::Requirement
128
120
  requirements:
129
- - - '>='
121
+ - - ">="
130
122
  - !ruby/object:Gem::Version
131
123
  version: 1.9.3
132
124
  required_rubygems_version: !ruby/object:Gem::Requirement
133
125
  requirements:
134
- - - '>='
126
+ - - ">="
135
127
  - !ruby/object:Gem::Version
136
128
  version: '0'
137
129
  requirements:
138
130
  - API account at 46elks.com
139
131
  rubyforge_project:
140
- rubygems_version: 2.0.3
132
+ rubygems_version: 2.4.5.1
141
133
  signing_key:
142
134
  specification_version: 4
143
135
  summary: Client library for 46elks SMS/MMS/Voice service.