action_interceptor 0.0.3 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 31e855e9e9869ca8e5d409a7016be38bd81f560a
4
- data.tar.gz: 5ee08d985554e577b922afd1b5d53db794782794
3
+ metadata.gz: 329436e7ee0f1ad6c5ce0f1891cfe6c8ae7dbe76
4
+ data.tar.gz: 6f0b1b10adf2484ec53cb35245bcc02bf5d3e6d6
5
5
  SHA512:
6
- metadata.gz: 08c253742ec490768f8cac0f082f2692a8b025153a2768c8a2832c64874be5755c1a45ad0542ebc6f7cf226278665131e487d2c714ca3d5043e47bc442c099f2
7
- data.tar.gz: fe5c9c8635292d2db08b17837f82743d6d14eb645707c702fb26119daf1424a22afaa2e10377f1350f07ac416922ae04465aaf8e82206dd7195a8035708b6029
6
+ metadata.gz: 1cbcf3eae9d54f8b3fd53e8b72708312af35a89336951246f933ecda523ef265525ce655825cecd83a150ed173fe6007936a29d5db834ca9ada91157afede299
7
+ data.tar.gz: d7bfd96282fe7e6b6b79b723250b694e7fca4f45bb623079824b53d582323dbc339dc4dbc15b68a72656356a6a357ff4c04220098b1915a13a3341668d335f41
data/README.md CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  Action Interceptor is a Rails engine that makes it easy to have controllers intercept
6
6
  actions from other controllers, have users perform a task and then return them to where
7
- they were before.
7
+ they were when the interception happened.
8
8
 
9
9
  This can be used, for example, for registration, authentication, signing terms of use, etc.
10
10
 
@@ -22,43 +22,132 @@ And then execute:
22
22
  $ bundle install
23
23
  ```
24
24
 
25
+ Finally, run the following rake task to add
26
+ Action Interceptor's initializer to your application:
27
+
28
+ ```sh
29
+ $ rake action_interceptor:install
30
+ ```
31
+
25
32
  ## Usage
26
-
27
- Add the following line to controllers that should
28
- intercept actions from other controllers:
33
+
34
+ Interceptors are blocks of code that are declared in Action Interceptor's
35
+ initializer. They execute in the context of your controllers and work
36
+ very much like before_filters.
37
+
38
+ For example, the following interceptor could be used to ensure that users
39
+ have filled out a registration form:
29
40
 
30
41
  ```rb
31
- interceptor
42
+ interceptor :registration do
43
+
44
+ return if current_user.try(:is_registered?)
45
+
46
+ respond_to do |format|
47
+ format.html { redirect_to register_path }
48
+ format.json { head(:forbidden) }
49
+ end
50
+
51
+ end
32
52
  ```
33
-
34
- Then declare the controllers and actions to be intercepted:
53
+
54
+ What makes interceptors different from before_filters is that they will
55
+ save the user's current url before redirecting. This is done through
56
+ signed url params by default, falling back to session variables if those
57
+ params are absent or invalid.
58
+
59
+ Once declared, you can use an interceptor in any controller. For example,
60
+ you might want to ensure that all logged in users have to complete
61
+ a form before using your site. In that case, you could add the following
62
+ to your `ApplicationController`:
35
63
 
36
64
  ```rb
37
- intercept ApplicationController, only: :index do
38
- # Block that returns:
39
- # The redirection path if the action is to be intercepted
40
- # Nil/false otherwise
65
+ class ApplicationController < ActionController::Base
66
+
67
+ interceptor :registration
68
+
41
69
  end
