elk 0.0.13 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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.