gris 0.4.7 → 0.4.8
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/Gemfile.lock +1 -1
- data/lib/gris.rb +0 -1
- data/lib/gris/generators/templates/api/spec/endpoints/%name_tableize%_endpoint_spec.rb.tt +0 -9
- data/lib/gris/generators/templates/scaffold/app/endpoints/application_endpoint.rb +0 -13
- data/lib/gris/generators/templates/scaffold/spec/support/app_helper.rb +0 -9
- data/lib/gris/version.rb +1 -1
- data/spec/generators/api_generator_spec.rb +0 -2
- data/spec/generators/scaffold_generator_spec.rb +0 -4
- metadata +1 -9
- data/lib/gris/generators/templates/scaffold/spec/support/shared_authentication_spec_helper.rb +0 -8
- data/lib/gris/grape_extensions/authentication_helpers.rb +0 -21
- data/spec/grape_extensions/authentication_helpers_spec.rb +0 -51
- data/spec/integration/token_authentication_spec.rb +0 -29
- data/spec/support/spec_api_auth_helper.rb +0 -15
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 469f407d1a43e892def021b0c73092149814d21f
|
4
|
+
data.tar.gz: 8b72d138c252746c3014777d833e36e1bfab3182
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c5a56604d2cef58e60e31b41740e4e61283d5986076d47bbee7d1e2410ee010c34514c1e70876b920a7564e97859fe51273f7239d9edeae826e30add9af2610a
|
7
|
+
data.tar.gz: d05838ce67e8f22f9c0e72247a07f0978a5331cd481134016b686fb9c9051a9022a4eed5d00c06c372118439322beb00d31827d7f3c5a7970659c18c3c072624
|
data/Gemfile.lock
CHANGED
data/lib/gris.rb
CHANGED
@@ -14,7 +14,6 @@ require 'hashie-forbidden_attributes'
|
|
14
14
|
require 'gris/application'
|
15
15
|
require 'gris/caching'
|
16
16
|
require 'gris/deprecations'
|
17
|
-
require 'gris/grape_extensions/authentication_helpers'
|
18
17
|
require 'gris/grape_extensions/crud_helpers'
|
19
18
|
require 'gris/grape_extensions/date_time_helpers'
|
20
19
|
require 'gris/grape_extensions/error_helpers'
|
@@ -2,15 +2,6 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe <%= name.classify.pluralize %>Endpoint do
|
4
4
|
include Rack::Test::Methods
|
5
|
-
context 'with a running app' do
|
6
|
-
include_context 'with a running app'
|
7
|
-
|
8
|
-
it_should_behave_like 'an endpoint with token_authentication!', [
|
9
|
-
['get', '/<%= name.tableize %>'], ['post', '/<%= name.tableize %>'],
|
10
|
-
['get', '/<%= name.tableize %>/1'], ['patch', '/<%= name.tableize %>/2'],
|
11
|
-
['delete', '/<%= name.tableize %>/3']
|
12
|
-
]
|
13
|
-
end
|
14
5
|
|
15
6
|
context 'with a running app and token authorized client' do
|
16
7
|
include_context 'with a running app and token authorized client'
|
@@ -3,19 +3,6 @@ class ApplicationEndpoint < Grape::API
|
|
3
3
|
formatter :json, Grape::Formatter::Roar
|
4
4
|
content_type :json, 'application/hal+json'
|
5
5
|
|
6
|
-
helpers do
|
7
|
-
include Gris::AuthenticationHelpers
|
8
|
-
end
|
9
|
-
|
10
|
-
# Adds a simple environment variable based
|
11
|
-
# token authentication scheme to your endpoints.
|
12
|
-
# Alternatively, this token_authentication!
|
13
|
-
# method can be added to individual endpoints.
|
14
|
-
#
|
15
|
-
before do
|
16
|
-
token_authentication!
|
17
|
-
end
|
18
|
-
|
19
6
|
desc 'Get the Root API Endpoint'
|
20
7
|
get do
|
21
8
|
present self, with: RootPresenter
|
@@ -2,20 +2,11 @@ shared_context 'with a running app' do
|
|
2
2
|
let(:app) { Rack::Builder.parse_file('config.ru').first }
|
3
3
|
end
|
4
4
|
|
5
|
-
shared_context 'with token authorization' do
|
6
|
-
let(:permitted_token) { Gris.secrets.permitted_tokens }
|
7
|
-
before(:each) do
|
8
|
-
header 'Http-Authorization', permitted_token
|
9
|
-
end
|
10
|
-
end
|
11
|
-
|
12
5
|
shared_context 'with a running app and token authorized client' do
|
13
6
|
include_context 'with a running app'
|
14
|
-
include_context 'with token authorization'
|
15
7
|
|
16
8
|
let(:client) do
|
17
9
|
Hyperclient.new('http://example.org/') do |client|
|
18
|
-
client.headers['Http-Authorization'] = permitted_token
|
19
10
|
client.connection(default: false) do |conn|
|
20
11
|
conn.request :hal_json
|
21
12
|
conn.response :json
|
data/lib/gris/version.rb
CHANGED
@@ -82,8 +82,6 @@ describe Gris::Generators::ApiGenerator do
|
|
82
82
|
api_code = File.read(expected_api_file)
|
83
83
|
expect(api_code).to match(/describe ArticlesEndpoint/)
|
84
84
|
expect(api_code).to match(/returns an article/)
|
85
|
-
expect(api_code).to match(/it_should_behave_like 'an endpoint with token_authentication!'/)
|
86
|
-
expect(api_code).to match %r{'get', '/articles/1'}
|
87
85
|
end
|
88
86
|
|
89
87
|
it 'creates a fabricator' do
|
@@ -110,9 +110,5 @@ describe Gris::Generators::ScaffoldGenerator do
|
|
110
110
|
expect(root_presenter_file).to match(/endpoint_link :health/)
|
111
111
|
end
|
112
112
|
end
|
113
|
-
|
114
|
-
it 'generates a token authentication spec helper endpoint' do
|
115
|
-
expect(File).to exist("#{app_path}/spec/support/shared_authentication_spec_helper.rb")
|
116
|
-
end
|
117
113
|
end
|
118
114
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gris
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dylan Fareed
|
@@ -367,8 +367,6 @@ files:
|
|
367
367
|
- lib/gris/generators/templates/scaffold/spec/endpoints/cors_spec.rb.tt
|
368
368
|
- lib/gris/generators/templates/scaffold/spec/spec_helper.rb
|
369
369
|
- lib/gris/generators/templates/scaffold/spec/support/app_helper.rb
|
370
|
-
- lib/gris/generators/templates/scaffold/spec/support/shared_authentication_spec_helper.rb
|
371
|
-
- lib/gris/grape_extensions/authentication_helpers.rb
|
372
370
|
- lib/gris/grape_extensions/crud_helpers.rb
|
373
371
|
- lib/gris/grape_extensions/date_time_helpers.rb
|
374
372
|
- lib/gris/grape_extensions/error_helpers.rb
|
@@ -389,19 +387,16 @@ files:
|
|
389
387
|
- spec/generators/api_generator_spec.rb
|
390
388
|
- spec/generators/migration_generator_spec.rb
|
391
389
|
- spec/generators/scaffold_generator_spec.rb
|
392
|
-
- spec/grape_extensions/authentication_helpers_spec.rb
|
393
390
|
- spec/grape_extensions/crud_helpers_spec.rb
|
394
391
|
- spec/grape_extensions/date_time_helpers_spec.rb
|
395
392
|
- spec/grape_extensions/error_helpers_spec.rb
|
396
393
|
- spec/identity_spec.rb
|
397
394
|
- spec/integration/application_error_response_spec.rb
|
398
|
-
- spec/integration/token_authentication_spec.rb
|
399
395
|
- spec/output_formatters/presenter_link_helpers_spec.rb
|
400
396
|
- spec/secrets_spec.rb
|
401
397
|
- spec/spec_helper.rb
|
402
398
|
- spec/support/caching_helper.rb
|
403
399
|
- spec/support/integration_setup.rb
|
404
|
-
- spec/support/spec_api_auth_helper.rb
|
405
400
|
- spec/support/spec_api_error_helper.rb
|
406
401
|
- spec/support/spec_crud_helper.rb
|
407
402
|
- spec/support/spec_generators_helper.rb
|
@@ -438,19 +433,16 @@ test_files:
|
|
438
433
|
- spec/generators/api_generator_spec.rb
|
439
434
|
- spec/generators/migration_generator_spec.rb
|
440
435
|
- spec/generators/scaffold_generator_spec.rb
|
441
|
-
- spec/grape_extensions/authentication_helpers_spec.rb
|
442
436
|
- spec/grape_extensions/crud_helpers_spec.rb
|
443
437
|
- spec/grape_extensions/date_time_helpers_spec.rb
|
444
438
|
- spec/grape_extensions/error_helpers_spec.rb
|
445
439
|
- spec/identity_spec.rb
|
446
440
|
- spec/integration/application_error_response_spec.rb
|
447
|
-
- spec/integration/token_authentication_spec.rb
|
448
441
|
- spec/output_formatters/presenter_link_helpers_spec.rb
|
449
442
|
- spec/secrets_spec.rb
|
450
443
|
- spec/spec_helper.rb
|
451
444
|
- spec/support/caching_helper.rb
|
452
445
|
- spec/support/integration_setup.rb
|
453
|
-
- spec/support/spec_api_auth_helper.rb
|
454
446
|
- spec/support/spec_api_error_helper.rb
|
455
447
|
- spec/support/spec_crud_helper.rb
|
456
448
|
- spec/support/spec_generators_helper.rb
|
data/lib/gris/generators/templates/scaffold/spec/support/shared_authentication_spec_helper.rb
DELETED
@@ -1,8 +0,0 @@
|
|
1
|
-
shared_examples_for 'an endpoint with token_authentication!' do |route_pairs|
|
2
|
-
route_pairs.each do |route_pair|
|
3
|
-
it "returns 401 for #{route_pair[0].upcase} #{route_pair[1]}" do
|
4
|
-
send route_pair[0], route_pair[1]
|
5
|
-
expect(response_code).to eq 401
|
6
|
-
end
|
7
|
-
end
|
8
|
-
end
|
@@ -1,21 +0,0 @@
|
|
1
|
-
module Gris
|
2
|
-
module AuthenticationHelpers
|
3
|
-
def token_authentication!
|
4
|
-
error!('Forbidden', 401) unless permit_by_headers || permit_by_params
|
5
|
-
end
|
6
|
-
|
7
|
-
private
|
8
|
-
|
9
|
-
def permit_by_headers
|
10
|
-
permitted_tokens.include? request.headers['Http-Authorization'] if request.headers['Http-Authorization']
|
11
|
-
end
|
12
|
-
|
13
|
-
def permit_by_params
|
14
|
-
permitted_tokens.include? params[:token] if params[:token]
|
15
|
-
end
|
16
|
-
|
17
|
-
def permitted_tokens
|
18
|
-
Gris.secrets.permitted_tokens.split(',')
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
@@ -1,51 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Gris::AuthenticationHelpers do
|
4
|
-
include_context 'with secrets from config/secrets.yml'
|
5
|
-
context 'without permitted token' do
|
6
|
-
before(:each) do
|
7
|
-
@helper = SpecApiAuthHelper.new
|
8
|
-
end
|
9
|
-
|
10
|
-
context '#token_authentication!' do
|
11
|
-
context 'without matching tokens' do
|
12
|
-
it 'returns a 401 Forbidden error' do
|
13
|
-
allow(@helper).to receive(:params).and_return(token: nil)
|
14
|
-
allow(@helper).to receive_message_chain(:request, :headers).and_return('Http-Authorization' => nil)
|
15
|
-
@helper.token_authentication!
|
16
|
-
expect(@helper.message).to eq(message: 'Forbidden', status: 401)
|
17
|
-
end
|
18
|
-
end
|
19
|
-
context 'with included params token' do
|
20
|
-
it 'returns nil' do
|
21
|
-
allow(@helper).to receive(:params).and_return(token: 'my-token')
|
22
|
-
allow(@helper).to receive_message_chain(:request, :headers).and_return('Http-Authorization' => nil)
|
23
|
-
expect(@helper.token_authentication!).to be_nil
|
24
|
-
end
|
25
|
-
end
|
26
|
-
context 'with blank params token' do
|
27
|
-
it 'returns a 401 Forbidden error' do
|
28
|
-
allow(@helper).to receive(:params).and_return(token: '')
|
29
|
-
allow(@helper).to receive_message_chain(:request, :headers).and_return('Http-Authorization' => nil)
|
30
|
-
@helper.token_authentication!
|
31
|
-
expect(@helper.message).to eq(message: 'Forbidden', status: 401)
|
32
|
-
end
|
33
|
-
end
|
34
|
-
context 'with included request header token' do
|
35
|
-
it 'returns nil' do
|
36
|
-
allow(@helper).to receive(:params).and_return(token: nil)
|
37
|
-
allow(@helper).to receive_message_chain(:request, :headers).and_return('Http-Authorization' => 'my-token')
|
38
|
-
expect(@helper.token_authentication!).to be_nil
|
39
|
-
end
|
40
|
-
end
|
41
|
-
context 'with blank header token' do
|
42
|
-
it 'returns a 401 Forbidden error' do
|
43
|
-
allow(@helper).to receive(:params).and_return(token: nil)
|
44
|
-
allow(@helper).to receive_message_chain(:request, :headers).and_return('Http-Authorization' => '')
|
45
|
-
@helper.token_authentication!
|
46
|
-
expect(@helper.message).to eq(message: 'Forbidden', status: 401)
|
47
|
-
end
|
48
|
-
end
|
49
|
-
end
|
50
|
-
end
|
51
|
-
end
|
@@ -1,29 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
require 'hyperclient'
|
3
|
-
|
4
|
-
describe 'token authentication' do
|
5
|
-
include_context 'with a generated app'
|
6
|
-
|
7
|
-
let(:client_url) { "http://localhost:#{app_port}" }
|
8
|
-
let(:client) { Hyperclient.new(client_url) }
|
9
|
-
|
10
|
-
it 'returns a forbidden error' do
|
11
|
-
request = Faraday.get client_url
|
12
|
-
response = JSON.parse request.body
|
13
|
-
expect(response['error']).to include 'Forbidden'
|
14
|
-
end
|
15
|
-
|
16
|
-
context 'with correct token query params' do
|
17
|
-
it 'returns the root presenter' do
|
18
|
-
client.params['token'] = 'replace-me'
|
19
|
-
expect(client._links.self._url).to eq client_url
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
context 'with correct Http-Authorization headers' do
|
24
|
-
it 'returns the root presenter' do
|
25
|
-
client.headers['Http-Authorization'] = 'replace-me'
|
26
|
-
expect(client._links.self._url).to eq client_url
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
@@ -1,15 +0,0 @@
|
|
1
|
-
class SpecApiAuthHelper
|
2
|
-
include Gris::AuthenticationHelpers
|
3
|
-
include Gris::ErrorHelpers
|
4
|
-
|
5
|
-
attr_accessor :params
|
6
|
-
attr_accessor :request
|
7
|
-
|
8
|
-
attr_accessor :message
|
9
|
-
attr_accessor :thrown
|
10
|
-
|
11
|
-
def throw(thrown, message)
|
12
|
-
@message = message
|
13
|
-
@thrown = thrown
|
14
|
-
end
|
15
|
-
end
|