42
70
  ```
43
71
 
44
- When users complete the task, use the following method to
45
- redirect them back to where they were before:
72
+ The controllers your interceptors redirect to should
73
+ call the `acts_as_interceptor` method:
74
+
75
+ ```rb
76
+ class RegistrationsController < ApplicationController
77
+
78
+ acts_as_interceptor
79
+
80
+ skip_interceptor :registration, only: [:new, :create]
81
+
82
+ end
83
+ ```
84
+
85
+ As shown above, interceptions work like before_filters and
86
+ can be skipped using the skip_interceptor method.
87
+
88
+ The `acts_as_interceptor` method will ensure the following:
89
+
90
+ - The `url_options` method for that controller will be overriden, causing all
91
+ links and redirects for the controller and associated views to include
92
+ the signed return url. This can be skipped by calling `acts_as_interceptor`
93
+ like this: `acts_as_interceptor override_url_options: false`. In that case,
94
+ you are responsible for passing the `intercepted_url_hash` to any internal
95
+ links and redirects.
96
+
97
+ - The following convenience methods will be added to the controller:
98
+ `redirect_back(options = {})`, `intercepted_url`, `intercepted_url=`,
99
+ `intercepted_url_hash`, `without_interceptor(&block)`,
100
+ `url_options_without_interceptor` and `url_options_with_interceptor`.
101
+ These methods have the following behavior:
102
+
103
+ - redirect_back(options = {}) redirects the user back to where the
104
+ interception occurred, passing the given options to the redirect method.
105
+
106
+ - `intercepted_url` returns the intercepted url. Can be used in views to make
107
+ links that redirect the user back to where the interception happened.
108
+
109
+ - `intercepted_url=` can be used to overwrite the intercepted url, if needed.
110
+
111
+ - `intercepted_url_hash` returns a hash containing the `interceptor_url_key`
112
+ and the signed `intercepted_url`.
113
+
114
+ - `without_interceptor(&block)` executes a block with the old url options.
115
+
116
+ - `url_options_without_interceptor` returns the old url options.
117
+
118
+ - `url_options_with_interceptor` returns the old url options merged with
119
+ the `intercepted_url_hash`. Can be used even if you specified
120
+ `override_url_options: false`.
121
+
122
+ When users complete the given task, use the following method to
123
+ redirect them back to where the interception occurred:
46
124
 
47
125
  ```rb
48
126
  redirect_back
49
127
  ```
50
128
 
51
- Alternatively, you can use `redirect_url` in views:
129
+ Alternatively, you can use `intercepted_url` in views:
52
130
 
53
131
  ```erb
54
- <%= link_to 'Back', redirect_url %>
132
+ <%= link_to 'Back', intercepted_url %>
55
133
  ```
56
134
 
135
+ Finally, just by including the gem in your app, the following convenience
136
+ methods will be added to all controllers: `current_url`, `current_url_hash`,
137
+ `current_page?(url)` and `with_interceptor(&block)`.
138
+
139
+ - `current_url` returns the current url.
140
+ - `current_url_hash` returns a hash containing the `intercepted_url_key` and the
141
+ `current_url`, signed and encrypted.
142
+ - `current_page?(url)` returns true iif the given url is the `current_url`.
143
+ - `with_interceptor(&block)` executes the given block as if it was an
144
+ interceptor for the current controller.
145
+
57
146
  ## Contributing
58
147
 
59
148
  1. Fork it
60
149
  2. Create your feature branch (`git checkout -b my-new-feature`)
61
- 3. Write tests for your feature
150
+ 3. Write specs for your feature
62
151
  4. Implement your new feature
63
152
  5. Test your feature (`rake`)
64
153
  6. Commit your changes (`git commit -am 'Added some feature'`)
@@ -87,7 +176,8 @@ Alternatively, you can use `redirect_url` in views:
87
176
 
88
177
  ## Testing
89
178
 
90
- To run all existing tests for action_interceptor, simply execute the following from the main folder:
179
+ To run all existing tests for Action Interceptor,
180
+ simply execute the following from the main folder:
91
181
 
92
182
  ```sh
93
183
  $ rake
data/Rakefile CHANGED
@@ -12,7 +12,7 @@ Bundler::GemHelper.install_tasks
12
12
 
13
13
  require 'rake/testtask'
14
14
 
