codelocks 2.0.3 → 3.0.0.pre.beta
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.env.test +3 -0
- data/.ruby-version +1 -1
- data/Gemfile +1 -1
- data/README.md +10 -0
- data/codelocks.gemspec +1 -1
- data/lib/codelocks.rb +3 -41
- data/lib/codelocks/client.rb +82 -0
- data/lib/codelocks/collection_proxy.rb +26 -0
- data/lib/codelocks/lock.rb +4 -6
- data/lib/codelocks/model.rb +29 -0
- data/lib/codelocks/net_code.rb +4 -4
- data/lib/codelocks/request.rb +4 -3
- data/lib/codelocks/version.rb +1 -1
- data/spec/codelocks/client_spec.rb +92 -0
- data/spec/codelocks/collection_proxy_spec.rb +32 -0
- data/spec/codelocks/lock_spec.rb +10 -8
- data/spec/codelocks/model_spec.rb +40 -0
- data/spec/codelocks/net_code_spec.rb +10 -8
- data/spec/codelocks/request_spec.rb +10 -8
- data/spec/codelocks/response_spec.rb +7 -5
- data/spec/codelocks_spec.rb +0 -64
- data/spec/spec_helper.rb +3 -3
- metadata +16 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d12d67e7bf9e7e0cb6597b6b551599635c426095
|
4
|
+
data.tar.gz: 0e7c79bf2018b276d820337d005f44ebfa4cc567
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 63038db7974ae0fc0bc9137b98a2d4c056945d0ff825e48db06daaabaf44d6c4cb43ea2f8027bd69f17bcb75e8ef367b1f6e2d7354b1ec6467d5b73a8b4150ed
|
7
|
+
data.tar.gz: d0e3dcfca9d37e0c7df4741a9315cf7cb1563bd46ce0d275f01a5d67c41dd6a6203dd1fc99b02c144f7c38980ac4f2f319f4ec6cf05011106fb9034943c6ae5d
|
data/.env.test
ADDED
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
ruby-2.
|
1
|
+
ruby-2.4.1
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -45,6 +45,16 @@ Codelocks.access_key = "argh"
|
|
45
45
|
|
46
46
|
API documentation with information on methods is [available on RubyDoc.info](http://www.rubydoc.info/github/kansohq/codelocks/master).
|
47
47
|
|
48
|
+
## Tests
|
49
|
+
|
50
|
+
The test suite can be run locally using the following commands:
|
51
|
+
|
52
|
+
```
|
53
|
+
$ cp .env.test .env
|
54
|
+
$ dotenv
|
55
|
+
$ bundle exec rspec
|
56
|
+
```
|
57
|
+
|
48
58
|
## Contributing
|
49
59
|
|
50
60
|
1. Fork it ( https://github.com/[my-github-username]/codelocks/fork )
|
data/codelocks.gemspec
CHANGED
@@ -7,7 +7,7 @@ Gem::Specification.new do |spec|
|
|
7
7
|
spec.name = "codelocks"
|
8
8
|
spec.version = Codelocks::VERSION
|
9
9
|
spec.authors = ["Robert May"]
|
10
|
-
spec.email = ["
|
10
|
+
spec.email = ["rob@piratestudios.co.uk"]
|
11
11
|
spec.summary = %q{A simple API wrapper for the CodeLocks API}
|
12
12
|
spec.description = %q{A wrapper for the CodeLocks NetCode API used to generate lock codes.}
|
13
13
|
spec.homepage = "http://www.codelocks.co.uk"
|
data/lib/codelocks.rb
CHANGED
@@ -1,6 +1,9 @@
|
|
1
1
|
require "faraday"
|
2
2
|
|
3
3
|
require "codelocks/version"
|
4
|
+
require "codelocks/client"
|
5
|
+
require "codelocks/collection_proxy"
|
6
|
+
require "codelocks/model"
|
4
7
|
require "codelocks/request"
|
5
8
|
require "codelocks/response"
|
6
9
|
require "codelocks/lock"
|
@@ -8,45 +11,4 @@ require "codelocks/net_code"
|
|
8
11
|
|
9
12
|
module Codelocks
|
10
13
|
class CodelocksError < StandardError; end
|
11
|
-
|
12
|
-
class << self
|
13
|
-
attr_writer :base_uri, :api_key, :access_key
|
14
|
-
|
15
|
-
# The base URI used for API request
|
16
|
-
#
|
17
|
-
# @return [String] the base URI
|
18
|
-
|
19
|
-
def base_uri
|
20
|
-
@base_uri || ENV['CODELOCKS_BASE_URI'] || (raise CodelocksError.new("No base URI specified"))
|
21
|
-
end
|
22
|
-
|
23
|
-
# Return the configured API key or raise an exception
|
24
|
-
#
|
25
|
-
# @return [String] the API key
|
26
|
-
|
27
|
-
def api_key
|
28
|
-
@api_key || ENV['CODELOCKS_API_KEY'] || (raise CodelocksError.new("No API key specified"))
|
29
|
-
end
|
30
|
-
|
31
|
-
# Return the access key. This is tied to the K3 Connect App.
|
32
|
-
# This can be nil, as for certain models of locks you will provide a 6 digit ID instead.
|
33
|
-
#
|
34
|
-
# @return [String] the access key
|
35
|
-
|
36
|
-
def access_key
|
37
|
-
@access_key || ENV['CODELOCKS_ACCESS_KEY']
|
38
|
-
end
|
39
|
-
|
40
|
-
# Faraday connection object
|
41
|
-
#
|
42
|
-
# @return [Faraday]
|
43
|
-
|
44
|
-
def connection
|
45
|
-
@connection ||= Faraday.new(url: base_uri) do |faraday|
|
46
|
-
faraday.request :url_encoded
|
47
|
-
faraday.response :logger
|
48
|
-
faraday.adapter Faraday.default_adapter
|
49
|
-
end
|
50
|
-
end
|
51
|
-
end
|
52
14
|
end
|
@@ -0,0 +1,82 @@
|
|
1
|
+
module Codelocks
|
2
|
+
class Client
|
3
|
+
attr_writer :base_uri, :api_key, :access_key
|
4
|
+
|
5
|
+
# The base URI used for API request
|
6
|
+
#
|
7
|
+
# @return [String] the base URI
|
8
|
+
|
9
|
+
def base_uri
|
10
|
+
@base_uri || ENV['CODELOCKS_BASE_URI'] || (raise CodelocksError.new("No base URI specified"))
|
11
|
+
end
|
12
|
+
|
13
|
+
# Return the configured API key or raise an exception
|
14
|
+
#
|
15
|
+
# @return [String] the API key
|
16
|
+
|
17
|
+
def api_key
|
18
|
+
@api_key || ENV['CODELOCKS_API_KEY'] || (raise CodelocksError.new("No API key specified"))
|
19
|
+
end
|
20
|
+
|
21
|
+
# Return the access key. This is tied to the K3 Connect App.
|
22
|
+
# This can be nil, as for certain models of locks you will provide a 6 digit ID instead.
|
23
|
+
#
|
24
|
+
# @return [String] the access key
|
25
|
+
|
26
|
+
def access_key
|
27
|
+
@access_key || ENV['CODELOCKS_ACCESS_KEY']
|
28
|
+
end
|
29
|
+
|
30
|
+
# Faraday connection object
|
31
|
+
#
|
32
|
+
# @return [Faraday]
|
33
|
+
|
34
|
+
def connection
|
35
|
+
@connection ||= Faraday.new(url: base_uri) do |faraday|
|
36
|
+
faraday.request :url_encoded
|
37
|
+
faraday.response :logger
|
38
|
+
faraday.adapter Faraday.default_adapter
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
# Set configuration variables on instantiation
|
43
|
+
#
|
44
|
+
# @return [Codelocks::Client]
|
45
|
+
|
46
|
+
def initialize(attributes = {})
|
47
|
+
attributes.each do |key, val|
|
48
|
+
setter = :"#{key}="
|
49
|
+
|
50
|
+
if respond_to?(setter)
|
51
|
+
send(setter, val)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
self
|
56
|
+
end
|
57
|
+
|
58
|
+
# Proxy for the requests model
|
59
|
+
#
|
60
|
+
# @return [CollectionProxy]
|
61
|
+
|
62
|
+
def requests
|
63
|
+
@request_collection ||= CollectionProxy.new(model: Request, client: self)
|
64
|
+
end
|
65
|
+
|
66
|
+
# Proxy for the netcodes model
|
67
|
+
#
|
68
|
+
# @return [CollectionProxy]
|
69
|
+
|
70
|
+
def net_codes
|
71
|
+
@net_code_collection ||= CollectionProxy.new(model: NetCode, client: self)
|
72
|
+
end
|
73
|
+
|
74
|
+
# Proxy for the locks model
|
75
|
+
#
|
76
|
+
# @return [CollectionProxy]
|
77
|
+
|
78
|
+
def locks
|
79
|
+
@lock_collection ||= CollectionProxy.new(model: Lock, client: self)
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module Codelocks
|
2
|
+
class CollectionProxy
|
3
|
+
extend Forwardable
|
4
|
+
|
5
|
+
# @return [Client]
|
6
|
+
attr_accessor :client
|
7
|
+
|
8
|
+
# @return [Lock, NetCode, Request]
|
9
|
+
attr_accessor :model
|
10
|
+
|
11
|
+
def_delegators :@model, :create, :all
|
12
|
+
|
13
|
+
# Set configuration variables on instantiation
|
14
|
+
#
|
15
|
+
# @return [Codelocks::CollectionProxy]
|
16
|
+
|
17
|
+
def initialize(client: nil, model: nil)
|
18
|
+
self.client = client
|
19
|
+
self.model = model
|
20
|
+
|
21
|
+
model.collection_proxy = self
|
22
|
+
|
23
|
+
self
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
data/lib/codelocks/lock.rb
CHANGED
@@ -1,17 +1,15 @@
|
|
1
1
|
module Codelocks
|
2
|
-
class Lock
|
2
|
+
class Lock < Model
|
3
3
|
class << self
|
4
4
|
# Fetch a list of locks. Requires the access key env var to be set
|
5
5
|
#
|
6
6
|
# @return [Codelocks::NetCode::Response]
|
7
7
|
|
8
8
|
def all
|
9
|
-
|
10
|
-
raise CodelocksError.new("An access key must be provided")
|
11
|
-
end
|
9
|
+
super
|
12
10
|
|
13
|
-
|
14
|
-
"accesskey":
|
11
|
+
client.requests.create("lock",
|
12
|
+
"accesskey": client.access_key
|
15
13
|
)
|
16
14
|
end
|
17
15
|
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module Codelocks
|
2
|
+
class Model
|
3
|
+
extend Forwardable
|
4
|
+
|
5
|
+
# @return [Client]
|
6
|
+
|
7
|
+
def client
|
8
|
+
self.class.client
|
9
|
+
end
|
10
|
+
|
11
|
+
class << self
|
12
|
+
extend Forwardable
|
13
|
+
|
14
|
+
# @return [CollectionProxy]
|
15
|
+
attr_accessor :collection_proxy
|
16
|
+
|
17
|
+
def_delegator :@collection_proxy, :client
|
18
|
+
|
19
|
+
def all
|
20
|
+
if !client.access_key
|
21
|
+
raise CodelocksError.new("An access key must be provided")
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def create
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
data/lib/codelocks/net_code.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
module Codelocks
|
2
|
-
class NetCode
|
2
|
+
class NetCode < Model
|
3
3
|
class << self
|
4
4
|
# Predefined method for generating a new NetCode
|
5
5
|
#
|
@@ -12,14 +12,14 @@ module Codelocks
|
|
12
12
|
#
|
13
13
|
# @return [Codelocks::NetCode::Response]
|
14
14
|
|
15
|
-
def
|
15
|
+
def create(opts = {})
|
16
16
|
netcode = new(opts)
|
17
17
|
|
18
18
|
if !netcode.identifier
|
19
19
|
raise CodelocksError.new("Either a lock identifier or an access key must be provided")
|
20
20
|
end
|
21
21
|
|
22
|
-
|
22
|
+
client.requests.create("netcode/#{netcode.lock_id}",
|
23
23
|
"id": netcode.lock_id,
|
24
24
|
"start": netcode.start_datetime,
|
25
25
|
"duration": netcode.duration_id,
|
@@ -52,7 +52,7 @@ module Codelocks
|
|
52
52
|
# @return [String]
|
53
53
|
|
54
54
|
def identifier
|
55
|
-
opts[:identifier] ||
|
55
|
+
opts[:identifier] || client.access_key
|
56
56
|
end
|
57
57
|
|
58
58
|
# String representing the start date in YYYY-MM-DD format
|
data/lib/codelocks/request.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
module Codelocks
|
2
|
-
class Request
|
2
|
+
class Request < Model
|
3
3
|
class << self
|
4
4
|
# Perform a request against the NetCode API
|
5
5
|
#
|
@@ -9,14 +9,15 @@ module Codelocks
|
|
9
9
|
# @return [Codelocks::NetCode::Response]
|
10
10
|
|
11
11
|
def create(path, params = {})
|
12
|
-
response =
|
13
|
-
req.headers['x-api-key'] =
|
12
|
+
response = client.connection.get(path, default_params.merge(params)) do |req|
|
13
|
+
req.headers['x-api-key'] = client.api_key
|
14
14
|
end
|
15
15
|
|
16
16
|
Response.new(response)
|
17
17
|
end
|
18
18
|
|
19
19
|
private
|
20
|
+
|
20
21
|
# The default params used in NetCode endpoint requests
|
21
22
|
#
|
22
23
|
# @return [Hash]
|
data/lib/codelocks/version.rb
CHANGED
@@ -0,0 +1,92 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Codelocks::Client do
|
4
|
+
subject(:client) do
|
5
|
+
Codelocks::Client.new(
|
6
|
+
base_uri: ENV["CODELOCKS_BASE_URI"] || "wibble",
|
7
|
+
api_key: ENV["CODELOCKS_API_KEY"] || "wobble"
|
8
|
+
)
|
9
|
+
end
|
10
|
+
|
11
|
+
describe "#base_uri" do
|
12
|
+
subject { client.base_uri }
|
13
|
+
|
14
|
+
before { allow(ENV).to receive(:[]) { nil } }
|
15
|
+
|
16
|
+
context "is present" do
|
17
|
+
before { client.base_uri = "test" }
|
18
|
+
|
19
|
+
it { is_expected.to eq("test") }
|
20
|
+
end
|
21
|
+
|
22
|
+
context "is not present" do
|
23
|
+
before { client.base_uri = nil }
|
24
|
+
|
25
|
+
it "raises an exception" do
|
26
|
+
expect { subject }.to raise_error(Codelocks::CodelocksError)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
describe "#api_key" do
|
32
|
+
subject { client.api_key }
|
33
|
+
|
34
|
+
before { allow(ENV).to receive(:[]) { nil } }
|
35
|
+
|
36
|
+
context "is present" do
|
37
|
+
before { client.api_key = "test" }
|
38
|
+
|
39
|
+
it { is_expected.to eq("test") }
|
40
|
+
end
|
41
|
+
|
42
|
+
context "is not present" do
|
43
|
+
before { client.api_key = nil }
|
44
|
+
|
45
|
+
it "raises an exception" do
|
46
|
+
expect { subject }.to raise_error(Codelocks::CodelocksError)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
describe "#access_key" do
|
52
|
+
subject { client.access_key }
|
53
|
+
|
54
|
+
before { allow(ENV).to receive(:[]) { nil } }
|
55
|
+
|
56
|
+
context "is present" do
|
57
|
+
before { client.access_key = "test" }
|
58
|
+
|
59
|
+
it { is_expected.to eq("test") }
|
60
|
+
end
|
61
|
+
|
62
|
+
context "is not present" do
|
63
|
+
before { client.access_key = nil }
|
64
|
+
|
65
|
+
it { is_expected.to eq(nil) }
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
describe "#connection" do
|
70
|
+
subject { client.connection }
|
71
|
+
|
72
|
+
it { is_expected.to be_a(Faraday::Connection) }
|
73
|
+
end
|
74
|
+
|
75
|
+
describe "#requests" do
|
76
|
+
subject { client.requests }
|
77
|
+
|
78
|
+
it { is_expected.to be_a(Codelocks::CollectionProxy) }
|
79
|
+
end
|
80
|
+
|
81
|
+
describe "#net_codes" do
|
82
|
+
subject { client.net_codes }
|
83
|
+
|
84
|
+
it { is_expected.to be_a(Codelocks::CollectionProxy) }
|
85
|
+
end
|
86
|
+
|
87
|
+
describe "#locks" do
|
88
|
+
subject { client.locks }
|
89
|
+
|
90
|
+
it { is_expected.to be_a(Codelocks::CollectionProxy) }
|
91
|
+
end
|
92
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Codelocks::CollectionProxy do
|
4
|
+
subject(:proxy) { Codelocks::CollectionProxy.new(model: model, client: client) }
|
5
|
+
let(:client) { Codelocks::Client.new }
|
6
|
+
let(:model) { Codelocks::Model }
|
7
|
+
|
8
|
+
describe "attribute accessors" do
|
9
|
+
[:client, :model].each do |attr|
|
10
|
+
it { is_expected.to respond_to(attr) }
|
11
|
+
it { is_expected.to respond_to(:"#{attr}=") }
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
describe "#initialize" do
|
16
|
+
subject { proxy.send(:initialize, client: client, model: model) }
|
17
|
+
|
18
|
+
after { subject }
|
19
|
+
|
20
|
+
it "sets the client" do
|
21
|
+
expect(proxy).to receive(:client=).with(client)
|
22
|
+
end
|
23
|
+
|
24
|
+
it "sets the model" do
|
25
|
+
expect(proxy).to receive(:model=).with(model)
|
26
|
+
end
|
27
|
+
|
28
|
+
it "sets itself as the model's proxy" do
|
29
|
+
expect(model).to receive(:collection_proxy=).with(proxy)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
data/spec/codelocks/lock_spec.rb
CHANGED
@@ -1,17 +1,19 @@
|
|
1
1
|
require "spec_helper"
|
2
2
|
|
3
3
|
describe Codelocks::Lock do
|
4
|
-
|
5
|
-
|
4
|
+
let(:client) do
|
5
|
+
Codelocks::Client.new(
|
6
|
+
base_uri: ENV["CODELOCKS_BASE_URI"] || "wibble",
|
7
|
+
api_key: ENV["CODELOCKS_API_KEY"] || "wobble"
|
8
|
+
)
|
9
|
+
end
|
6
10
|
|
7
|
-
|
8
|
-
|
9
|
-
Codelocks.api_key = ENV["CODELOCKS_API_KEY"] || "wobble"
|
10
|
-
end
|
11
|
+
describe ".all" do
|
12
|
+
subject { client.locks.all }
|
11
13
|
|
12
14
|
context "valid access key" do
|
13
15
|
before do
|
14
|
-
|
16
|
+
client.access_key = ENV["CODELOCKS_ACCESS_KEY"] || "wubble"
|
15
17
|
end
|
16
18
|
|
17
19
|
around(:each) do |example|
|
@@ -33,7 +35,7 @@ describe Codelocks::Lock do
|
|
33
35
|
|
34
36
|
context "invalid access key" do
|
35
37
|
before do
|
36
|
-
|
38
|
+
client.access_key = "abracadabra"
|
37
39
|
end
|
38
40
|
|
39
41
|
around(:each) do |example|
|
@@ -0,0 +1,40 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Codelocks::Model do
|
4
|
+
let(:client) { Codelocks::Client.new }
|
5
|
+
let(:proxy) { Codelocks::CollectionProxy.new(model: Codelocks::Model, client: client) }
|
6
|
+
|
7
|
+
before do
|
8
|
+
Codelocks::Model.collection_proxy = proxy
|
9
|
+
end
|
10
|
+
|
11
|
+
describe "instance methods" do
|
12
|
+
subject(:model) { Codelocks::Model.new }
|
13
|
+
|
14
|
+
describe "#client" do
|
15
|
+
subject { model.client }
|
16
|
+
|
17
|
+
it { is_expected.to eq(client) }
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
describe "class methods" do
|
22
|
+
subject { Codelocks::Model }
|
23
|
+
|
24
|
+
describe ".all" do
|
25
|
+
it { is_expected.to respond_to(:all) }
|
26
|
+
|
27
|
+
context "access key isn't set" do
|
28
|
+
before { allow(client).to receive(:access_key) { nil } }
|
29
|
+
|
30
|
+
it "raises an error" do
|
31
|
+
expect { subject.all }.to raise_error(Codelocks::CodelocksError)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
describe ".create" do
|
37
|
+
it { is_expected.to respond_to(:create) }
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -1,18 +1,20 @@
|
|
1
1
|
require "spec_helper"
|
2
2
|
|
3
3
|
describe Codelocks::NetCode do
|
4
|
-
|
4
|
+
let(:client) do
|
5
|
+
Codelocks::Client.new(
|
6
|
+
base_uri: ENV["CODELOCKS_BASE_URI"] || "wibble",
|
7
|
+
api_key: ENV["CODELOCKS_API_KEY"] || "wobble",
|
8
|
+
access_key: ENV["CODELOCKS_ACCESS_KEY"] || "wubble"
|
9
|
+
)
|
10
|
+
end
|
11
|
+
|
12
|
+
describe ".create" do
|
5
13
|
let(:lock_id) { nil }
|
6
14
|
let(:start_time) { Time.now }
|
7
15
|
let(:duration) { 1 }
|
8
16
|
|
9
|
-
subject {
|
10
|
-
|
11
|
-
before do
|
12
|
-
Codelocks.base_uri = ENV["CODELOCKS_BASE_URI"] || "wibble"
|
13
|
-
Codelocks.api_key = ENV["CODELOCKS_API_KEY"] || "wobble"
|
14
|
-
Codelocks.access_key = ENV["CODELOCKS_ACCESS_KEY"] || "wubble"
|
15
|
-
end
|
17
|
+
subject { client.net_codes.create(lock_id: lock_id, start_time: start_time, duration: duration) }
|
16
18
|
|
17
19
|
context "valid lock ID" do
|
18
20
|
let(:lock_id) { ENV["CODELOCKS_LOCK_ID"] || "valid" }
|
@@ -1,9 +1,11 @@
|
|
1
1
|
require "spec_helper"
|
2
2
|
|
3
3
|
describe Codelocks::Request do
|
4
|
-
|
5
|
-
Codelocks.
|
6
|
-
|
4
|
+
let(:client) do
|
5
|
+
Codelocks::Client.new(
|
6
|
+
base_uri: ENV["CODELOCKS_BASE_URI"] || "wibble",
|
7
|
+
api_key: ENV["CODELOCKS_API_KEY"] || "wobble"
|
8
|
+
)
|
7
9
|
end
|
8
10
|
|
9
11
|
describe "#create" do
|
@@ -21,19 +23,19 @@ describe Codelocks::Request do
|
|
21
23
|
let(:path) { "netcode/#{params[:id]}" }
|
22
24
|
|
23
25
|
before do
|
24
|
-
allow(
|
25
|
-
allow(
|
26
|
+
allow(client.connection).to receive(:get) { response }
|
27
|
+
allow(client.requests.model).to receive(:default_params) { default_params }
|
26
28
|
end
|
27
29
|
|
28
30
|
|
29
31
|
it "performs a get request" do
|
30
|
-
expect(
|
31
|
-
|
32
|
+
expect(client.connection).to receive(:get).with(path, all_params)
|
33
|
+
client.requests.create(path, params)
|
32
34
|
end
|
33
35
|
|
34
36
|
it "returns a response object" do
|
35
37
|
expect(
|
36
|
-
|
38
|
+
client.requests.create(path, params)
|
37
39
|
).to be_a(Codelocks::Response)
|
38
40
|
end
|
39
41
|
end
|
@@ -1,14 +1,16 @@
|
|
1
1
|
require "spec_helper"
|
2
2
|
|
3
3
|
describe Codelocks::Response do
|
4
|
+
let(:client) do
|
5
|
+
Codelocks::Client.new(
|
6
|
+
base_uri: ENV["CODELOCKS_BASE_URI"] || "wibble",
|
7
|
+
api_key: ENV["CODELOCKS_API_KEY"] || "wobble"
|
8
|
+
)
|
9
|
+
end
|
10
|
+
|
4
11
|
let(:response) { Codelocks::Response.new(faraday_response) }
|
5
12
|
let(:faraday_response) { double('faraday_response', success?: true, body: '{"test": "thing"}') }
|
6
13
|
|
7
|
-
before do
|
8
|
-
Codelocks.base_uri = "http://wobble.com/"
|
9
|
-
Codelocks.api_key = "wibble"
|
10
|
-
end
|
11
|
-
|
12
14
|
describe "#initialize" do
|
13
15
|
it "sets the response instance variable" do
|
14
16
|
expect(response.response).to eq(faraday_response)
|
data/spec/codelocks_spec.rb
CHANGED
@@ -1,68 +1,4 @@
|
|
1
1
|
require "spec_helper"
|
2
2
|
|
3
3
|
describe Codelocks do
|
4
|
-
describe "#base_uri" do
|
5
|
-
subject { Codelocks.base_uri }
|
6
|
-
|
7
|
-
before { allow(ENV).to receive(:[]) { nil } }
|
8
|
-
|
9
|
-
context "is present" do
|
10
|
-
before { Codelocks.base_uri = "test" }
|
11
|
-
|
12
|
-
it { is_expected.to eq("test") }
|
13
|
-
end
|
14
|
-
|
15
|
-
context "is not present" do
|
16
|
-
before { Codelocks.base_uri = nil }
|
17
|
-
|
18
|
-
it "raises an exception" do
|
19
|
-
expect { subject }.to raise_error(Codelocks::CodelocksError)
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
describe "#api_key" do
|
25
|
-
subject { Codelocks.api_key }
|
26
|
-
|
27
|
-
before { allow(ENV).to receive(:[]) { nil } }
|
28
|
-
|
29
|
-
context "is present" do
|
30
|
-
before { Codelocks.api_key = "test" }
|
31
|
-
|
32
|
-
it { is_expected.to eq("test") }
|
33
|
-
end
|
34
|
-
|
35
|
-
context "is not present" do
|
36
|
-
before { Codelocks.api_key = nil }
|
37
|
-
|
38
|
-
it "raises an exception" do
|
39
|
-
expect { subject }.to raise_error(Codelocks::CodelocksError)
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
44
|
-
describe "#access_key" do
|
45
|
-
subject { Codelocks.access_key }
|
46
|
-
|
47
|
-
before { allow(ENV).to receive(:[]) { nil } }
|
48
|
-
|
49
|
-
context "is present" do
|
50
|
-
before { Codelocks.access_key = "test" }
|
51
|
-
|
52
|
-
it { is_expected.to eq("test") }
|
53
|
-
end
|
54
|
-
|
55
|
-
context "is not present" do
|
56
|
-
before { Codelocks.access_key = nil }
|
57
|
-
|
58
|
-
it { is_expected.to eq(nil) }
|
59
|
-
end
|
60
|
-
end
|
61
|
-
|
62
|
-
|
63
|
-
describe "#connection" do
|
64
|
-
subject { Codelocks.connection }
|
65
|
-
|
66
|
-
it { is_expected.to be_a(Faraday::Connection) }
|
67
|
-
end
|
68
4
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -8,8 +8,8 @@ require "pry"
|
|
8
8
|
VCR.configure do |config|
|
9
9
|
config.cassette_library_dir = "spec/fixtures/vcr_cassettes"
|
10
10
|
config.hook_into :faraday
|
11
|
-
config.filter_sensitive_data("<BASE_URI>") {
|
12
|
-
config.filter_sensitive_data("<API_KEY>") {
|
13
|
-
config.filter_sensitive_data("<ACCESS_KEY>") {
|
11
|
+
config.filter_sensitive_data("<BASE_URI>") { ENV['CODELOCKS_BASE_URI'] }
|
12
|
+
config.filter_sensitive_data("<API_KEY>") { ENV['CODELOCKS_API_KEY'] }
|
13
|
+
config.filter_sensitive_data("<ACCESS_KEY>") { ENV['CODELOCKS_ACCESS_KEY'] }
|
14
14
|
config.filter_sensitive_data("LOCK_ID") { ENV['CODELOCKS_LOCK_ID'] }
|
15
15
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: codelocks
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 3.0.0.pre.beta
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Robert May
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-11-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -110,11 +110,12 @@ dependencies:
|
|
110
110
|
version: '0.9'
|
111
111
|
description: A wrapper for the CodeLocks NetCode API used to generate lock codes.
|
112
112
|
email:
|
113
|
-
-
|
113
|
+
- rob@piratestudios.co.uk
|
114
114
|
executables: []
|
115
115
|
extensions: []
|
116
116
|
extra_rdoc_files: []
|
117
117
|
files:
|
118
|
+
- ".env.test"
|
118
119
|
- ".gitignore"
|
119
120
|
- ".ruby-version"
|
120
121
|
- Gemfile
|
@@ -123,12 +124,18 @@ files:
|
|
123
124
|
- Rakefile
|
124
125
|
- codelocks.gemspec
|
125
126
|
- lib/codelocks.rb
|
127
|
+
- lib/codelocks/client.rb
|
128
|
+
- lib/codelocks/collection_proxy.rb
|
126
129
|
- lib/codelocks/lock.rb
|
130
|
+
- lib/codelocks/model.rb
|
127
131
|
- lib/codelocks/net_code.rb
|
128
132
|
- lib/codelocks/request.rb
|
129
133
|
- lib/codelocks/response.rb
|
130
134
|
- lib/codelocks/version.rb
|
135
|
+
- spec/codelocks/client_spec.rb
|
136
|
+
- spec/codelocks/collection_proxy_spec.rb
|
131
137
|
- spec/codelocks/lock_spec.rb
|
138
|
+
- spec/codelocks/model_spec.rb
|
132
139
|
- spec/codelocks/net_code_spec.rb
|
133
140
|
- spec/codelocks/request_spec.rb
|
134
141
|
- spec/codelocks/response_spec.rb
|
@@ -153,17 +160,20 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
153
160
|
version: '2.2'
|
154
161
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
155
162
|
requirements:
|
156
|
-
- - "
|
163
|
+
- - ">"
|
157
164
|
- !ruby/object:Gem::Version
|
158
|
-
version:
|
165
|
+
version: 1.3.1
|
159
166
|
requirements: []
|
160
167
|
rubyforge_project:
|
161
|
-
rubygems_version: 2.
|
168
|
+
rubygems_version: 2.6.13
|
162
169
|
signing_key:
|
163
170
|
specification_version: 4
|
164
171
|
summary: A simple API wrapper for the CodeLocks API
|
165
172
|
test_files:
|
173
|
+
- spec/codelocks/client_spec.rb
|
174
|
+
- spec/codelocks/collection_proxy_spec.rb
|
166
175
|
- spec/codelocks/lock_spec.rb
|
176
|
+
- spec/codelocks/model_spec.rb
|
167
177
|
- spec/codelocks/net_code_spec.rb
|
168
178
|
- spec/codelocks/request_spec.rb
|
169
179
|
- spec/codelocks/response_spec.rb
|
@@ -173,4 +183,3 @@ test_files:
|
|
173
183
|
- spec/fixtures/vcr_cassettes/valid_access_key.yml
|
174
184
|
- spec/fixtures/vcr_cassettes/valid_lock_id.yml
|
175
185
|
- spec/spec_helper.rb
|
176
|
-
has_rdoc:
|