clearance_http_auth 0.0.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.
Files changed (60) hide show
  1. data/MIT-LICENSE +20 -0
  2. data/README.rdoc +58 -0
  3. data/Rakefile +29 -0
  4. data/lib/clearance_http_auth/configuration.rb +18 -0
  5. data/lib/clearance_http_auth/current_user_override.rb +20 -0
  6. data/lib/clearance_http_auth/engine.rb +13 -0
  7. data/lib/clearance_http_auth/middleware.rb +39 -0
  8. data/lib/clearance_http_auth/version.rb +5 -0
  9. data/lib/clearance_http_auth.rb +21 -0
  10. data/test/clearance_http_auth_test.rb +17 -0
  11. data/test/dummy/Rakefile +7 -0
  12. data/test/dummy/app/controllers/application_controller.rb +5 -0
  13. data/test/dummy/app/controllers/entrances_controller.rb +29 -0
  14. data/test/dummy/app/helpers/application_helper.rb +2 -0
  15. data/test/dummy/app/helpers/entrance_helper.rb +2 -0
  16. data/test/dummy/app/models/user.rb +3 -0
  17. data/test/dummy/app/views/layouts/application.html.erb +14 -0
  18. data/test/dummy/config/application.rb +47 -0
  19. data/test/dummy/config/boot.rb +10 -0
  20. data/test/dummy/config/database.yml +22 -0
  21. data/test/dummy/config/environment.rb +5 -0
  22. data/test/dummy/config/environments/development.rb +26 -0
  23. data/test/dummy/config/environments/production.rb +49 -0
  24. data/test/dummy/config/environments/test.rb +35 -0
  25. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  26. data/test/dummy/config/initializers/clearance.rb +3 -0
  27. data/test/dummy/config/initializers/inflections.rb +10 -0
  28. data/test/dummy/config/initializers/mime_types.rb +1 -0
  29. data/test/dummy/config/initializers/secret_token.rb +7 -0
  30. data/test/dummy/config/initializers/session_store.rb +8 -0
  31. data/test/dummy/config/locales/en.yml +5 -0
  32. data/test/dummy/config/routes.rb +4 -0
  33. data/test/dummy/config.ru +4 -0
  34. data/test/dummy/db/development.sqlite3 +0 -0
  35. data/test/dummy/db/migrate/20101221153914_clearance_create_users.rb +20 -0
  36. data/test/dummy/db/schema.rb +29 -0
  37. data/test/dummy/db/test.sqlite3 +0 -0
  38. data/test/dummy/log/development.log +1743 -0
  39. data/test/dummy/log/production.log +0 -0
  40. data/test/dummy/log/server.log +0 -0
  41. data/test/dummy/log/test.log +9431 -0
  42. data/test/dummy/public/404.html +26 -0
  43. data/test/dummy/public/422.html +26 -0
  44. data/test/dummy/public/500.html +26 -0
  45. data/test/dummy/public/favicon.ico +0 -0
  46. data/test/dummy/public/javascripts/application.js +2 -0
  47. data/test/dummy/public/javascripts/controls.js +965 -0
  48. data/test/dummy/public/javascripts/dragdrop.js +974 -0
  49. data/test/dummy/public/javascripts/effects.js +1123 -0
  50. data/test/dummy/public/javascripts/prototype.js +6001 -0
  51. data/test/dummy/public/javascripts/rails.js +175 -0
  52. data/test/dummy/script/rails +6 -0
  53. data/test/dummy/test/factories/clearance.rb +13 -0
  54. data/test/dummy/tmp/capybara/capybara-20101221172010.html +42 -0
  55. data/test/dummy/tmp/pids/server.pid +1 -0
  56. data/test/integration/api_test.rb +63 -0
  57. data/test/integration/navigation_test.rb +39 -0
  58. data/test/support/integration_case.rb +5 -0
  59. data/test/test_helper.rb +29 -0
  60. metadata +215 -0
