warden_watch 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (59) hide show
  1. data/.gitignore +20 -0
  2. data/.rspec +2 -0
  3. data/.rvmrc +2 -0
  4. data/Gemfile +8 -0
  5. data/LICENSE.txt +22 -0
  6. data/README.md +27 -0
  7. data/Rakefile +15 -0
  8. data/app/models/warden_watch/user_visit.rb +9 -0
  9. data/db/migrate/20130214010145_create_warden_watch_user_visits.rb +12 -0
  10. data/lib/tasks/warden_watch_tasks.rake +4 -0
  11. data/lib/warden_watch.rb +12 -0
  12. data/lib/warden_watch/authentication_event.rb +21 -0
  13. data/lib/warden_watch/engine.rb +15 -0
  14. data/lib/warden_watch/hook.rb +14 -0
  15. data/lib/warden_watch/model.rb +21 -0
  16. data/lib/warden_watch/version.rb +4 -0
  17. data/script/rails +8 -0
  18. data/spec/dummy/README.rdoc +261 -0
  19. data/spec/dummy/Rakefile +7 -0
  20. data/spec/dummy/app/assets/javascripts/application.js +15 -0
  21. data/spec/dummy/app/assets/stylesheets/application.css +13 -0
  22. data/spec/dummy/app/controllers/application_controller.rb +3 -0
  23. data/spec/dummy/app/helpers/application_helper.rb +2 -0
  24. data/spec/dummy/app/mailers/.gitkeep +0 -0
  25. data/spec/dummy/app/models/.gitkeep +0 -0
  26. data/spec/dummy/app/views/layouts/application.html.erb +14 -0
  27. data/spec/dummy/config.ru +4 -0
  28. data/spec/dummy/config/application.rb +59 -0
  29. data/spec/dummy/config/boot.rb +10 -0
  30. data/spec/dummy/config/database.yml +25 -0
  31. data/spec/dummy/config/environment.rb +5 -0
  32. data/spec/dummy/config/environments/development.rb +37 -0
  33. data/spec/dummy/config/environments/production.rb +67 -0
  34. data/spec/dummy/config/environments/test.rb +37 -0
  35. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  36. data/spec/dummy/config/initializers/inflections.rb +15 -0
  37. data/spec/dummy/config/initializers/mime_types.rb +5 -0
  38. data/spec/dummy/config/initializers/secret_token.rb +7 -0
  39. data/spec/dummy/config/initializers/session_store.rb +8 -0
  40. data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
  41. data/spec/dummy/config/locales/en.yml +5 -0
  42. data/spec/dummy/config/routes.rb +58 -0
  43. data/spec/dummy/db/migrate/20130214014453_create_users.rb +9 -0
  44. data/spec/dummy/db/migrate/20130214014754_create_warden_watch_user_visits.warden_watch.rb +13 -0
  45. data/spec/dummy/db/schema.rb +29 -0
  46. data/spec/dummy/lib/assets/.gitkeep +0 -0
  47. data/spec/dummy/log/.gitkeep +0 -0
  48. data/spec/dummy/public/404.html +26 -0
  49. data/spec/dummy/public/422.html +26 -0
  50. data/spec/dummy/public/500.html +25 -0
  51. data/spec/dummy/public/favicon.ico +0 -0
  52. data/spec/dummy/script/rails +6 -0
  53. data/spec/models/warden_watch/user_visit_spec.rb +12 -0
  54. data/spec/spec_helper.rb +22 -0
  55. data/spec/warden_watch/authentication_event_spec.rb +28 -0
  56. data/spec/warden_watch/hook_spec.rb +74 -0
  57. data/spec/warden_watch/model_spec.rb +39 -0
  58. data/warden_watch.gemspec +35 -0
  59. metadata +358 -0