15
- Rake::TestTask.new(:spec => 'app:db:test:prepare') do |t|
15
+ Rake::TestTask.new(:spec) do |t|
16
16
  t.libs << 'lib'
17
17
  t.libs << 'spec'
18
18
  t.pattern = 'spec/**/*_spec.rb'
@@ -1,11 +1,14 @@
1
1
  require 'action_interceptor/engine'
2
2
 
3
3
  module ActionInterceptor
4
- mattr_reader :intercepted_url_key
5
-
6
4
  def self.intercepted_url_key(key = nil)
7
- return @intercepted_url_key || :r unless key
8
- @intercepted_url_key = key
5
+ @intercepted_url_key = key unless key.blank?
6
+ @intercepted_url_key || :r
7
+ end
8
+
9
+ def self.override_url_options(bool = nil)
10
+ @override_url_options = bool unless bool.nil?
11
+ @override_url_options.nil? ? true : @override_url_options
9
12
  end
10
13
 
11
14
  def self.interceptors
@@ -11,8 +11,6 @@ module ActionInterceptor
11
11
  base.extend(ClassMethods)
12
12
  end
13
13
 
14
- protected
15
-
16
14
  def current_url
17
15
  "#{request.protocol}#{request.host_with_port}#{request.fullpath}"
18
16
  end
@@ -22,7 +20,7 @@ module ActionInterceptor
22
20
  url.blank? || URI(url).path == request.path
23
21
  end
24
22
 
25
- def encrypted_url_hash
23
+ def current_url_hash
26
24
  return @current_url_hash if @current_url_hash
27
25
 
28
26
  key = ActionInterceptor.intercepted_url_key
@@ -33,14 +31,15 @@ module ActionInterceptor
33
31
  @current_url_hash = {key => url}
34
32
  end
35
33
 
36
- def interception_exec(&block)
37
- @original_default_url_options ||= default_url_options
34
+ # Executes the given block as if it was an interceptor
35
+ def with_interceptor(&block)
36
+ @previous_default_url_options ||= default_url_options
38
37
 
39
38
  begin
40
39
  # Send the referer with intercepted requests
41
40
  # So we don't rely on the user's browser to do it for us
42
- self.default_url_options = @original_default_url_options
43
- .merge(encrypted_url_hash)
41
+ self.default_url_options = @previous_default_url_options
42
+ .merge(current_url_hash)
44
43
 
45
44
  # Execute the block as if it was defined in this controller
46
45
  instance_exec &block
@@ -49,13 +48,13 @@ module ActionInterceptor
49
48
  # and return the given value
50
49
  e.exit_value
51
50
  ensure
52
- self.default_url_options = @original_default_url_options
51
+ self.default_url_options = @previous_default_url_options
53
52
  end
54
53
  end
55
54
 
56
55
  module ClassMethods
57
56
 
58
- def interception(*interceptor_names, &block)
57
+ def interceptor(*interceptor_names, &block)
59
58
  options = interceptor_names.extract_options!
60
59
  filter_name = options.delete(:filter_name)
61
60
  fnames = interceptor_names.collect do |iname|
@@ -66,7 +65,7 @@ module ActionInterceptor
66
65
  blk = block || ActionInterceptor.interceptors[iname]
67
66
  raise UndefinedInterceptor, iname unless blk
68
67
 
69
- interception_exec &blk
68
+ with_interceptor &blk
70
69
  end
71
70
 
72
71
  fname
@@ -75,7 +74,7 @@ module ActionInterceptor
75
74
  before_filter *fnames, options
76
75
  end
77
76
 
78
- def skip_interception(*interceptor_names)
77
+ def skip_interceptor(*interceptor_names)
79
78
  options = interceptor_names.extract_options!
80
79
  filter_name = options.delete(:filter_name)
81
80
  fnames = interceptor_names.collect do |iname|
@@ -85,36 +84,19 @@ module ActionInterceptor
85
84
  skip_before_filter *fnames, options
86
85
  end
