KnockRails3 2.1.1
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 +7 -0
- data/MIT-LICENSE +20 -0
- data/Rakefile +39 -0
- data/app/controllers/knock_rails3/application_controller.rb +11 -0
- data/app/controllers/knock_rails3/auth_token_controller.rb +47 -0
- data/app/model/knock_rails3/auth_token.rb +78 -0
- data/config/routes.rb +3 -0
- data/lib/KnockRails3.rb +31 -0
- data/lib/generators/knock_rails3/install_generator.rb +13 -0
- data/lib/generators/knock_rails3/token_controller_generator.rb +27 -0
- data/lib/generators/templates/entity_token_controller.rb.erb +2 -0
- data/lib/generators/templates/knock_rails3.rb +59 -0
- data/lib/knock_rails3/authenticable.rb +60 -0
- data/lib/knock_rails3/engine.rb +6 -0
- data/lib/knock_rails3/version.rb +3 -0
- data/lib/tasks/KnockRails3_tasks.rake +4 -0
- data/test/dummy/README.rdoc +28 -0
- data/test/dummy/Rakefile +6 -0
- data/test/dummy/app/assets/javascripts/application.js +13 -0
- data/test/dummy/app/assets/stylesheets/application.css +15 -0
- data/test/dummy/app/controllers/admin_protected_controller.rb +7 -0
- data/test/dummy/app/controllers/admin_token_controller.rb +2 -0
- data/test/dummy/app/controllers/application_controller.rb +7 -0
- data/test/dummy/app/controllers/composite_name_entity_protected_controller.rb +7 -0
- data/test/dummy/app/controllers/current_users_controller.rb +9 -0
- data/test/dummy/app/controllers/custom_unauthorized_entity_controller.rb +13 -0
- data/test/dummy/app/controllers/guest_protected_controller.rb +7 -0
- data/test/dummy/app/controllers/protected_resources_controller.rb +7 -0
- data/test/dummy/app/controllers/v1/test_namespaced_controller.rb +17 -0
- data/test/dummy/app/controllers/vendor_protected_controller.rb +11 -0
- data/test/dummy/app/controllers/vendor_token_controller.rb +2 -0
- data/test/dummy/app/helpers/application_helper.rb +2 -0
- data/test/dummy/app/models/admin.rb +16 -0
- data/test/dummy/app/models/composite_name_entity.rb +3 -0
- data/test/dummy/app/models/guest.rb +7 -0
- data/test/dummy/app/models/user.rb +3 -0
- data/test/dummy/app/models/v1/user.rb +5 -0
- data/test/dummy/app/models/vendor.rb +3 -0
- data/test/dummy/app/views/layouts/application.html.erb +14 -0
- data/test/dummy/bin/bundle +3 -0
- data/test/dummy/bin/rails +4 -0
- data/test/dummy/bin/rake +4 -0
- data/test/dummy/bin/setup +29 -0
- data/test/dummy/config.ru +4 -0
- data/test/dummy/config/application.rb +28 -0
- data/test/dummy/config/boot.rb +5 -0
- data/test/dummy/config/database.yml +25 -0
- data/test/dummy/config/environment.rb +5 -0
- data/test/dummy/config/environments/development.rb +41 -0
- data/test/dummy/config/environments/production.rb +79 -0
- data/test/dummy/config/environments/test.rb +47 -0
- data/test/dummy/config/initializers/assets.rb +11 -0
- data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/test/dummy/config/initializers/cookies_serializer.rb +3 -0
- data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
- data/test/dummy/config/initializers/inflections.rb +16 -0
- data/test/dummy/config/initializers/knock.rb +8 -0
- data/test/dummy/config/initializers/mime_types.rb +4 -0
- data/test/dummy/config/initializers/session_store.rb +3 -0
- data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/test/dummy/config/locales/en.yml +23 -0
- data/test/dummy/config/routes.rb +17 -0
- data/test/dummy/config/secrets.yml +22 -0
- data/test/dummy/db/migrate/20150713101607_create_users.rb +10 -0
- data/test/dummy/db/migrate/20160519075733_create_admins.rb +10 -0
- data/test/dummy/db/migrate/20160522051816_create_vendors.rb +10 -0
- data/test/dummy/db/migrate/20160522181712_create_composite_name_entities.rb +10 -0
- data/test/dummy/db/migrate/20161127203222_create_v1_users.rb +12 -0
- data/test/dummy/db/schema.rb +50 -0
- data/test/dummy/public/404.html +67 -0
- data/test/dummy/public/422.html +67 -0
- data/test/dummy/public/500.html +66 -0
- data/test/dummy/public/favicon.ico +0 -0
- data/test/dummy/test/controllers/admin_protected_controller_test.rb +49 -0
- data/test/dummy/test/controllers/admin_token_controller_test.rb +22 -0
- data/test/dummy/test/controllers/composite_name_entity_protected_controller_test.rb +49 -0
- data/test/dummy/test/controllers/current_users_controller_test.rb +31 -0
- data/test/dummy/test/controllers/custom_unauthorized_entity_controller_test.rb +42 -0
- data/test/dummy/test/controllers/guest_protected_controller_test.rb +22 -0
- data/test/dummy/test/controllers/protected_resources_controller_test.rb +62 -0
- data/test/dummy/test/controllers/v1/test_namespaced_controller_test.rb +19 -0
- data/test/dummy/test/controllers/vendor_protected_controller_test.rb +55 -0
- data/test/dummy/test/controllers/vendor_token_controller_test.rb +22 -0
- data/test/dummy/test/models/admin_test.rb +7 -0
- data/test/dummy/test/models/user_test.rb +4 -0
- data/test/dummy/test/models/vendor_test.rb +7 -0
- data/test/fixtures/admins.yml +5 -0
- data/test/fixtures/composite_name_entities.yml +5 -0
- data/test/fixtures/users.yml +9 -0
- data/test/fixtures/v1_users.yml +6 -0
- data/test/fixtures/vendors.yml +5 -0
- data/test/generators/install_generator_test.rb +12 -0
- data/test/generators/token_controller_generator_test.rb +31 -0
- data/test/knock_test.rb +9 -0
- data/test/model/knock/auth_token_test.rb +123 -0
- data/test/support/generators_test_helper.rb +9 -0
- data/test/test_helper.rb +45 -0
- metadata +292 -0
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html>
|
|
3
|
+
<head>
|
|
4
|
+
<title>We're sorry, but something went wrong (500)</title>
|
|
5
|
+
<meta name="viewport" content="width=device-width,initial-scale=1">
|
|
6
|
+
<style>
|
|
7
|
+
body {
|
|
8
|
+
background-color: #EFEFEF;
|
|
9
|
+
color: #2E2F30;
|
|
10
|
+
text-align: center;
|
|
11
|
+
font-family: arial, sans-serif;
|
|
12
|
+
margin: 0;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
div.dialog {
|
|
16
|
+
width: 95%;
|
|
17
|
+
max-width: 33em;
|
|
18
|
+
margin: 4em auto 0;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
div.dialog > div {
|
|
22
|
+
border: 1px solid #CCC;
|
|
23
|
+
border-right-color: #999;
|
|
24
|
+
border-left-color: #999;
|
|
25
|
+
border-bottom-color: #BBB;
|
|
26
|
+
border-top: #B00100 solid 4px;
|
|
27
|
+
border-top-left-radius: 9px;
|
|
28
|
+
border-top-right-radius: 9px;
|
|
29
|
+
background-color: white;
|
|
30
|
+
padding: 7px 12% 0;
|
|
31
|
+
box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
h1 {
|
|
35
|
+
font-size: 100%;
|
|
36
|
+
color: #730E15;
|
|
37
|
+
line-height: 1.5em;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
div.dialog > p {
|
|
41
|
+
margin: 0 0 1em;
|
|
42
|
+
padding: 1em;
|
|
43
|
+
background-color: #F7F7F7;
|
|
44
|
+
border: 1px solid #CCC;
|
|
45
|
+
border-right-color: #999;
|
|
46
|
+
border-left-color: #999;
|
|
47
|
+
border-bottom-color: #999;
|
|
48
|
+
border-bottom-left-radius: 4px;
|
|
49
|
+
border-bottom-right-radius: 4px;
|
|
50
|
+
border-top-color: #DADADA;
|
|
51
|
+
color: #666;
|
|
52
|
+
box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
|
|
53
|
+
}
|
|
54
|
+
</style>
|
|
55
|
+
</head>
|
|
56
|
+
|
|
57
|
+
<body>
|
|
58
|
+
<!-- This file lives in public/500.html -->
|
|
59
|
+
<div class="dialog">
|
|
60
|
+
<div>
|
|
61
|
+
<h1>We're sorry, but something went wrong.</h1>
|
|
62
|
+
</div>
|
|
63
|
+
<p>If you are the application owner check the logs for more information.</p>
|
|
64
|
+
</div>
|
|
65
|
+
</body>
|
|
66
|
+
</html>
|
|
File without changes
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class AdminProtectedControllerTest < ActionController::TestCase
|
|
4
|
+
def valid_auth
|
|
5
|
+
@admin = admins(:one)
|
|
6
|
+
@token = KnockRails3::AuthToken.new(payload: { sub: @admin.id }).token
|
|
7
|
+
@request.env['HTTP_AUTHORIZATION'] = "Bearer #{@token}"
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def invalid_token_auth
|
|
11
|
+
@token = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9'
|
|
12
|
+
@request.env['HTTP_AUTHORIZATION'] = "Bearer #{@token}"
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def invalid_entity_auth
|
|
16
|
+
@token = KnockRails3::AuthToken.new(payload: { sub: 0 }).token
|
|
17
|
+
@request.env['HTTP_AUTHORIZATION'] = "Bearer #{@token}"
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
test "responds with unauthorized" do
|
|
21
|
+
get :index
|
|
22
|
+
assert_response :unauthorized
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
test "responds with unauthorized to invalid token" do
|
|
26
|
+
invalid_token_auth
|
|
27
|
+
get :index
|
|
28
|
+
assert_response :unauthorized
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
test "responds with unauthorized to invalid entity" do
|
|
32
|
+
invalid_entity_auth
|
|
33
|
+
get :index
|
|
34
|
+
assert_response :unauthorized
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
test "responds with success if authenticated" do
|
|
38
|
+
valid_auth
|
|
39
|
+
get :index
|
|
40
|
+
assert_response :success
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
test "has a current_admin after authentication" do
|
|
44
|
+
valid_auth
|
|
45
|
+
get :index
|
|
46
|
+
assert_response :success
|
|
47
|
+
assert @controller.current_admin.id == @admin.id
|
|
48
|
+
end
|
|
49
|
+
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class AdminTokenControllerTest < ActionController::TestCase
|
|
4
|
+
def setup
|
|
5
|
+
@admin = admins(:one)
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
test "responds with 404 if user does not exist" do
|
|
9
|
+
post :create, params: {auth: { email: 'wrong@example.net', password: '' }}
|
|
10
|
+
assert_response :not_found
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
test "responds with 404 if password is invalid" do
|
|
14
|
+
post :create, params: {auth: { email: @admin.email, password: 'wrong' }}
|
|
15
|
+
assert_response :not_found
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
test "responds with 201" do
|
|
19
|
+
post :create, params: {auth: { email: @admin.email, password: 'secret' }}
|
|
20
|
+
assert_response :created
|
|
21
|
+
end
|
|
22
|
+
end
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class CompositeNameEntityProtectedControllerTest < ActionController::TestCase
|
|
4
|
+
def valid_auth
|
|
5
|
+
@composite_name_entity = composite_name_entities(:one)
|
|
6
|
+
@token = KnockRails3::AuthToken.new(payload: { sub: @composite_name_entity.id }).token
|
|
7
|
+
@request.env['HTTP_AUTHORIZATION'] = "Bearer #{@token}"
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def invalid_token_auth
|
|
11
|
+
@token = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9'
|
|
12
|
+
@request.env['HTTP_AUTHORIZATION'] = "Bearer #{@token}"
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def invalid_entity_auth
|
|
16
|
+
@token = KnockRails3::AuthToken.new(payload: { sub: 0 }).token
|
|
17
|
+
@request.env['HTTP_AUTHORIZATION'] = "Bearer #{@token}"
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
test "responds with unauthorized" do
|
|
21
|
+
get :index
|
|
22
|
+
assert_response :unauthorized
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
test "responds with unauthorized to invalid token" do
|
|
26
|
+
invalid_token_auth
|
|
27
|
+
get :index
|
|
28
|
+
assert_response :unauthorized
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
test "responds with unauthorized to invalid entity" do
|
|
32
|
+
invalid_entity_auth
|
|
33
|
+
get :index
|
|
34
|
+
assert_response :unauthorized
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
test "responds with success if authenticated" do
|
|
38
|
+
valid_auth
|
|
39
|
+
get :index
|
|
40
|
+
assert_response :success
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
test "has a current_composite_name_entity after authentication" do
|
|
44
|
+
valid_auth
|
|
45
|
+
get :index
|
|
46
|
+
assert_response :success
|
|
47
|
+
assert @controller.current_composite_name_entity.id == @composite_name_entity.id
|
|
48
|
+
end
|
|
49
|
+
end
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class CurrentUsersControllerTest < ActionController::TestCase
|
|
4
|
+
setup do
|
|
5
|
+
@user = users(:one)
|
|
6
|
+
@token = KnockRails3::AuthToken.new(payload: { sub: @user.id }).token
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def authenticate token: @token
|
|
10
|
+
@request.env['HTTP_AUTHORIZATION'] = "Bearer #{token}"
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
test "responds with 404 if user is not logged in" do
|
|
14
|
+
get :show
|
|
15
|
+
assert_response :not_found
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
test "responds with 200" do
|
|
19
|
+
authenticate
|
|
20
|
+
get :show
|
|
21
|
+
assert_response :success
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
# Run this test twice to validate that it still works
|
|
25
|
+
# when the getter method has already been defined.
|
|
26
|
+
test "responds with 200 #2" do
|
|
27
|
+
authenticate
|
|
28
|
+
get :show
|
|
29
|
+
assert_response :success
|
|
30
|
+
end
|
|
31
|
+
end
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class CustomUnauthorizedEntityControllerTest < ActionController::TestCase
|
|
4
|
+
def valid_auth
|
|
5
|
+
@user = users(:one)
|
|
6
|
+
@token = KnockRails3::AuthToken.new(payload: { sub: @user.id }).token
|
|
7
|
+
@request.env['HTTP_AUTHORIZATION'] = "Bearer #{@token}"
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def invalid_token_auth
|
|
11
|
+
@token = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9'
|
|
12
|
+
@request.env['HTTP_AUTHORIZATION'] = "Bearer #{@token}"
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def invalid_entity_auth
|
|
16
|
+
@token = KnockRails3::AuthToken.new(payload: { sub: 0 }).token
|
|
17
|
+
@request.env['HTTP_AUTHORIZATION'] = "Bearer #{@token}"
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
test "responds with not found" do
|
|
21
|
+
get :index
|
|
22
|
+
assert_response :not_found
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
test "responds with not found to invalid token" do
|
|
26
|
+
invalid_token_auth
|
|
27
|
+
get :index
|
|
28
|
+
assert_response :not_found
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
test "responds with not found to invalid entity" do
|
|
32
|
+
invalid_entity_auth
|
|
33
|
+
get :index
|
|
34
|
+
assert_response :not_found
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
test "responds with success if authenticated" do
|
|
38
|
+
valid_auth
|
|
39
|
+
get :index
|
|
40
|
+
assert_response :success
|
|
41
|
+
end
|
|
42
|
+
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class GuestProtectedControllerTest < ActionController::TestCase
|
|
4
|
+
def setup
|
|
5
|
+
@token = KnockRails3::AuthToken.new(payload: { sub: "1" }).token
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
def authenticate token: @token
|
|
9
|
+
@request.env['HTTP_AUTHORIZATION'] = "Bearer #{token}"
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
test "responds with unauthorized when no token is provided" do
|
|
13
|
+
get :index
|
|
14
|
+
assert_response :unauthorized
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
test "responds with success with a valid token in the header" do
|
|
18
|
+
authenticate
|
|
19
|
+
get :index
|
|
20
|
+
assert_response :success
|
|
21
|
+
end
|
|
22
|
+
end
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class ProtectedResourcesControllerTest < ActionController::TestCase
|
|
4
|
+
def setup
|
|
5
|
+
@user = users(:one)
|
|
6
|
+
@token = KnockRails3::AuthToken.new(payload: { sub: @user.id }).token
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def authenticate token: @token
|
|
10
|
+
@request.env['HTTP_AUTHORIZATION'] = "Bearer #{token}"
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
test "responds with unauthorized" do
|
|
14
|
+
get :index
|
|
15
|
+
assert_response :unauthorized
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
test "responds with success with valid token in header" do
|
|
19
|
+
authenticate
|
|
20
|
+
get :index
|
|
21
|
+
assert_response :success
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
test "responds with unauthorized with invalid token in header" do
|
|
25
|
+
authenticate token: "invalid"
|
|
26
|
+
get :index
|
|
27
|
+
assert_response :unauthorized
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
test "responds with success with token in url" do
|
|
31
|
+
get :index, params: {token: @token}
|
|
32
|
+
assert_response :success
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
test "responds with unauthorized with invalid token in url" do
|
|
36
|
+
get :index, params: {token: "invalid"}
|
|
37
|
+
assert_response :unauthorized
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
test "has a current_user after authentication" do
|
|
41
|
+
authenticate
|
|
42
|
+
get :index
|
|
43
|
+
assert_response :success
|
|
44
|
+
assert @controller.current_user.id == @user.id
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
test "accepts any prefix in the authorization header" do
|
|
48
|
+
@request.env['HTTP_AUTHORIZATION'] = "Other #{@token}"
|
|
49
|
+
|
|
50
|
+
get :index
|
|
51
|
+
|
|
52
|
+
assert_response :success
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
test "accepts authorization header without prefix" do
|
|
56
|
+
@request.env['HTTP_AUTHORIZATION'] = "#{@token}"
|
|
57
|
+
|
|
58
|
+
get :index
|
|
59
|
+
|
|
60
|
+
assert_response :success
|
|
61
|
+
end
|
|
62
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
# require 'timecop'
|
|
3
|
+
|
|
4
|
+
module KnockRails3
|
|
5
|
+
class TestNamespacedControllerTest < ActionDispatch::IntegrationTest
|
|
6
|
+
|
|
7
|
+
setup do
|
|
8
|
+
@user = V1::User.first
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
test "allow namespaced models" do
|
|
12
|
+
token = KnockRails3::AuthToken.new(payload: { sub: @user.id }).token
|
|
13
|
+
get v1_test_namespaced_index_url, headers: {'Authorization': "Bearer #{token}"}
|
|
14
|
+
assert_response :ok
|
|
15
|
+
assert_equal @user, @controller.current_v1_user
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class VendorProtectedControllerTest < ActionController::TestCase
|
|
4
|
+
def valid_auth
|
|
5
|
+
@vendor = vendors(:one)
|
|
6
|
+
@token = KnockRails3::AuthToken.new(payload: { sub: @vendor.id }).token
|
|
7
|
+
@request.env['HTTP_AUTHORIZATION'] = "Bearer #{@token}"
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def invalid_token_auth
|
|
11
|
+
@token = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9'
|
|
12
|
+
@request.env['HTTP_AUTHORIZATION'] = "Bearer #{@token}"
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def invalid_entity_auth
|
|
16
|
+
@token = KnockRails3::AuthToken.new(payload: { sub: 0 }).token
|
|
17
|
+
@request.env['HTTP_AUTHORIZATION'] = "Bearer #{@token}"
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
test "responds with unauthorized" do
|
|
21
|
+
get :index
|
|
22
|
+
assert_response :unauthorized
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
test "responds with unauthorized to invalid token" do
|
|
26
|
+
invalid_token_auth
|
|
27
|
+
get :index
|
|
28
|
+
assert_response :unauthorized
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
test "responds with unauthorized to invalid entity" do
|
|
32
|
+
invalid_entity_auth
|
|
33
|
+
get :index
|
|
34
|
+
assert_response :unauthorized
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
test "responds with success if authenticated" do
|
|
38
|
+
valid_auth
|
|
39
|
+
get :index
|
|
40
|
+
assert_response :success
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
test "has a current_vendor after authentication" do
|
|
44
|
+
valid_auth
|
|
45
|
+
get :index
|
|
46
|
+
assert_response :success
|
|
47
|
+
assert @controller.current_vendor.id == @vendor.id
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
test "raises method missing error appropriately" do
|
|
51
|
+
assert_raises(NoMethodError) do
|
|
52
|
+
get :show, params: {id: 1}
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class VendorTokenControllerTest < ActionController::TestCase
|
|
4
|
+
def setup
|
|
5
|
+
@vendor = vendors(:one)
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
test "responds with 404 if user does not exist" do
|
|
9
|
+
post :create, params: {auth: { email: 'wrong@example.net', password: '' }}
|
|
10
|
+
assert_response :not_found
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
test "responds with 404 if password is invalid" do
|
|
14
|
+
post :create, params: {auth: { email: @vendor.email, password: 'wrong' }}
|
|
15
|
+
assert_response :not_found
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
test "responds with 201" do
|
|
19
|
+
post :create, params: {auth: { email: @vendor.email, password: 'secret' }}
|
|
20
|
+
assert_response :created
|
|
21
|
+
end
|
|
22
|
+
end
|