@@ -0,0 +1,9 @@
1
+ class CreateUsers < ActiveRecord::Migration
2
+ def up
3
+ create_table :users do
4
+ end
5
+ end
6
+
7
+ def down
8
+ end
9
+ end
@@ -0,0 +1,13 @@
1
+ # This migration comes from warden_watch (originally 20130214010145)
2
+ class CreateWardenWatchUserVisits < ActiveRecord::Migration
3
+ def change
4
+ create_table :warden_watch_user_visits do |t|
5
+ t.string :ip_address
6
+ t.references :visitor, :polymorphic => true
7
+ t.timestamps
8
+ end
9
+
10
+ add_index :warden_watch_user_visits, [:visitor_id, :visitor_type]
11
+ end
12
+ end
13
+
@@ -0,0 +1,29 @@
1
+ # encoding: UTF-8
2
+ # This file is auto-generated from the current state of the database. Instead
3
+ # of editing this file, please use the migrations feature of Active Record to
4
+ # incrementally modify your database, and then regenerate this schema definition.
5
+ #
6
+ # Note that this schema.rb definition is the authoritative source for your
7
+ # database schema. If you need to create the application database on another
8
+ # system, you should be using db:schema:load, not running all the migrations
9
+ # from scratch. The latter is a flawed and unsustainable approach (the more migrations
10
+ # you'll amass, the slower it'll run and the greater likelihood for issues).
11
+ #
12
+ # It's strongly recommended to check this file into your version control system.
13
+
14
+ ActiveRecord::Schema.define(:version => 20130214014754) do
15
+
16
+ create_table "users", :force => true do |t|
17
+ end
18
+
19
+ create_table "warden_watch_user_visits", :force => true do |t|
20
+ t.string "ip_address"
21
+ t.integer "visitor_id"
22
+ t.string "visitor_type"
23
+ t.datetime "created_at", :null => false
24
+ t.datetime "updated_at", :null => false
25
+ end
26
+
27
+ add_index "warden_watch_user_visits", ["visitor_id", "visitor_type"], :name => "index_warden_watch_user_visits_on_visitor_id_and_visitor_type"
28
+
29
+ end
File without changes
File without changes
@@ -0,0 +1,26 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>The page you were looking for doesn't exist (404)</title>
5
+ <style type="text/css">
6
+ body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
7
+ div.dialog {
8
+ width: 25em;
9
+ padding: 0 4em;
10
+ margin: 4em auto 0 auto;
11
+ border: 1px solid #ccc;
12
+ border-right-color: #999;
13
+ border-bottom-color: #999;
14
+ }
15
+ h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
16
+ </style>
17
+ </head>
18
+
19
+ <body>
20
+ <!-- This file lives in public/404.html -->
21
+ <div class="dialog">
22
+ <h1>The page you were looking for doesn't exist.</h1>
23
+ <p>You may have mistyped the address or the page may have moved.</p>
24
+ </div>
25
+ </body>
26
+ </html>
@@ -0,0 +1,26 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>The change you wanted was rejected (422)</title>
5
+ <style type="text/css">
6
+ body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
7
+ div.dialog {
8
+ width: 25em;
9
+ padding: 0 4em;
10
+ margin: 4em auto 0 auto;
11
+ border: 1px solid #ccc;
12
+ border-right-color: #999;
13
+ border-bottom-color: #999;
14
+ }
15
+ h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
16
+ </style>
17
+ </head>
18
+
19
+ <body>
20
+ <!-- This file lives in public/422.html -->
21
+ <div class="dialog">
22
+ <h1>The change you wanted was rejected.</h1>
23
+ <p>Maybe you tried to change something you didn't have access to.</p>
24
+ </div>
25
+ </body>
26
+ </html>
@@ -0,0 +1,25 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>We're sorry, but something went wrong (500)</title>
5
+ <style type="text/css">
6
+ body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
7
+ div.dialog {
8
+ width: 25em;
9
+ padding: 0 4em;
10
+ margin: 4em auto 0 auto;
11
+ border: 1px solid #ccc;
12
+ border-right-color: #999;
13
+ border-bottom-color: #999;
14
+ }
15
+ h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
16
+ </style>
17
+ </head>
18
+
19
+ <body>
20
+ <!-- This file lives in public/500.html -->
21
+ <div class="dialog">
22
+ <h1>We're sorry, but something went wrong.</h1>
23
+ </div>
24
+ </body>
25
+ </html>
File without changes
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env ruby
2
+ # This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.
3
+
4
+ APP_PATH = File.expand_path('../../config/application', __FILE__)
5
+ require File.expand_path('../../config/boot', __FILE__)
6
+ require 'rails/commands'
@@ -0,0 +1,12 @@
1
+ require 'spec_helper'
2
+
3
+ describe WardenWatch::UserVisit do
4
+ class User < ActiveRecord::Base
5
+ self.table_name = 'users'
6
+
7
+ include WardenWatch::Model
8
+ end
9
+
10
+ it { should belong_to :visitor }
11
+ end
12
+
@@ -0,0 +1,22 @@
1
+ require 'mocha/api'
2
+ require 'bourne'
3
+
4
+ ENV["RAILS_ENV"] = "test"
5
+
6
+ require File.expand_path("../dummy/config/environment.rb", __FILE__)
7
+
8
+ require 'rspec/rails'
9
+ require 'shoulda-matchers'
10
+
11
+ require 'warden_watch'
12
+
13
+ Rails.backtrace_cleaner.remove_silencers!
14
+
15
+ Dir[File.dirname(__FILE__) + "/support/**/*.rb"].each {|f| require f}
16
+
17
+ RSpec.configure do |config|
18
+ config.mock_with :mocha
19
+
20
+ config.treat_symbols_as_metadata_keys_with_true_values = true
21
+ end
22
+
@@ -0,0 +1,28 @@
1
+ require 'spec_helper'
2
+
3
+ describe WardenWatch::AuthenticationEvent do
4
+ let(:mock_user) do
5
+ mock.tap do |m|
6
+ m.stubs(:track_visit!)
7
+ end
8
+ end
9
+
10
+ let(:auth) { [200, {}, ''] }
11
+ let(:opts) { { :event => :not_fetch} }
12
+
13
+ let(:auth_event) do
14
+ WardenWatch::AuthenticationEvent.new(mock_user, auth, opts)
15
+ end
16
+
17
+ it 'tracks an authentication event when it is not fetch' do
18
+ auth_event.track!
19
+
20
+ expect(mock_user).to have_received(:track_visit!).once
21
+ end
22
+
23
+ it 'does not track an authentication event when it is fetch' do
24
+ opts[:event] = :fetch
25
+ expect(mock_user).to have_received(:track_visit!).never
26
+ end
27
+ end
28
+
@@ -0,0 +1,74 @@
1
+ require 'spec_helper'
2
+ require 'rack/test'
3
+
4
+ describe WardenWatch::Hook do
5
+ include Warden::Test::Helpers
6
+
7
+ before :all do
8
+ Warden.test_mode!
9
+ end
10
+
11
+ before(:each) do
12
+ Warden::Manager._after_set_user.clear
13
+ end
14
+
15
+ it 'tracks an authentication event when a user is set' do
16
+ mock_auth_event = mock.tap do |m|
17
+ m.stubs(:track!)
18
+ end
19
+
20
+ WardenWatch::AuthenticationEvent.stubs(:new).returns(mock_auth_event)
21
+ WardenWatch::Hook.enable!
22
+
23
+ app = lambda do |e|
24
+ e['warden'].set_user("foo")
25
+ valid_response
26
+ end
27
+
28
+ env = env_with_params
29
+ setup_rack(app).call(env)
30
+
31
+ expect(mock_auth_event).to have_received(:track!).once
32
+ end
33
+
34
+ protected
35
+ #taken from warden core
36
+ def setup_rack(app = nil, opts = {}, &block)
37
+ app ||= block if block_given?
38
+
39
+ opts[:failure_app] ||= [500, {}, 'Error']
40
+ opts[:default_strategies] ||= [:password]
41
+ opts[:default_serializers] ||= [:session]
42
+ blk = opts[:configurator] || proc{}
43
+
44
+ Rack::Builder.new do
45
+ use opts[:session] || SessionHelper
46
+ use Warden::Manager, opts, &blk
47
+ run app
48
+ end
49
+ end
50
+
51
+ def env_with_params(path = "/", params = {}, env = {})
52
+ method = params.delete(:method) || "GET"
53
+ env = { 'HTTP_VERSION' => '1.1', 'REQUEST_METHOD' => "#{method}" }.merge(env)
54
+ Rack::MockRequest.env_for("#{path}?#{Rack::Utils.build_query(params)}", env)
55
+ end
56
+
57
+ def valid_response
58
+ Rack::Response.new("OK").finish
59
+ end
60
+
61
+
62
+ class SessionHelper
63
+ attr_accessor :app
64
+ def initialize(app,configs = {})
65
+ @app = app
66
+ end
67
+
68
+ def call(e)
69
+ e['rack.session'] ||= {}
70
+ @app.call(e)
71
+ end
72
+ end
73
+ end
74
+
@@ -0,0 +1,39 @@
1
+ require 'spec_helper'
2
+
3
+ describe WardenWatch::Model do
4
+ class User < ActiveRecord::Base
5
+ self.table_name = 'users'
6
+
7
+ include WardenWatch::Model
8
+ end
9
+
10
+ subject { User.new }
11
+
12
+ it { should have_many :visits }
13
+
14
+ it 'logs a visit record' do
15
+ user = User.new
16
+ track_visit(user, mock_request('/'), {})
17
+ user.visits.count.should eql(1)
18
+ end
19
+
20
+ it 'logs the ip address' do
21
+ user = User.new
22
+ env = mock_request('/')
23
+ env['REMOTE_ADDR'] = '127.0.0.1'
24
+ track_visit(user, env, {})
25
+ user.visits.first.ip_address.should_not be_nil
26
+ end
27
+
28
+ protected
29
+ def mock_request(path)
30
+ Rack::MockRequest.env_for("/")
31
+ end
32
+
33
+ def track_visit(user, env, opts)
34
+ user.save!
35
+ auth = mock(:env => env)
36
+ user.track_visit!(auth, opts)
37
+ end
38
+ end
39
+
@@ -0,0 +1,35 @@
1
+ # -*- encoding: utf-8 -*-
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'warden_watch/version'
5
+
6
+ Gem::Specification.new do |gem|
7
+ gem.name = 'warden_watch'
8
+ gem.version = WardenWatch::VERSION
9
+ gem.authors = ["Dan Pickett", 'Jason Zopf']
10
+ gem.email = ['dan.pickett@launchware.com']
11
+ gem.description = %q{tracks user logins with warden}
12
+ gem.summary = %q{tracks user logins with warden}
13
+ gem.homepage = ""
14
+
15
+ gem.files = `git ls-files`.split($/)
16
+ gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
17
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
18
+ gem.require_paths = ["lib"]
19
+
20
+ gem.add_dependency 'warden'
21
+ gem.add_dependency 'railties', '~> 3.0'
22
+ gem.add_dependency 'activerecord', '~> 3.0'
23
+
24
+ gem.add_development_dependency 'rake'
25
+ gem.add_development_dependency 'rspec-rails'
26
+ gem.add_development_dependency 'mocha'
27
+ gem.add_development_dependency 'bourne'
28
+ gem.add_development_dependency 'fuubar'
29
+ gem.add_development_dependency 'rack-test'
30
+ gem.add_development_dependency 'guard-rspec'
31
+ gem.add_development_dependency 'rails'
32
+ gem.add_development_dependency 'shoulda'
33
+ gem.add_development_dependency 'sqlite3'
34
+ end
35
+
metadata ADDED
@@ -0,0 +1,358 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: warden_watch
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Dan Pickett
9
+ - Jason Zopf
10
+ autorequire:
11
+ bindir: bin
12
+ cert_chain: []
13
+ date: 2013-02-15 00:00:00.000000000 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: warden
17
+ requirement: !ruby/object:Gem::Requirement
18
+ none: false
19
+ requirements:
20
+ - - ! '>='
21
+ - !ruby/object:Gem::Version
22
+ version: '0'
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ none: false
27
+ requirements:
28
+ - - ! '>='
29
+ - !ruby/object:Gem::Version
30
+ version: '0'
31
+ - !ruby/object:Gem::Dependency
32
+ name: railties
33
+ requirement: !ruby/object:Gem::Requirement
34
+ none: false
35
+ requirements:
36
+ - - ~>
37
+ - !ruby/object:Gem::Version
38
+ version: '3.0'
39
+ type: :runtime
40
+ prerelease: false
41
+ version_requirements: !ruby/object:Gem::Requirement
42
+ none: false
43
+ requirements:
44
+ - - ~>
45
+ - !ruby/object:Gem::Version
46
+ version: '3.0'
47
+ - !ruby/object:Gem::Dependency
48
+ name: activerecord
49
+ requirement: !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: '3.0'
55
+ type: :runtime
56
+ prerelease: false
57
+ version_requirements: !ruby/object:Gem::Requirement
58
+ none: false
59
+ requirements:
60
+ - - ~>
61
+ - !ruby/object:Gem::Version
62
+ version: '3.0'
63
+ - !ruby/object:Gem::Dependency
64
+ name: rake
65
+ requirement: !ruby/object:Gem::Requirement
66
+ none: false
67
+ requirements:
68
+ - - ! '>='
69
+ - !ruby/object:Gem::Version
70
+ version: '0'
71
+ type: :development
72
+ prerelease: false
73
+ version_requirements: !ruby/object:Gem::Requirement
74
+ none: false
75
+ requirements:
76
+ - - ! '>='
77
+ - !ruby/object:Gem::Version
78
+ version: '0'
79
+ - !ruby/object:Gem::Dependency
80
+ name: rspec-rails
81
+ requirement: !ruby/object:Gem::Requirement
82
+ none: false
83
+ requirements:
84
+ - - ! '>='
85
+ - !ruby/object:Gem::Version
86
+ version: '0'
87
+ type: :development
88
+ prerelease: false
89
+ version_requirements: !ruby/object:Gem::Requirement
90
+ none: false
91
+ requirements:
92
+ - - ! '>='
93
+ - !ruby/object:Gem::Version
94
+ version: '0'
95
+ - !ruby/object:Gem::Dependency
96
+ name: mocha
97
+ requirement: !ruby/object:Gem::Requirement
98
+ none: false
99
+ requirements:
100
+ - - ! '>='
101
+ - !ruby/object:Gem::Version
102
+ version: '0'
103
+ type: :development
104
+ prerelease: false
105
+ version_requirements: !ruby/object:Gem::Requirement
106
+ none: false
107
+ requirements:
108
+ - - ! '>='
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: bourne
113
+ requirement: !ruby/object:Gem::Requirement
114
+ none: false
115
+ requirements:
116
+ - - ! '>='
117
+ - !ruby/object:Gem::Version
118
+ version: '0'
119
+ type: :development
120
+ prerelease: false
121
+ version_requirements: !ruby/object:Gem::Requirement
122
+ none: false
123
+ requirements:
124
+ - - ! '>='
125
+ - !ruby/object:Gem::Version
126
+ version: '0'
127
+ - !ruby/object:Gem::Dependency
128
+ name: fuubar
129
+ requirement: !ruby/object:Gem::Requirement
130
+ none: false
131
+ requirements:
132
+ - - ! '>='
133
+ - !ruby/object:Gem::Version
134
+ version: '0'
135
+ type: :development
136
+ prerelease: false
137
+ version_requirements: !ruby/object:Gem::Requirement
138
+ none: false
139
+ requirements:
140
+ - - ! '>='
141
+ - !ruby/object:Gem::Version
142
+ version: '0'
143
+ - !ruby/object:Gem::Dependency
144
+ name: rack-test
145
+ requirement: !ruby/object:Gem::Requirement
146
+ none: false
147
+ requirements:
148
+ - - ! '>='
149
+ - !ruby/object:Gem::Version
150
+ version: '0'
151
+ type: :development
152
+ prerelease: false
153
+ version_requirements: !ruby/object:Gem::Requirement
154
+ none: false
155
+ requirements:
156
+ - - ! '>='
157
+ - !ruby/object:Gem::Version
158
+ version: '0'
159
+ - !ruby/object:Gem::Dependency
160
+ name: guard-rspec
161
+ requirement: !ruby/object:Gem::Requirement
162
+ none: false
163
+ requirements:
164
+ - - ! '>='
165
+ - !ruby/object:Gem::Version
166
+ version: '0'
167
+ type: :development
168
+ prerelease: false
169
+ version_requirements: !ruby/object:Gem::Requirement
170
+ none: false
171
+ requirements:
172
+ - - ! '>='
173
+ - !ruby/object:Gem::Version
174
+ version: '0'
175
+ - !ruby/object:Gem::Dependency
176
+ name: rails
177
+ requirement: !ruby/object:Gem::Requirement
178
+ none: false
179
+ requirements:
180
+ - - ! '>='
181
+ - !ruby/object:Gem::Version
182
+ version: '0'
183
+ type: :development
184
+ prerelease: false
185
+ version_requirements: !ruby/object:Gem::Requirement
186
+ none: false
187
+ requirements:
188
+ - - ! '>='
189
+ - !ruby/object:Gem::Version
190
+ version: '0'
191
+ - !ruby/object:Gem::Dependency
192
+ name: shoulda
193
+ requirement: !ruby/object:Gem::Requirement
194
+ none: false
195
+ requirements:
196
+ - - ! '>='
197
+ - !ruby/object:Gem::Version
198
+ version: '0'
199
+ type: :development
200
+ prerelease: false
201
+ version_requirements: !ruby/object:Gem::Requirement
202
+ none: false
203
+ requirements:
204
+ - - ! '>='
205
+ - !ruby/object:Gem::Version
206
+ version: '0'
207
+ - !ruby/object:Gem::Dependency
208
+ name: sqlite3
209
+ requirement: !ruby/object:Gem::Requirement
210
+ none: false
211
+ requirements:
212
+ - - ! '>='
213
+ - !ruby/object:Gem::Version
214
+ version: '0'
215
+ type: :development
216
+ prerelease: false
217
+ version_requirements: !ruby/object:Gem::Requirement
218
+ none: false
219
+ requirements:
220
+ - - ! '>='
221
+ - !ruby/object:Gem::Version
222
+ version: '0'
223
+ description: tracks user logins with warden
224
+ email:
225
+ - dan.pickett@launchware.com
226
+ executables: []
227
+ extensions: []
228
+ extra_rdoc_files: []
229
+ files:
230
+ - .gitignore
231
+ - .rspec
232
+ - .rvmrc
233
+ - Gemfile
234
+ - LICENSE.txt
235
+ - README.md
236
+ - Rakefile
237
+ - app/models/warden_watch/user_visit.rb
238
+ - db/migrate/20130214010145_create_warden_watch_user_visits.rb
239
+ - lib/tasks/warden_watch_tasks.rake
240
+ - lib/warden_watch.rb
241
+ - lib/warden_watch/authentication_event.rb
242
+ - lib/warden_watch/engine.rb
243
+ - lib/warden_watch/hook.rb
244
+ - lib/warden_watch/model.rb
245
+ - lib/warden_watch/version.rb
246
+ - script/rails
247
+ - spec/dummy/README.rdoc
248
+ - spec/dummy/Rakefile
249
+ - spec/dummy/app/assets/javascripts/application.js
250
+ - spec/dummy/app/assets/stylesheets/application.css
251
+ - spec/dummy/app/controllers/application_controller.rb
252
+ - spec/dummy/app/helpers/application_helper.rb
253
+ - spec/dummy/app/mailers/.gitkeep
254
+ - spec/dummy/app/models/.gitkeep
255
+ - spec/dummy/app/views/layouts/application.html.erb
256
+ - spec/dummy/config.ru
257
+ - spec/dummy/config/application.rb
258
+ - spec/dummy/config/boot.rb
259
+ - spec/dummy/config/database.yml
260
+ - spec/dummy/config/environment.rb
261
+ - spec/dummy/config/environments/development.rb
262
+ - spec/dummy/config/environments/production.rb
263
+ - spec/dummy/config/environments/test.rb
264
+ - spec/dummy/config/initializers/backtrace_silencers.rb
265
+ - spec/dummy/config/initializers/inflections.rb
266
+ - spec/dummy/config/initializers/mime_types.rb
267
+ - spec/dummy/config/initializers/secret_token.rb
268
+ - spec/dummy/config/initializers/session_store.rb
269
+ - spec/dummy/config/initializers/wrap_parameters.rb
270
+ - spec/dummy/config/locales/en.yml
271
+ - spec/dummy/config/routes.rb
272
+ - spec/dummy/db/migrate/20130214014453_create_users.rb
273
+ - spec/dummy/db/migrate/20130214014754_create_warden_watch_user_visits.warden_watch.rb
274
+ - spec/dummy/db/schema.rb
275
+ - spec/dummy/lib/assets/.gitkeep
276
+ - spec/dummy/log/.gitkeep
277
+ - spec/dummy/public/404.html
278
+ - spec/dummy/public/422.html
279
+ - spec/dummy/public/500.html
280
+ - spec/dummy/public/favicon.ico
281
+ - spec/dummy/script/rails
282
+ - spec/models/warden_watch/user_visit_spec.rb
283
+ - spec/spec_helper.rb
284
+ - spec/warden_watch/authentication_event_spec.rb
285
+ - spec/warden_watch/hook_spec.rb
286
+ - spec/warden_watch/model_spec.rb
287
+ - warden_watch.gemspec
288
+ homepage: ''
289
+ licenses: []
290
+ post_install_message:
291
+ rdoc_options: []
292
+ require_paths:
293
+ - lib
294
+ required_ruby_version: !ruby/object:Gem::Requirement
295
+ none: false
296
+ requirements:
297
+ - - ! '>='
298
+ - !ruby/object:Gem::Version
299
+ version: '0'
300
+ segments:
301
+ - 0
302
+ hash: -4009172776532392641
303
+ required_rubygems_version: !ruby/object:Gem::Requirement
304
+ none: false
305
+ requirements:
306
+ - - ! '>='
307
+ - !ruby/object:Gem::Version
308
+ version: '0'
309
+ segments:
310
+ - 0
311
+ hash: -4009172776532392641
312
+ requirements: []
313
+ rubyforge_project:
314
+ rubygems_version: 1.8.24
315
+ signing_key:
316
+ specification_version: 3
317
+ summary: tracks user logins with warden
318
+ test_files:
319
+ - spec/dummy/README.rdoc
320
+ - spec/dummy/Rakefile
321
+ - spec/dummy/app/assets/javascripts/application.js
322
+ - spec/dummy/app/assets/stylesheets/application.css
323
+ - spec/dummy/app/controllers/application_controller.rb
324
+ - spec/dummy/app/helpers/application_helper.rb
325
+ - spec/dummy/app/mailers/.gitkeep
326
+ - spec/dummy/app/models/.gitkeep
327
+ - spec/dummy/app/views/layouts/application.html.erb
328
+ - spec/dummy/config.ru
329
+ - spec/dummy/config/application.rb
330
+ - spec/dummy/config/boot.rb
331
+ - spec/dummy/config/database.yml
332
+ - spec/dummy/config/environment.rb
333
+ - spec/dummy/config/environments/development.rb
334
+ - spec/dummy/config/environments/production.rb
335
+ - spec/dummy/config/environments/test.rb
336
+ - spec/dummy/config/initializers/backtrace_silencers.rb
337
+ - spec/dummy/config/initializers/inflections.rb
338
+ - spec/dummy/config/initializers/mime_types.rb
339
+ - spec/dummy/config/initializers/secret_token.rb
340
+ - spec/dummy/config/initializers/session_store.rb
341
+ - spec/dummy/config/initializers/wrap_parameters.rb
342
+ - spec/dummy/config/locales/en.yml
343
+ - spec/dummy/config/routes.rb
344
+ - spec/dummy/db/migrate/20130214014453_create_users.rb
345
+ - spec/dummy/db/migrate/20130214014754_create_warden_watch_user_visits.warden_watch.rb
346
+ - spec/dummy/db/schema.rb
347
+ - spec/dummy/lib/assets/.gitkeep
348
+ - spec/dummy/log/.gitkeep
349
+ - spec/dummy/public/404.html
350
+ - spec/dummy/public/422.html
351
+ - spec/dummy/public/500.html
352
+ - spec/dummy/public/favicon.ico
353
+ - spec/dummy/script/rails
354
+ - spec/models/warden_watch/user_visit_spec.rb
355
+ - spec/spec_helper.rb
356
+ - spec/warden_watch/authentication_event_spec.rb
357
+ - spec/warden_watch/hook_spec.rb
358
+ - spec/warden_watch/model_spec.rb