87
86
 
88
- def acts_as_interceptor
87
+ def acts_as_interceptor(options = {})
89
88
  return if is_interceptor
90
89
  self.is_interceptor = true
91
90
 
92
- class_eval do
93
-
94
- helper_method :intercepted_url
95
-
96
- alias_method :url_options_without_interceptor, :url_options
97
-
98
- def url_options
99
- return @interceptor_url_options if @interceptor_url_options
100
-
101
- url = Encryptor.encrypt_and_sign(intercepted_url)
102
- key = ActionInterceptor.intercepted_url_key
103
- @interceptor_url_options = {key => url}.merge(super)
104
- end
91
+ @override_url_options = options[:override_url_options].nil? ? \
92
+ ActionInterceptor.override_url_options : \
93
+ options[:override_url_options]
105
94
 
106
- def without_interceptor_url_options(&block)
107
- url_options_with_interceptor = url_options
95
+ class_eval do
108
96
 
109
- begin
110
- @interceptor_url_options = url_options_without_interceptor
111
- yield block
112
- ensure
113
- @interceptor_url_options = url_options_with_interceptor
114
- end
115
- end
97
+ attr_writer :intercepted_url
116
98
 
117
- alias_method :without_interceptor, :without_interceptor_url_options
99
+ helper_method :intercepted_url
118
100
 
119
101
  def intercepted_url
120
102
  return @intercepted_url if @intercepted_url
@@ -123,7 +105,7 @@ module ActionInterceptor
123
105
  begin
124
106
  # URL params are the most reliable, as they preserve
125
107
  # state even if the user presses the back button
126
- # Prevent Open Redirect vulnerability
108
+ # We need to sign them to prevent the Open Redirect vulnerability
127
109
  @intercepted_url = Encryptor.decrypt_and_verify(params[key])
128
110
  rescue ActiveSupport::MessageVerifier::InvalidSignature
129
111
  # If the param is not available, use our best guess
@@ -137,11 +119,43 @@ module ActionInterceptor
137
119
  @intercepted_url
138
120
  end
139
121
 
122
+ def intercepted_url_hash
123
+ return @intercepted_url_hash if @intercepted_url_hash
124
+ url = Encryptor.encrypt_and_sign(intercepted_url)
125
+ key = ActionInterceptor.intercepted_url_key
126
+
127
+ @intercepted_url_hash = {key => url}
128
+ end
129
+
130
+ alias_method :url_options_without_interceptor, :url_options
131
+
132
+ def url_options_with_interceptor
133
+ return @url_options_with_interceptor \
134
+ if @url_options_with_interceptor
135
+
136
+ @url_options_with_interceptor = intercepted_url_hash.merge(
137
+ url_options_without_interceptor)
138
+ end
139
+
140
+ alias_method :url_options, :url_options_with_interceptor \
141
+ if @override_url_options.nil? || @override_url_options
142
+
143
+ def without_interceptor(&block)
144
+ previous_url_options = url_options_with_interceptor
145
+
146
+ begin
147
+ @url_options_with_interceptor = url_options_without_interceptor
148
+ yield block
149
+ ensure
150
+ @url_options_with_interceptor = previous_url_options
151
+ end
152
+ end
153
+
140
154
  def redirect_back(options = {})
141
155
  url = intercepted_url
142
156
 
143
157
  # Disable the return_to param
144
- without_interceptor_url_options do
158
+ without_interceptor do
145
159
  # Convert '/' back to root_url
146
160
  # Also, prevent self redirects
147
161
  url = root_url if url == '/' || current_page?(url)
@@ -1,4 +1,4 @@
1
1
  module ActionInterceptor
2
- VERSION = '0.0.3'
2
+ VERSION = '0.1.0'
3
3
  end
4
4
 
@@ -1,3 +1,7 @@
1
1
  class ApplicationController < ActionController::Base
2
2
  protect_from_forgery
3
+
4
+ cattr_accessor :is_registered
5
+
6
+ interceptor :registration, :my_interceptor
3
7
  end
