authenticator-client 0.0.1 → 0.0.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a69ccae84065fcba5e7cef9403baaaf1fe304467
4
- data.tar.gz: 0af8c0a607f41f51f875d2868f853031565c767d
3
+ metadata.gz: cd9129412c0abea844885d8fe90ace9b3d54a979
4
+ data.tar.gz: 032fc0192b99e8c46778bff82b2463545dc7bccb
5
5
  SHA512:
6
- metadata.gz: e0085a2d4bdfb54d1e55c2f4f8212eb0b6ba70da67e5fdb49e80f4ecea80b3c1e4d7af0e174b93c26f53de9a1a3d0b766e4d93b766648eb1e3b889a0cbdc5bb9
7
- data.tar.gz: 57b4c784d33407da03c91c2405bfd38c81af6df12e416274c450fd91b89c672619da51dc10aedde9e86fa2f751d02055dcf45fe7d1f7ec45f42f9ad119099c49
6
+ metadata.gz: 29cf3f15a440e926218eb9a5be081250237ba7049149267780498c2b17651fb0c1c7053ad0207d94abc0912c0cae9d1f9476d20f267cb3ccf2b93ab8fcc3675b
7
+ data.tar.gz: e30fc2bb3983fc6be64aabf729535e38eb72209ed0529fa8c0e9aac581d46541c8b84c90a49e1f8c68ecade932a789beea74e2758d49e21467eaa80a122666ca
data/.travis.yml ADDED
@@ -0,0 +1,22 @@
1
+ language: ruby
2
+
3
+ rvm:
4
+ - 2.1.0
5
+
6
+ gemfile:
7
+ - Gemfile
8
+
9
+ cache: bundler
10
+
11
+ env:
12
+ matrix:
13
+ - TEST_SUITE="spec"
14
+
15
+
16
+ before_script: "bundle update"
17
+
18
+ script:
19
+ - bundle exec rake $TEST_SUITE
20
+
21
+ notifications:
22
+ email: false
data/README.md CHANGED
@@ -1,6 +1,12 @@
1
1
  # Authenticator::Client