@@ -0,0 +1,175 @@
1
+ (function() {
2
+ // Technique from Juriy Zaytsev
3
+ // http://thinkweb2.com/projects/prototype/detecting-event-support-without-browser-sniffing/
4
+ function isEventSupported(eventName) {
5
+ var el = document.createElement('div');
6
+ eventName = 'on' + eventName;
7
+ var isSupported = (eventName in el);
8
+ if (!isSupported) {
9
+ el.setAttribute(eventName, 'return;');
10
+ isSupported = typeof el[eventName] == 'function';
11
+ }
12
+ el = null;
13
+ return isSupported;
14
+ }
15
+
16
+ function isForm(element) {
17
+ return Object.isElement(element) && element.nodeName.toUpperCase() == 'FORM'
18
+ }
19
+
20
+ function isInput(element) {
21
+ if (Object.isElement(element)) {
22
+ var name = element.nodeName.toUpperCase()
23
+ return name == 'INPUT' || name == 'SELECT' || name == 'TEXTAREA'
24
+ }
25
+ else return false
26
+ }
27
+
28
+ var submitBubbles = isEventSupported('submit'),
29
+ changeBubbles = isEventSupported('change')
30
+
31
+ if (!submitBubbles || !changeBubbles) {
32
+ // augment the Event.Handler class to observe custom events when needed
33
+ Event.Handler.prototype.initialize = Event.Handler.prototype.initialize.wrap(
34
+ function(init, element, eventName, selector, callback) {
35
+ init(element, eventName, selector, callback)
36
+ // is the handler being attached to an element that doesn't support this event?
37
+ if ( (!submitBubbles && this.eventName == 'submit' && !isForm(this.element)) ||
38
+ (!changeBubbles && this.eventName == 'change' && !isInput(this.element)) ) {
39
+ // "submit" => "emulated:submit"
40
+ this.eventName = 'emulated:' + this.eventName
41
+ }
42
+ }
43
+ )
44
+ }
45
+
46
+ if (!submitBubbles) {
47
+ // discover forms on the page by observing focus events which always bubble
48
+ document.on('focusin', 'form', function(focusEvent, form) {
49
+ // special handler for the real "submit" event (one-time operation)
50
+ if (!form.retrieve('emulated:submit')) {
51
+ form.on('submit', function(submitEvent) {
52
+ var emulated = form.fire('emulated:submit', submitEvent, true)
53
+ // if custom event received preventDefault, cancel the real one too
54
+ if (emulated.returnValue === false) submitEvent.preventDefault()
55
+ })
56
+ form.store('emulated:submit', true)
57
+ }
58
+ })
59
+ }
60
+
61
+ if (!changeBubbles) {
62
+ // discover form inputs on the page
63
+ document.on('focusin', 'input, select, texarea', function(focusEvent, input) {
64
+ // special handler for real "change" events
65
+ if (!input.retrieve('emulated:change')) {
66
+ input.on('change', function(changeEvent) {
67
+ input.fire('emulated:change', changeEvent, true)
68
+ })
69
+ input.store('emulated:change', true)
70
+ }
71
+ })
72
+ }
73
+
74
+ function handleRemote(element) {
75
+ var method, url, params;
76
+
77
+ var event = element.fire("ajax:before");
78
+ if (event.stopped) return false;
79
+
80
+ if (element.tagName.toLowerCase() === 'form') {
81
+ method = element.readAttribute('method') || 'post';
82
+ url = element.readAttribute('action');
83
+ params = element.serialize();
84
+ } else {
85
+ method = element.readAttribute('data-method') || 'get';
86
+ url = element.readAttribute('href');
87
+ params = {};
88
+ }
89
+
90
+ new Ajax.Request(url, {
91
+ method: method,
92
+ parameters: params,
93
+ evalScripts: true,
94
+
95
+ onComplete: function(request) { element.fire("ajax:complete", request); },
96
+ onSuccess: function(request) { element.fire("ajax:success", request); },
97
+ onFailure: function(request) { element.fire("ajax:failure", request); }
98
+ });
99
+
100
+ element.fire("ajax:after");
101
+ }
102
+
103
+ function handleMethod(element) {
104
+ var method = element.readAttribute('data-method'),
105
+ url = element.readAttribute('href'),
106
+ csrf_param = $$('meta[name=csrf-param]')[0],
107
+ csrf_token = $$('meta[name=csrf-token]')[0];
108
+
109
+ var form = new Element('form', { method: "POST", action: url, style: "display: none;" });
110
+ element.parentNode.insert(form);
111
+
112
+ if (method !== 'post') {
113
+ var field = new Element('input', { type: 'hidden', name: '_method', value: method });
114
+ form.insert(field);
115
+ }
116
+
117
+ if (csrf_param) {
118
+ var param = csrf_param.readAttribute('content'),
119
+ token = csrf_token.readAttribute('content'),
120
+ field = new Element('input', { type: 'hidden', name: param, value: token });
121
+ form.insert(field);
122
+ }
123
+
124
+ form.submit();
125
+ }
126
+
127
+
128
+ document.on("click", "*[data-confirm]", function(event, element) {
129
+ var message = element.readAttribute('data-confirm');
130
+ if (!confirm(message)) event.stop();
131
+ });
132
+
133
+ document.on("click", "a[data-remote]", function(event, element) {
134
+ if (event.stopped) return;
135
+ handleRemote(element);
136
+ event.stop();
137
+ });
138
+
139
+ document.on("click", "a[data-method]", function(event, element) {
140
+ if (event.stopped) return;
141
+ handleMethod(element);
142
+ event.stop();
143
+ });
144
+
145
+ document.on("submit", function(event) {
146
+ var element = event.findElement(),
147
+ message = element.readAttribute('data-confirm');
148
+ if (message && !confirm(message)) {
149
+ event.stop();
150
+ return false;
151
+ }
152
+
153
+ var inputs = element.select("input[type=submit][data-disable-with]");
154
+ inputs.each(function(input) {
155
+ input.disabled = true;
156
+ input.writeAttribute('data-original-value', input.value);
157
+ input.value = input.readAttribute('data-disable-with');
158
+ });
159
+
160
+ var element = event.findElement("form[data-remote]");
161
+ if (element) {
162
+ handleRemote(element);
163
+ event.stop();
164
+ }
165
+ });
166
+
167
+ document.on("ajax:after", "form", function(event, element) {
168
+ var inputs = element.select("input[type=submit][disabled=true][data-disable-with]");
169
+ inputs.each(function(input) {
170
+ input.value = input.readAttribute('data-original-value');
171
+ input.removeAttribute('data-original-value');
172
+ input.disabled = false;
173
+ });
174
+ });
175
+ })();
@@ -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,13 @@
1
+ Factory.sequence :email do |n|
2
+ "user#{n}@example.com"
3
+ end
4
+
5
+ Factory.define :user do |user|
6
+ user.email { Factory.next :email }
7
+ user.password { "password" }
8
+ user.password_confirmation { "password" }
9
+ end
10
+
11
+ Factory.define :email_confirmed_user, :parent => :user do |user|
12
+ user.email_confirmed { true }
13
+ end
@@ -0,0 +1,42 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>Dummy</title>
5
+
6
+ <script src="/Users/karmi/Playground/Rails/PluginsDevelopment/clearance_http_auth/test/dummy/public/javascripts/prototype.js?1292943023" type="text/javascript"></script>
7
+ <script src="/Users/karmi/Playground/Rails/PluginsDevelopment/clearance_http_auth/test/dummy/public/javascripts/effects.js?1292943023" type="text/javascript"></script>
8
+ <script src="/Users/karmi/Playground/Rails/PluginsDevelopment/clearance_http_auth/test/dummy/public/javascripts/dragdrop.js?1292943023" type="text/javascript"></script>
9
+ <script src="/Users/karmi/Playground/Rails/PluginsDevelopment/clearance_http_auth/test/dummy/public/javascripts/controls.js?1292943023" type="text/javascript"></script>
10
+ <script src="/Users/karmi/Playground/Rails/PluginsDevelopment/clearance_http_auth/test/dummy/public/javascripts/rails.js?1292943023" type="text/javascript"></script>
11
+ <script src="/Users/karmi/Playground/Rails/PluginsDevelopment/clearance_http_auth/test/dummy/public/javascripts/application.js?1292943023" type="text/javascript"></script>
12
+
13
+ </head>
14
+ <body>
15
+
16
+ <h2>Sign in</h2>
17
+
18
+ <form accept-charset="UTF-8" action="/Users/karmi/Playground/Rails/PluginsDevelopment/clearance_http_auth/test/dummy/public/session" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="&#x2713;" /></div>
19
+ <div class="text_field">
20
+ <label for="session_email">Email</label>
21
+ <input id="session_email" name="session[email]" size="30" type="text" />
22
+ </div>
23
+ <div class="text_field">
24
+ <label for="session_password">Password</label>
25
+ <input id="session_password" name="session[password]" size="30" type="password" />
26
+ </div>
27
+ <div class="submit_field">
28
+ <input data-disable-with="Please wait..." id="session_submit" name="commit" type="submit" value="Sign in" />
29
+ </div>
30
+ </form>
31
+ <ul>
32
+ <li>
33
+ <a href="/Users/karmi/Playground/Rails/PluginsDevelopment/clearance_http_auth/test/dummy/public/sign_up">Sign up</a>
34
+ </li>
35
+ <li>
36
+ <a href="/Users/karmi/Playground/Rails/PluginsDevelopment/clearance_http_auth/test/dummy/public/passwords/new">Forgot password?</a>
37
+ </li>
38
+ </ul>
39
+
40
+
41
+ </body>
42
+ </html>
@@ -0,0 +1 @@
1
+ 18440
@@ -0,0 +1,63 @@
1
+ require 'test_helper'
2
+ require 'dummy/test/factories/clearance'
3
+
4
+ class APITest < ActiveSupport::TestCase
5
+
6
+ include Rack::Test::Methods
7
+
8
+ def app
9
+ Dummy::Application
10
+ end
11
+
12
+ def setup
13
+ Factory.create(:email_confirmed_user,
14
+ :email => 'test@example.com',
15
+ :password => 'password',
16
+ :password_confirmation => 'password')
17
+ end
18
+
19
+ context "When navigating the API, it" do
20
+
21
+ should "deny access when no credentials are set" do
22
+ get '/entrances.json'
23
+ assert_equal 401, last_response.status
24
+ end
25
+
26
+ should "deny access when bad credentials are set" do
27
+ authorize 'test@example.com', 'BADSANTA'
28
+ get '/entrances.json'
29
+ assert_equal 401, last_response.status
30
+ end
31
+
32
+ should "grant access when proper credentials are set" do
33
+ authorize 'test@example.com', 'password'
34
+ get '/entrances.json'
35
+ assert_equal 200, last_response.status
36
+ assert_match /Welcome/, last_response.body
37
+ end
38
+
39
+ should "grant access when proper credentials are set for POSTing" do
40
+ authorize 'test@example.com', 'password'
41
+ post '/entrances.json'
42
+ assert_equal 201, last_response.status
43
+ assert_match /Created/, last_response.body
44
+ end
45
+
46
+ should "invoke HTTP authorization for formats added in configuration" do
47
+ authorize 'test@example.com', 'password'
48
+ get '/entrances.csv'
49
+ assert_equal 200, last_response.status
50
+ assert_match /Welcome/, last_response.body
51
+ end
52
+
53
+ should "not invoke HTTP authorization for incorrect format" do
54
+ authorize 'test@example.com', 'password'
55
+ get '/entrances.santa'
56
+ assert_equal 302, last_response.status
57
+ follow_redirect!
58
+ assert_match /Sign in/, last_response.body
59
+ end
60
+
61
+ end
62
+
63
+ end
@@ -0,0 +1,39 @@
1
+ require 'test_helper'
2
+ require 'dummy/test/factories/clearance'
3
+
4
+ class NavigationTest < ActiveSupport::IntegrationCase
5
+
6
+ setup do
7
+ Factory.create(:email_confirmed_user,
8
+ :email => 'test@example.com',
9
+ :password => 'password',
10
+ :password_confirmation => 'password')
11
+ end
12
+
13
+ context "When navigating the application, it" do
14
+
15
+ should "display login form" do
16
+ visit "/"
17
+ page.has_content?('Sign in')
18
+ end
19
+
20
+ should "grant access with proper credentials" do
21
+ visit "/"
22
+ fill_in 'Email', :with => 'test@example.com'
23
+ fill_in 'Password', :with => 'password'
24
+ click_link_or_button "Sign in"
25
+ assert page.has_content?('Welcome!'), "does not display content"
26
+ end
27
+
28
+ should "deny access with wrong credentials" do
29
+ visit "/"
30
+ fill_in 'Email', :with => 'test@example.com'
31
+ fill_in 'Password', :with => 'BADSANTA'
32
+ click_link_or_button "Sign in"
33
+ assert ! page.has_content?('Welcome!'), "displays protected content"
34
+ assert page.has_content?('Sign in'), "does not display login form"
35
+ end
36
+
37
+ end
38
+
39
+ end
@@ -0,0 +1,5 @@
1
+ # Define a bare test case to use with Capybara
2
+ class ActiveSupport::IntegrationCase < ActiveSupport::TestCase
3
+ include Capybara
4
+ include Rails.application.routes.url_helpers
5
+ end
@@ -0,0 +1,29 @@
1
+ # Configure Rails Envinronment
2
+ ENV["RAILS_ENV"] = "test"
3
+
4
+ require File.expand_path("../dummy/config/environment.rb", __FILE__)
5
+ require "rails/test_help"
6
+
7
+ Rails.backtrace_cleaner.remove_silencers!
8
+
9
+ # Configure capybara for integration testing
10
+ require "capybara/rails"
11
+ Capybara.default_driver = :rack_test
12
+ Capybara.default_selector = :css
13
+
14
+ # Load test infrastructure
15
+ require 'shoulda'
16
+ require 'turn'
17
+ require 'factory_girl'
18
+ require 'rack/test'
19
+
20
+ # Run any available migration
21
+ ActiveRecord::Migrator.migrate File.expand_path("../dummy/db/migrate/", __FILE__)
22
+
23
+ # Load support files
24
+ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
25
+
26
+ # Clear database when the test ends
27
+ def teardown
28
+ User.delete_all
29
+ end
metadata ADDED
@@ -0,0 +1,215 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: clearance_http_auth
3
+ version: !ruby/object:Gem::Version
4
+ hash: 29
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 0
9
+ - 1
10
+ version: 0.0.1
11
+ platform: ruby
12
+ authors:
13
+ - Karel Minarik
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2010-12-26 00:00:00 +01:00
19
+ default_executable:
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ prerelease: false
23
+ version_requirements: &id001 !ruby/object:Gem::Requirement
24
+ none: false
25
+ requirements:
26
+ - - ~>
27
+ - !ruby/object:Gem::Version
28
+ hash: 23
29
+ segments:
30
+ - 1
31
+ - 0
32
+ - 0
33
+ version: 1.0.0
34
+ requirement: *id001
35
+ name: bundler
36
+ type: :runtime
37
+ - !ruby/object:Gem::Dependency
38
+ prerelease: false
39
+ version_requirements: &id002 !ruby/object:Gem::Requirement
40
+ none: false
41
+ requirements:
42
+ - - ">"
43
+ - !ruby/object:Gem::Version
44
+ hash: 25
45
+ segments:
46
+ - 0
47
+ - 9
48
+ version: "0.9"
49
+ requirement: *id002
50
+ name: clearance
51
+ type: :runtime
52
+ - !ruby/object:Gem::Dependency
53
+ prerelease: false
54
+ version_requirements: &id003 !ruby/object:Gem::Requirement
55
+ none: false
56
+ requirements:
57
+ - - ">"
58
+ - !ruby/object:Gem::Version
59
+ hash: 11
60
+ segments:
61
+ - 1
62
+ - 2
63
+ version: "1.2"
64
+ requirement: *id003
65
+ name: rack
66
+ type: :runtime
67
+ - !ruby/object:Gem::Dependency
68
+ prerelease: false
69
+ version_requirements: &id004 !ruby/object:Gem::Requirement
70
+ none: false
71
+ requirements:
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ hash: 3
75
+ segments:
76
+ - 0
77
+ version: "0"
78
+ requirement: *id004
79
+ name: thin
80
+ type: :development
81
+ - !ruby/object:Gem::Dependency
82
+ prerelease: false
83
+ version_requirements: &id005 !ruby/object:Gem::Requirement
84
+ none: false
85
+ requirements:
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ hash: 3
89
+ segments:
90
+ - 0
91
+ version: "0"
92
+ requirement: *id005
93
+ name: turn
94
+ type: :development
95
+ - !ruby/object:Gem::Dependency
96
+ prerelease: false
97
+ version_requirements: &id006 !ruby/object:Gem::Requirement
98
+ none: false
99
+ requirements:
100
+ - - ">="
101
+ - !ruby/object:Gem::Version
102
+ hash: 3
103
+ segments:
104
+ - 0
105
+ version: "0"
106
+ requirement: *id006
107
+ name: shoulda
108
+ type: :development
109
+ description: " Simple, instant HTTP Basic Authentication for applications\n using Clearance [https://github.com/thoughtbot/clearance].\n"
110
+ email: karmi@karmi.cz
111
+ executables: []
112
+
113
+ extensions: []
114
+
115
+ extra_rdoc_files:
116
+ - README.rdoc
117
+ - MIT-LICENSE
118
+ files:
119
+ - README.rdoc
120
+ - Rakefile
121
+ - MIT-LICENSE
122
+ - lib/clearance_http_auth/configuration.rb
123
+ - lib/clearance_http_auth/current_user_override.rb
124
+ - lib/clearance_http_auth/engine.rb
125
+ - lib/clearance_http_auth/middleware.rb
126
+ - lib/clearance_http_auth/version.rb
127
+ - lib/clearance_http_auth.rb
128
+ - test/clearance_http_auth_test.rb
129
+ - test/dummy/app/controllers/application_controller.rb
130
+ - test/dummy/app/controllers/entrances_controller.rb
131
+ - test/dummy/app/helpers/application_helper.rb
132
+ - test/dummy/app/helpers/entrance_helper.rb
133
+ - test/dummy/app/models/user.rb
134
+ - test/dummy/app/views/layouts/application.html.erb
135
+ - test/dummy/config/application.rb
136
+ - test/dummy/config/boot.rb
137
+ - test/dummy/config/database.yml
138
+ - test/dummy/config/environment.rb
139
+ - test/dummy/config/environments/development.rb
140
+ - test/dummy/config/environments/production.rb
141
+ - test/dummy/config/environments/test.rb
142
+ - test/dummy/config/initializers/backtrace_silencers.rb
143
+ - test/dummy/config/initializers/clearance.rb
144
+ - test/dummy/config/initializers/inflections.rb
145
+ - test/dummy/config/initializers/mime_types.rb
146
+ - test/dummy/config/initializers/secret_token.rb
147
+ - test/dummy/config/initializers/session_store.rb
148
+ - test/dummy/config/locales/en.yml
149
+ - test/dummy/config/routes.rb
150
+ - test/dummy/config.ru
151
+ - test/dummy/db/development.sqlite3
152
+ - test/dummy/db/migrate/20101221153914_clearance_create_users.rb
153
+ - test/dummy/db/schema.rb
154
+ - test/dummy/db/test.sqlite3
155
+ - test/dummy/log/development.log
156
+ - test/dummy/log/production.log
157
+ - test/dummy/log/server.log
158
+ - test/dummy/log/test.log
159
+ - test/dummy/public/404.html
160
+ - test/dummy/public/422.html
161
+ - test/dummy/public/500.html
162
+ - test/dummy/public/favicon.ico
163
+ - test/dummy/public/javascripts/application.js
164
+ - test/dummy/public/javascripts/controls.js
165
+ - test/dummy/public/javascripts/dragdrop.js
166
+ - test/dummy/public/javascripts/effects.js
167
+ - test/dummy/public/javascripts/prototype.js
168
+ - test/dummy/public/javascripts/rails.js
169
+ - test/dummy/Rakefile
170
+ - test/dummy/script/rails
171
+ - test/dummy/test/factories/clearance.rb
172
+ - test/dummy/tmp/capybara/capybara-20101221172010.html
173
+ - test/dummy/tmp/pids/server.pid
174
+ - test/integration/api_test.rb
175
+ - test/integration/navigation_test.rb
176
+ - test/support/integration_case.rb
177
+ - test/test_helper.rb
178
+ has_rdoc: true
179
+ homepage: http://github.com/karmi/clearance_http_auth
180
+ licenses: []
181
+
182
+ post_install_message:
183
+ rdoc_options:
184
+ - --charset=UTF-8
185
+ require_paths:
186
+ - lib
187
+ required_ruby_version: !ruby/object:Gem::Requirement
188
+ none: false
189
+ requirements:
190
+ - - ">="
191
+ - !ruby/object:Gem::Version
192
+ hash: 3
193
+ segments:
194
+ - 0
195
+ version: "0"
196
+ required_rubygems_version: !ruby/object:Gem::Requirement
197
+ none: false
198
+ requirements:
199
+ - - ">="
200
+ - !ruby/object:Gem::Version
201
+ hash: 23
202
+ segments:
203
+ - 1
204
+ - 3
205
+ - 6
206
+ version: 1.3.6
207
+ requirements: []
208
+
209
+ rubyforge_project:
210
+ rubygems_version: 1.3.7
211
+ signing_key:
212
+ specification_version: 3
213
+ summary: HTTP Basic Authentication for Clearance
214
+ test_files: []
215
+