@@ -0,0 +1,10 @@
1
+ class HomeController < ActionController::Base
2
+ skip_interceptor :registration, only: :index
3
+
4
+ def index
5
+ end
6
+
7
+ def api
8
+ end
9
+ end
10
+
@@ -0,0 +1,14 @@
1
+ class RegistrationsController < ActionController::Base
2
+ acts_as_interceptor
3
+
4
+ skip_interceptor :registration
5
+
6
+ def new
7
+ redirect_to registration_register_path
8
+ end
9
+
10
+ def register
11
+ redirect_back notice: 'Registration successful!'
12
+ end
13
+ end
14
+
@@ -22,4 +22,3 @@ module Dummy
22
22
  config.i18n.enforce_available_locales = true
23
23
  end
24
24
  end
25
-
@@ -0,0 +1,11 @@
1
+ ActionInterceptor.configure do
2
+ intercepted_url_key :dummy_key
3
+
4
+ override_url_options true
5
+
6
+ interceptor :registration do
7
+ end
8
+
9
+ interceptor :my_interceptor do
10
+ end
11
+ end
@@ -1,2 +1,9 @@
1
1
  Rails.application.routes.draw do
2
+ resource :registration, :only => [:new] do
3
+ get :register
4
+ end
5
+
6
+ get 'home/api'
7
+
8
+ root to: 'home#index'
2
9
  end
Binary file
File without changes
@@ -0,0 +1,57 @@
1
+ require 'spec_helper'
2
+
3
+ module ActionInterceptor
4
+ describe Controller do
5
+
6
+ it 'modifies ActionController::Base' do
7
+ expect(ActionController::Base).to respond_to(:is_interceptor)
8
+ expect(ActionController::Base).to respond_to(:interceptor_filters)
9
+ expect(ActionController::Base.is_interceptor).to be_false
10
+ expect(ActionController::Base.interceptor_filters).to be_a(Hash)
11
+
12
+ expect(ActionController::Base).to respond_to(:interceptor)
13
+ expect(ActionController::Base).to respond_to(:skip_interceptor)
14
+ expect(ActionController::Base).to respond_to(:acts_as_interceptor)
15
+
16
+ expect(ActionController::Base.new).to respond_to(:current_page?)
17
+ expect(ActionController::Base.new).to respond_to(:current_url)
18
+ expect(ActionController::Base.new).to respond_to(:current_url_hash)
19
+ expect(ActionController::Base.new).to respond_to(:with_interceptor)
20
+ end
21
+
22
+ it 'modifies classes that act_as_interceptor' do
23
+ expect(RegistrationsController.is_interceptor).to be_true
24
+
25
+ expect(RegistrationsController.new).to respond_to(:intercepted_url)
26
+ expect(RegistrationsController.new).to respond_to(:intercepted_url=)
27
+ expect(RegistrationsController.new).to respond_to(:intercepted_url_hash)
28
+ expect(RegistrationsController.new).to(
29
+ respond_to(:url_options_without_interceptor))
30
+ expect(RegistrationsController.new).to(
31
+ respond_to(:url_options_with_interceptor))
32
+ expect(RegistrationsController.new).to respond_to(:without_interceptor)
33
+ expect(RegistrationsController.new).to respond_to(:redirect_back)
34
+ end
35
+
36
+ it 'registers and skips before_filters' do
37
+ filters = RegistrationsController.new._process_action_callbacks
38
+ .collect{|c| c.filter}
39
+ expect(filters).not_to include(:my_interceptor)
40
+
41
+ RegistrationsController.interceptor :my_interceptor
42
+ filters = RegistrationsController.new._process_action_callbacks
43
+ .collect{|c| c.filter}
44
+ expect(filters).to include(:my_interceptor)
45
+
46
+ filters = ApplicationController.new._process_action_callbacks
47
+ .collect{|c| c.filter}
48
+ expect(filters).to include(:my_interceptor)
49
+
50
+ ApplicationController.skip_interceptor :my_interceptor
51
+ filters = ApplicationController.new._process_action_callbacks
52
+ .collect{|c| c.filter}
53
+ expect(filters).not_to include(:my_interceptor)
54
+ end
55
+
56
+ end
57
+ end
@@ -0,0 +1,19 @@
1
+ require 'spec_helper'
2
+
3
+ module ActionInterceptor
4
+ describe Encryptor do
5
+
6
+ it 'encrypts and decrypts strings' do
7
+ my_string = 'My string'
8
+ encrypted_string = Encryptor.encrypt_and_sign(my_string)
9
+ expect(encrypted_string).not_to include(my_string)
10
+
11
+ decrypted_string = Encryptor.decrypt_and_verify(encrypted_string)
12
+ expect(decrypted_string).to eq(my_string)
13
+
14
+ expect{Encryptor.decrypt_and_verify(my_string)}.to(
15
+ raise_error(ActiveSupport::MessageVerifier::InvalidSignature))
16
+ end
17
+
18
+ end
19
+ end
@@ -0,0 +1,21 @@
1
+ require 'spec_helper'
2
+
3
+ describe ActionInterceptor do
4
+ it 'must be configurable' do
5
+ expect(ActionInterceptor.intercepted_url_key).to eq(:dummy_key)
6
+ expect(ActionInterceptor.override_url_options).to be_true
7
+ expect(ActionInterceptor.interceptors.keys).to include(:registration)
8
+
9
+ my_block = lambda { 'my_block' }
10
+
11
+ ActionInterceptor.configure do
12
+ intercepted_url_key :my_key
13
+ override_url_options false
14
+ interceptor :my_name, &my_block
15
+ end
16
+
17
+ expect(ActionInterceptor.intercepted_url_key).to eq(:my_key)
18
+ expect(ActionInterceptor.override_url_options).to be_false
19
+ expect(ActionInterceptor.interceptors).to include({:my_name => my_block})
20
+ end
21
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: action_interceptor
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dante Soares
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-05-16 00:00:00.000000000 Z
11
+ date: 2014-05-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -24,20 +24,6 @@ dependencies:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '3.1'
27
- - !ruby/object:Gem::Dependency
28
- name: public_suffix
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - ">="
32
- - !ruby/object:Gem::Version
33
- version: 0.9.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.9.1
41
27
  - !ruby/object:Gem::Dependency