2
+ [![Build Status](https://travis-ci.org/johnmcconnell/authenticator-client.svg?branch=master)]
3
+ (https://travis-ci.org/johnmcconnell/authenticator-client)
4
+ [![Coverage
5
+ Status](https://coveralls.io/repos/johnmcconnell/authenticator-client/badge.png?branch=master)](https://coveralls.io/r/johnmcconnell/authenticator-client?branch=master)
2
6
 
3
- TODO: Write a gem description
7
+ ## Description
8
+ This gem is designed to be used with
9
+ [Account Authenticator](https://account-authenticator.herokuapp.com/)
4
10
 
5
11
  ## Installation
6
12
 
@@ -20,7 +26,70 @@ Or install it yourself as:
20
26
 
21
27
  ## Usage
22
28
 
23
- TODO: Write usage instructions here
29
+ ### Creating a client:
30
+
31
+ ```
32
+ config = {
33
+ api_key: 'api_key',
34
+ api_password: 'api_password',
35
+ host: 'http://account-authenticator.herokuapp.com'
36
+ }
37
+
38
+ Authenticator::Client.register_config(:config_key, config)
39
+ Authenticator::Client.new(:config_key)
40
+
41
+ ```
42
+
43
+ ### Creating an account:
44
+
45
+ ```
46
+ client.create(Account.new(username, password))
47
+ #=> '{
48
+ "id":6,
49
+ "username":"new_username",
50
+ "created_at":"2015-01-04T20:36:28.339Z",
51
+ "updated_at":"2015-01-04T20:36:28.339Z"
52
+ }'
53
+ ```
54
+
55
+ ### Authenticating an account:
56
+
57
+ ```
58
+ client.authenticate(account)
59
+ #=> '{"authenticated":true}'
60
+ ```
61
+
62
+ ### Reading accounts:
63
+
64
+ ```
65
+ client.all
66
+ #=> '{"accounts":[
67
+ { "id":6,
68
+ "username":"new_username",
69
+ "created_at":"2015-01-04T20:36:28.339Z",
70
+ "updated_at":"2015-01-04T20:36:28.339Z" }
71
+ ]}'
72
+
73
+ ```
74
+
75
+ ### Updating an account:
76
+
77
+ ```
78
+ client.update(id, account)
79
+ #=> '{
80
+ "id":7,
81
+ "username":"new_username_1",
82
+ "created_at":"2015-01-04T20:36:28.949Z",
83
+ "updated_at":"2015-01-04T20:36:28.949Z"
84
+ }'
85
+ ```
86
+
87
+ ### Deleting an account:
88
+
89
+ ```
90
+ client.destroy(id)
91
+ #=> '{"id":10}'
92
+ ```
24
93
 
25
94
  ## Contributing
26
95
 
@@ -19,8 +19,11 @@ Gem::Specification.new do |spec|
19
19
  spec.require_paths = ["lib"]
20
20
 
21
21
  spec.add_dependency 'rest-client', '~> 1.7.2'
22
+ spec.add_dependency 'json_client', '~> 0.0.1'
23
+
24
+ spec.add_development_dependency "simplecov", "~> 0.8.0"
25
+ spec.add_development_dependency "coveralls", "~> 0.7.0"
22
26
 
23
- spec.add_development_dependency "bundler", "~> 1.7"
24
27
  spec.add_development_dependency "rake", "~> 10.0"
25
28
  spec.add_development_dependency "rspec"
26
29
  spec.add_development_dependency "rspec-collection_matchers"
@@ -15,6 +15,7 @@ module Authenticator
15
15
  }
16
16
  }
17
17
  end
18
+ alias_method :to_h, :to_params
18
19
  end
19
20
  end
20
21
  end
@@ -0,0 +1,15 @@
1
+ require 'json_client'
2
+
3
+ module Authenticator
4
+ module Client
5
+ class AuthenticateResponse < JsonClient::BaseResponses::Response
6
+ def initialize(body, code)
7
+ super
8
+ end
9
+
10
+ def auth_success?
11
+ json['authenticated'] == true
12
+ end
13
+ end
14
+ end
15
+ end
@@ -1,91 +1,32 @@
1
1
  require 'rest_client'
2
+ require 'json_client'
3
+ require_relative 'authenticate_response'
2
4
 
3
5
  module Authenticator
4
6
  module Client
5
- class Base
6
- attr_reader :api_key, :api_password, :host
7
-
7
+ class Base < JsonClient::Base
8
8
  def initialize(config)
9
- @api_key = config[:api_key]
10
- @api_password = config[:api_password]
11
- @host = config[:host]
12
- validate_variables
13
- end
14
-
15
- def all
16
- uri = account_path
17
- RestClient.get uri, params: auth_params
18
- end
19
-
20
- def show(id)
21
- uri = account_path(id)
22
- RestClient.get uri, params: auth_params
23
- end
24
-
25
- def create(account)
26
- uri = account_path
27
- RestClient.post(
28
- uri,
29
- auth_params.merge(account.to_params).to_json,
30
- content_type: :json,
31
- accept: :json
9
+ super(
10
+ JsonClient::Pather.new(config[:host], 'api/v1', 'accounts'),
11
+ config
32
12
  )
33
13
  end
34
14
 
35
15
  def authenticate(account)
36
16
  uri = authenticate_path
37
- RestClient.post(
38
- uri,
39
- auth_params.merge(account.to_params).to_json,
40
- content_type: :json,
41
- accept: :json
42
- )
43
- end
44
-
45
- def update(id, account)
46
- uri = account_path(id)
47
- RestClient.put(
17
+ response = RestClient.post(
48
18
  uri,
49
- auth_params.merge(account.to_params).to_json,
19
+ auth_params.merge(account.to_h).to_json,
50
20
  content_type: :json,
51
21
  accept: :json
52
22
  )
53
- end
54
-
55
- def destroy(id)
56
- uri = account_path(id)
57
- RestClient.delete(
58
- uri, params: auth_params
59
- )
23
+ AuthenticateResponse.new(response.body, response.code)
60
24
  end
61
25
 
62
26
  protected
63
27
 
64
28
  def authenticate_path
65
- "#{host}/api/v1/authentications/authenticate"
66
- end
67
-
68
- def account_path(id = nil)
69
- if id.nil?
70
- "#{host}/api/v1/accounts"
71
- else
72
- "#{host}/api/v1/accounts/#{id}"
73
- end
74
- end
75
-
76
- def auth_params
77
- {
78
- api_key: api_key,
79
- api_password: api_password
80
- }
81
- end
82
-
83
- private
84
-
85
- def validate_variables
86
- fail 'host must be set' if host.nil?
87
- fail 'api_key must be set' if api_key.nil?
88
- fail 'api_password must be set' if api_key.nil?
29
+ "#{pather.host}/api/v1/authentications/authenticate"
89
30
  end
90
31
  end
91
32
  end
@@ -1,5 +1,5 @@
1
1
  module Authenticator
2
2
  module Client
3
- VERSION = "0.0.1"
3
+ VERSION = "0.0.2"
4
4
  end
5
5
  end
@@ -41,7 +41,7 @@ describe Authenticator::Client::Base do
41
41
  describe '#all' do
42
42
  it 'fetches all the accounts' do
43
43
  VCR.use_cassette('all_success') do
44
- response = JSON.parse(subject.all)
44
+ response = subject.index.json
45
45
 
46
46
  expect(response['accounts']).not_to be nil
47
47
  end
@@ -51,11 +51,10 @@ describe Authenticator::Client::Base do
51
51
  describe '#authenticate' do
52
52
  it 'creates an account' do
53
53
  VCR.use_cassette('authenticate_success') do
54
- response = JSON.parse(
55
- subject.authenticate(account)
56
- )
54
+ response = subject.authenticate(account)
57
55
 
58
- expect(response['authenticated']).to eq true
56
+ expect(response.json['authenticated']).to eq true
57
+ expect(response.auth_success?).to eq true
59
58
  end
60
59
  end
61
60
  end
@@ -63,9 +62,7 @@ describe Authenticator::Client::Base do
63
62
  describe '#create' do
64
63
  it 'creates an account' do
65
64
  VCR.use_cassette('create_success') do
66
- response = JSON.parse(
67
- subject.create(account)
68
- )
65
+ response = subject.create(account).json
69
66
 
70
67
  expect(response['username']).to eq 'new_username'
71
68
  expect(response['id']).not_to be nil
@@ -78,9 +75,12 @@ describe Authenticator::Client::Base do
78
75
  describe '#show' do
79
76
  it 'fetches the account' do
80
77
  VCR.use_cassette('show_success') do
81
- response = JSON.parse(subject.show(6))
78
+ response = subject.show(6).json
82
79
 
83
80
  expect(response['username']).to eq 'new_username'
81
+ expect(response['id']).to be 6
82
+ expect(response['created_at']).to eq '2015-01-04T20:36:28.339Z'
83
+ expect(response['updated_at']).to eq '2015-01-04T20:36:28.339Z'
84
84
  end
85
85
  end
86
86
  end
@@ -88,8 +88,8 @@ describe Authenticator::Client::Base do
88
88
  describe '#update' do
89
89
  it 'updates the account' do
90
90
  VCR.use_cassette('update_success') do
91
- id = JSON.parse(subject.create(new_account))['id']
92
- response = JSON.parse(subject.update(id, updated_account))
91
+ id = subject.create(new_account).json['id']
92
+ response = subject.update(id, updated_account).json
93
93
 
94
94
  expect(response['username']).to eq updated_account.username
95
95
  expect(response['id']).to eq id
@@ -100,8 +100,8 @@ describe Authenticator::Client::Base do
100
100
  describe '#destroy' do
101
101
  it 'destroys the account' do
102
102
  VCR.use_cassette('destroy_success') do
103
- id = JSON.parse(subject.create(destroy_account))['id']
104
- response = JSON.parse(subject.destroy(id))
103
+ id = subject.create(destroy_account).json['id']
104
+ response = subject.destroy(id).json
105
105
 
106
106
  expect(response['id']).to eq id
107
107
  end
@@ -21,7 +21,7 @@ describe Authenticator::Client do
21
21
  it 'registers a configuration to be used when invoked with ::new' do
22
22
  described_class.register_config(:test, config)
23
23
  client = described_class.new(:test)
24
- expect(client.host).to eq config[:host]
24
+ expect(client.pather.host).to eq config[:host]
25
25
  expect(client.api_key).to eq config[:api_key]
26
26
  expect(client.api_password).to eq config[:api_password]
27
27
  end
data/spec/spec_helper.rb CHANGED
@@ -1,5 +1,8 @@
1
1
  require 'authenticator/client'
2
2
  require 'vcr'
3
+ require 'coveralls'
4
+
5
+ Coveralls.wear!
3
6
 
4
7
  class SpecHelper
5
8
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: authenticator-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - johnmcconnell
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-01-05 00:00:00.000000000 Z
11
+ date: 2015-01-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rest-client
@@ -25,19 +25,47 @@ dependencies:
25
25
  - !ruby/object:Gem::Version
26
26
  version: 1.7.2
27
27
  - !ruby/object:Gem::Dependency
28
- name: bundler
28
+ name: json_client
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '1.7'
33
+ version: 0.0.1
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 0.0.1
41
+ - !ruby/object:Gem::Dependency
42
+ name: simplecov
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: 0.8.0
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: 0.8.0
55
+ - !ruby/object:Gem::Dependency
56
+ name: coveralls
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: 0.7.0
34
62
  type: :development
35
63
  prerelease: false
36
64
  version_requirements: !ruby/object:Gem::Requirement
37
65
  requirements:
38
66
  - - "~>"
39
67
  - !ruby/object:Gem::Version
40
- version: '1.7'
68
+ version: 0.7.0
41
69
  - !ruby/object:Gem::Dependency
42
70
  name: rake
43
71
  requirement: !ruby/object:Gem::Requirement
@@ -116,6 +144,7 @@ extensions: []
116
144
  extra_rdoc_files: []
117
145
  files:
118
146
  - ".gitignore"
147
+ - ".travis.yml"
119
148
  - Gemfile
120
149
  - LICENSE.txt
121
150
  - README.md
@@ -123,6 +152,7 @@ files:
123
152
  - authenticator-client.gemspec
124
153
  - lib/authenticator/client.rb
125
154
  - lib/authenticator/client/account.rb
155
+ - lib/authenticator/client/authenticate_response.rb
126
156
  - lib/authenticator/client/base.rb
127
157
  - lib/authenticator/client/version.rb
128
158
  - spec/authenticator/client/base_spec.rb