42
28
  name: sqlite3
43
29
  requirement: !ruby/object:Gem::Requirement
@@ -66,8 +52,9 @@ dependencies:
66
52
  - - ">="
67
53
  - !ruby/object:Gem::Version
68
54
  version: '0'
69
- description: Facilitates redirection to and from controllers that require users to
70
- perform some task, then redirect them back to where they were.
55
+ description: Action Interceptor provides controllers that require users to perform
56
+ some task, then redirect them back to the page they were on. Useful for authentication,
57
+ registration, signing terms of use, etc.
71
58
  email:
72
59
  - dms3@rice.edu
73
60
  executables: []
@@ -89,8 +76,9 @@ files:
89
76
  - spec/dummy/app/assets/javascripts/application.js
90
77
  - spec/dummy/app/assets/stylesheets/application.css
91
78
  - spec/dummy/app/controllers/application_controller.rb
79
+ - spec/dummy/app/controllers/home_controller.rb
80
+ - spec/dummy/app/controllers/registrations_controller.rb
92
81
  - spec/dummy/app/helpers/application_helper.rb
93
- - spec/dummy/app/views/layouts/application.html.erb
94
82
  - spec/dummy/bin/bundle
95
83
  - spec/dummy/bin/rails
96
84
  - spec/dummy/bin/rake
@@ -102,6 +90,7 @@ files:
102
90
  - spec/dummy/config/environments/development.rb
103
91
  - spec/dummy/config/environments/production.rb
104
92
  - spec/dummy/config/environments/test.rb
93
+ - spec/dummy/config/initializers/action_interceptor.rb
105
94
  - spec/dummy/config/initializers/backtrace_silencers.rb
106
95
  - spec/dummy/config/initializers/filter_parameter_logging.rb
107
96
  - spec/dummy/config/initializers/inflections.rb
@@ -111,13 +100,16 @@ files:
111
100
  - spec/dummy/config/initializers/wrap_parameters.rb
112
101
  - spec/dummy/config/locales/en.yml
113
102
  - spec/dummy/config/routes.rb
114
- - spec/dummy/db/development.sqlite3
115
103
  - spec/dummy/db/test.sqlite3
116
104
  - spec/dummy/log/development.log
105
+ - spec/dummy/log/test.log
117
106
  - spec/dummy/public/404.html
118
107
  - spec/dummy/public/422.html
119
108
  - spec/dummy/public/500.html
120
109
  - spec/dummy/public/favicon.ico
110
+ - spec/lib/action_interceptor/controller_spec.rb
111
+ - spec/lib/action_interceptor/encryptor_spec.rb
112
+ - spec/lib/action_interceptor_spec.rb
121
113
  - spec/spec_helper.rb
122
114
  homepage: http://github.com/openstax/action_interceptor
123
115
  licenses:
@@ -147,8 +139,9 @@ test_files:
147
139
  - spec/dummy/app/assets/javascripts/application.js
148
140
  - spec/dummy/app/assets/stylesheets/application.css
149
141
  - spec/dummy/app/controllers/application_controller.rb
142
+ - spec/dummy/app/controllers/home_controller.rb
143
+ - spec/dummy/app/controllers/registrations_controller.rb
150
144
  - spec/dummy/app/helpers/application_helper.rb
151
- - spec/dummy/app/views/layouts/application.html.erb
152
145
  - spec/dummy/bin/bundle
153
146
  - spec/dummy/bin/rails
154
147
  - spec/dummy/bin/rake
@@ -159,6 +152,7 @@ test_files:
159
152
  - spec/dummy/config/environments/development.rb
160
153
  - spec/dummy/config/environments/production.rb
161
154
  - spec/dummy/config/environments/test.rb
155
+ - spec/dummy/config/initializers/action_interceptor.rb
162
156
  - spec/dummy/config/initializers/backtrace_silencers.rb
163
157
  - spec/dummy/config/initializers/filter_parameter_logging.rb
164
158
  - spec/dummy/config/initializers/inflections.rb
@@ -169,13 +163,16 @@ test_files:
169
163
  - spec/dummy/config/locales/en.yml
170
164
  - spec/dummy/config/routes.rb
171
165
  - spec/dummy/config.ru
172
- - spec/dummy/db/development.sqlite3
173
166
  - spec/dummy/db/test.sqlite3
174
167
  - spec/dummy/log/development.log
168
+ - spec/dummy/log/test.log
175
169
  - spec/dummy/public/404.html
176
170
  - spec/dummy/public/422.html
177
171
  - spec/dummy/public/500.html
178
172
  - spec/dummy/public/favicon.ico
179
173
  - spec/dummy/Rakefile
180
174
  - spec/dummy/README.md
175
+ - spec/lib/action_interceptor/controller_spec.rb
176
+ - spec/lib/action_interceptor/encryptor_spec.rb
177
+ - spec/lib/action_interceptor_spec.rb
181
178
  - spec/spec_helper.rb
@@ -1,14 +0,0 @@
1
- <!DOCTYPE html>
2
- <html>
3
- <head>
4
- <title>Dummy</title>
5
- <%= stylesheet_link_tag "application", media: "all", "data-turbolinks-track" => true %>
6
- <%= javascript_include_tag "application", "data-turbolinks-track" => true %>
7
- <%= csrf_meta_tags %>
8
- </head>
9
- <body>
10
-
11
- <%= yield %>
12
-
13
- </body>
14
- </html>
Binary file