sinatra_warden 0.1.0 → 0.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.
data/Gemfile CHANGED
@@ -4,6 +4,8 @@ gem 'sinatra', '>= 0.9.4'
4
4
  gem 'warden', '~> 0.5.0'
5
5
 
6
6
  gem 'rake', :only => :testing
7
+ gem 'jeweler', :only => :testing
8
+ gem 'bundler', :only => :testing
7
9
  gem 'rspec', '~> 1.2.9', :only => :testing, :require_as => 'spec'
8
10
  gem 'yard', :only => :testing
9
11
  gem 'rack-test', '~> 0.5.0', :only => :testing, :require_as => 'rack/test'
@@ -12,5 +14,7 @@ gem 'rcov', :only => :testing
12
14
  gem 'do_sqlite3', '~> 0.10.0', :only => :testing
13
15
  gem 'dm-core', '~> 0.10.1', :only => :testing
14
16
  gem 'bcrypt-ruby', :only => :testing, :require_as => 'bcrypt'
17
+ gem 'haml', :only => :testing
18
+ gem 'rack-flash', :only => :testing, :require_as => 'rack/flash'
15
19
 
16
20
  disable_system_gems
data/README.rdoc CHANGED
@@ -32,7 +32,7 @@ We use bundler on this project and disable system gems. Contributers should do t
32
32
  $ git clone git://github.com/jsmestad/sinatra_warden.git
33
33
  $ cd sinatra_warden
34
34
  $ gem bundle
35
- $ rake
35
+ $ ./bin/rake
36
36
 
37
37
  * Fork the project.
38
38
  * Make your feature addition or bug fix.
data/Rakefile CHANGED
@@ -1,4 +1,5 @@
1
- require 'rubygems'
1
+ require File.join(File.expand_path(File.dirname(__FILE__)), 'vendor', 'gems', 'environment')
2
+ Bundler.require_env
2
3
  require 'rake'
3
4
  require 'bundler'
4
5
 
@@ -14,11 +15,10 @@ begin
14
15
 
15
16
  manifest = Bundler::Environment.load(File.dirname(__FILE__) + '/Gemfile')
16
17
  manifest.dependencies.each do |d|
17
- next if d.only && d.only.include?('test')
18
+ next if d.only && d.only.include?('testing')
18
19
  gem.add_dependency(d.name, d.version)
19
20
  end
20
21
 
21
- # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
22
22
  end
23
23
  Jeweler::GemcutterTasks.new
24
24
  rescue LoadError
@@ -37,8 +37,6 @@ Spec::Rake::SpecTask.new(:rcov) do |spec|
37
37
  spec.rcov = true
38
38
  end
39
39
 
40
- task :spec => :check_dependencies
41
-
42
40
  task :default => :spec
43
41
 
44
42
  begin
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.0
1
+ 0.1.1
data/bin/autospec CHANGED
@@ -1,3 +1,3 @@
1
- #!/usr/bin/env ruby
1
+ #!/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby
2
2
  require File.join(File.dirname(__FILE__), "../vendor/gems/environment")
3
3
  load File.join(File.dirname(__FILE__), "../vendor/gems/gems/rspec-1.2.9/bin/autospec")
data/bin/css2sass ADDED
@@ -0,0 +1,3 @@
1
+ #!/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby
2
+ require File.join(File.dirname(__FILE__), "../vendor/gems/environment")
3
+ load File.join(File.dirname(__FILE__), "../vendor/gems/gems/haml-2.2.10/bin/css2sass")
data/bin/edit_json.rb ADDED
@@ -0,0 +1,3 @@
1
+ #!/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby
2
+ require File.join(File.dirname(__FILE__), "../vendor/gems/environment")
3
+ load File.join(File.dirname(__FILE__), "../vendor/gems/gems/json_pure-1.1.9/bin/edit_json.rb")
data/bin/haml ADDED
@@ -0,0 +1,3 @@
1
+ #!/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby
2
+ require File.join(File.dirname(__FILE__), "../vendor/gems/environment")
3
+ load File.join(File.dirname(__FILE__), "../vendor/gems/gems/haml-2.2.10/bin/haml")
data/bin/html2haml ADDED
@@ -0,0 +1,3 @@
1
+ #!/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby
2
+ require File.join(File.dirname(__FILE__), "../vendor/gems/environment")
3
+ load File.join(File.dirname(__FILE__), "../vendor/gems/gems/haml-2.2.10/bin/html2haml")
data/bin/jeweler ADDED
@@ -0,0 +1,3 @@
1
+ #!/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby
2
+ require File.join(File.dirname(__FILE__), "../vendor/gems/environment")
3
+ load File.join(File.dirname(__FILE__), "../vendor/gems/gems/jeweler-1.3.0/bin/jeweler")
@@ -0,0 +1,3 @@
1
+ #!/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby
2
+ require File.join(File.dirname(__FILE__), "../vendor/gems/environment")
3
+ load File.join(File.dirname(__FILE__), "../vendor/gems/gems/json_pure-1.1.9/bin/prettify_json.rb")
data/bin/rackup CHANGED
@@ -1,3 +1,3 @@
1
- #!/usr/bin/env ruby
1
+ #!/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby
2
2
  require File.join(File.dirname(__FILE__), "../vendor/gems/environment")
3
3
  load File.join(File.dirname(__FILE__), "../vendor/gems/gems/rack-1.0.1/bin/rackup")
data/bin/rake CHANGED
@@ -1,3 +1,3 @@
1
- #!/usr/bin/env ruby
1
+ #!/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby
2
2
  require File.join(File.dirname(__FILE__), "../vendor/gems/environment")
3
3
  load File.join(File.dirname(__FILE__), "../vendor/gems/gems/rake-0.8.7/bin/rake")
data/bin/rcov CHANGED
@@ -1,3 +1,3 @@
1
- #!/usr/bin/env ruby
1
+ #!/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby
2
2
  require File.join(File.dirname(__FILE__), "../vendor/gems/environment")
3
- load File.join(File.dirname(__FILE__), "../vendor/gems/gems/rcov-0.9.5/bin/rcov")
3
+ load File.join(File.dirname(__FILE__), "../vendor/gems/gems/rcov-0.9.6/bin/rcov")
data/bin/rubyforge ADDED
@@ -0,0 +1,3 @@
1
+ #!/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby
2
+ require File.join(File.dirname(__FILE__), "../vendor/gems/environment")
3
+ load File.join(File.dirname(__FILE__), "../vendor/gems/gems/rubyforge-2.0.3/bin/rubyforge")
data/bin/sass ADDED
@@ -0,0 +1,3 @@
1
+ #!/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby
2
+ require File.join(File.dirname(__FILE__), "../vendor/gems/environment")
3
+ load File.join(File.dirname(__FILE__), "../vendor/gems/gems/haml-2.2.10/bin/sass")
data/bin/spec CHANGED
@@ -1,3 +1,3 @@
1
- #!/usr/bin/env ruby
1
+ #!/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby
2
2
  require File.join(File.dirname(__FILE__), "../vendor/gems/environment")
3
3
  load File.join(File.dirname(__FILE__), "../vendor/gems/gems/rspec-1.2.9/bin/spec")
data/bin/yard-graph CHANGED
@@ -1,3 +1,3 @@
1
- #!/usr/bin/env ruby
1
+ #!/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby
2
2
  require File.join(File.dirname(__FILE__), "../vendor/gems/environment")
3
3
  load File.join(File.dirname(__FILE__), "../vendor/gems/gems/yard-0.2.3.5/bin/yard-graph")
data/bin/yardoc CHANGED
@@ -1,3 +1,3 @@
1
- #!/usr/bin/env ruby
1
+ #!/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby
2
2
  require File.join(File.dirname(__FILE__), "../vendor/gems/environment")
3
3
  load File.join(File.dirname(__FILE__), "../vendor/gems/gems/yard-0.2.3.5/bin/yardoc")
data/bin/yri CHANGED
@@ -1,3 +1,3 @@
1
- #!/usr/bin/env ruby
1
+ #!/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby
2
2
  require File.join(File.dirname(__FILE__), "../vendor/gems/environment")
3
3
  load File.join(File.dirname(__FILE__), "../vendor/gems/gems/yard-0.2.3.5/bin/yri")
@@ -1,7 +1,7 @@
1
1
  module Sinatra
2
2
  module Warden
3
3
  module Helpers
4
-
4
+
5
5
  # The main accessor for the warden proxy instance
6
6
  def warden
7
7
  request.env['warden']
@@ -35,9 +35,9 @@ module Sinatra
35
35
 
36
36
  def self.registered(app)
37
37
  app.helpers Warden::Helpers
38
-
38
+
39
39
  app.set :auth_failure_path, '/'
40
- app.set :auth_success_path, lambda{ back }
40
+ app.set :auth_success_path, lambda { back }
41
41
 
42
42
  app.set :auth_error_message, "Could not log you in."
43
43
  app.set :auth_success_message, "You have logged in successfully."
@@ -46,7 +46,7 @@ module Sinatra
46
46
 
47
47
  app.post '/unauthenticated/?' do
48
48
  status 401
49
- flash[:error] = "Could not log you in." if defined?(Rack::Flash)
49
+ flash[:error] = options.auth_error_message if defined?(Rack::Flash)
50
50
  options.auth_use_erb ? erb(options.auth_login_template) : haml(options.auth_login_template)
51
51
  end
52
52
 
@@ -61,8 +61,9 @@ module Sinatra
61
61
  end
62
62
 
63
63
  app.get '/logout/?' do
64
+ authorize!
64
65
  env['warden'].logout
65
- flash[:success] = options.auth_error_message if defined?(Rack::Flash)
66
+ flash[:success] = options.auth_success_message if defined?(Rack::Flash)
66
67
  redirect options.auth_success_path
67
68
  end
68
69
  end
@@ -5,14 +5,14 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{sinatra_warden}
8
- s.version = "0.1.0"
8
+ s.version = "0.1.1"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Justin Smestad", "Daniel Neighman"]
12
12
  s.date = %q{2009-11-03}
13
13
  s.description = %q{basic helpers and authentication methods for using warden with sinatra also providing some hooks into Rack::Flash}
14
14
  s.email = %q{justin.smestad@gmail.com}
15
- s.executables = ["autospec", "rackup", "rake", "rcov", "spec", "yard-graph", "yardoc", "yri"]
15
+ s.executables = ["autospec", "css2sass", "edit_json.rb", "haml", "html2haml", "jeweler", "prettify_json.rb", "rackup", "rake", "rcov", "rubyforge", "sass", "spec", "yard-graph", "yardoc", "yri"]
16
16
  s.extra_rdoc_files = [
17
17
  "LICENSE",
18
18
  "README.rdoc"
@@ -28,9 +28,10 @@ Gem::Specification.new do |s|
28
28
  "lib/sinatra_warden.rb",
29
29
  "lib/sinatra_warden/sinatra.rb",
30
30
  "sinatra_warden.gemspec",
31
- "spec/fixtures/bcrypt_strategy.rb",
31
+ "spec/fixtures/basic_strategy.rb",
32
32
  "spec/fixtures/testing_login.rb",
33
33
  "spec/fixtures/user.rb",
34
+ "spec/fixtures/views/login.haml",
34
35
  "spec/sinatra_warden_spec.rb",
35
36
  "spec/spec.opts",
36
37
  "spec/spec_helper.rb"
@@ -41,7 +42,7 @@ Gem::Specification.new do |s|
41
42
  s.rubygems_version = %q{1.3.5}
42
43
  s.summary = %q{authentication system for using warden with sinatra}
43
44
  s.test_files = [
44
- "spec/fixtures/bcrypt_strategy.rb",
45
+ "spec/fixtures/basic_strategy.rb",
45
46
  "spec/fixtures/testing_login.rb",
46
47
  "spec/fixtures/user.rb",
47
48
  "spec/sinatra_warden_spec.rb",
@@ -55,37 +56,13 @@ Gem::Specification.new do |s|
55
56
  if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
56
57
  s.add_runtime_dependency(%q<sinatra>, [">= 0.9.4"])
57
58
  s.add_runtime_dependency(%q<warden>, ["~> 0.5.0"])
58
- s.add_runtime_dependency(%q<rake>, [">= 0"])
59
- s.add_runtime_dependency(%q<rspec>, ["~> 1.2.9"])
60
- s.add_runtime_dependency(%q<yard>, [">= 0"])
61
- s.add_runtime_dependency(%q<rack-test>, ["~> 0.5.0"])
62
- s.add_runtime_dependency(%q<rcov>, [">= 0"])
63
- s.add_runtime_dependency(%q<do_sqlite3>, ["~> 0.10.0"])
64
- s.add_runtime_dependency(%q<dm-core>, ["~> 0.10.1"])
65
- s.add_runtime_dependency(%q<bcrypt-ruby>, [">= 0"])
66
59
  else
67
60
  s.add_dependency(%q<sinatra>, [">= 0.9.4"])
68
61
  s.add_dependency(%q<warden>, ["~> 0.5.0"])
69
- s.add_dependency(%q<rake>, [">= 0"])
70
- s.add_dependency(%q<rspec>, ["~> 1.2.9"])
71
- s.add_dependency(%q<yard>, [">= 0"])
72
- s.add_dependency(%q<rack-test>, ["~> 0.5.0"])
73
- s.add_dependency(%q<rcov>, [">= 0"])
74
- s.add_dependency(%q<do_sqlite3>, ["~> 0.10.0"])
75
- s.add_dependency(%q<dm-core>, ["~> 0.10.1"])
76
- s.add_dependency(%q<bcrypt-ruby>, [">= 0"])
77
62
  end
78
63
  else
79
64
  s.add_dependency(%q<sinatra>, [">= 0.9.4"])
80
65
  s.add_dependency(%q<warden>, ["~> 0.5.0"])
81
- s.add_dependency(%q<rake>, [">= 0"])
82
- s.add_dependency(%q<rspec>, ["~> 1.2.9"])
83
- s.add_dependency(%q<yard>, [">= 0"])
84
- s.add_dependency(%q<rack-test>, ["~> 0.5.0"])
85
- s.add_dependency(%q<rcov>, [">= 0"])
86
- s.add_dependency(%q<do_sqlite3>, ["~> 0.10.0"])
87
- s.add_dependency(%q<dm-core>, ["~> 0.10.1"])
88
- s.add_dependency(%q<bcrypt-ruby>, [">= 0"])
89
66
  end
90
67
  end
91
68
 
@@ -0,0 +1,10 @@
1
+ Warden::Strategies.add(:password) do
2
+ def valid?
3
+ params['email'] || params['password']
4
+ end
5
+
6
+ def authenticate!
7
+ u = User.authenticate(params['email'], params['password'])
8
+ u.nil? ? fail!("Could not log in") : success!(u)
9
+ end
10
+ end
@@ -1,8 +1,14 @@
1
1
  class TestingLogin < Sinatra::Base
2
2
  register Sinatra::Warden
3
3
 
4
+ set :views, File.join(File.dirname(__FILE__), 'views')
5
+ set :sessions, true
6
+
7
+ set :auth_success_path, '/welcome'
8
+
4
9
  get '/dashboard' do
5
10
  authorize!('/login')
11
+ "My Dashboard"
6
12
  end
7
13
 
8
14
  get '/admin' do
@@ -1,20 +1,14 @@
1
- require 'dm-core'
2
- require 'bcrypt'
3
1
 
4
2
  class User
5
3
  include DataMapper::Resource
6
4
 
7
5
  property :id, Serial
8
6
  property :email, String
9
- property :encrypted_password, String
7
+ property :password, String
10
8
 
11
- def password=(new_password)
12
- @password = BCrypt::Password.create(new_password)
13
- self.encrypted_password = @password
14
- end
15
-
16
- def password
17
- @password ||= BCrypt::Password.new(encrypted_password)
9
+ def self.authenticate(email, password)
10
+ u = self.first(:email => email)
11
+ u.password == password ? u : nil
18
12
  end
19
13
 
20
14
  end
@@ -9,13 +9,23 @@ describe "SinatraWarden" do
9
9
  @user.new?.should be_false
10
10
  end
11
11
 
12
- context "the authentication system" do
12
+ it "should create successfully" do
13
+ @user.password.should == "thedude"
14
+ User.authenticate('justin.smestad@gmail.com', 'thedude').should == @user
15
+ end
13
16
 
14
- it "should allow us to login as that user"
17
+ context "the authentication system" do
15
18
 
16
- it "should allow us to logout after logging in"
19
+ it "should allow us to login as that user" do
20
+ post '/login', 'email' => 'justin.smestad@gmail.com', 'password' => 'thedude'
21
+ last_request.env['warden'].authenticated?.should == true
22
+ end
17
23
 
18
- it "should redirect to root"
24
+ it "should allow us to logout after logging in" do
25
+ post '/login', 'email' => 'justin.smestad@gmail.com', 'password' => 'thedude'
26
+ last_request.env['warden'].authenticated?.should == true
27
+ pending
28
+ end
19
29
 
20
30
  end
21
31
 
@@ -23,11 +33,24 @@ describe "SinatraWarden" do
23
33
 
24
34
  context "the authorize! helper" do
25
35
 
26
- it "should redirect to root if not logged in"
27
-
28
- it "should redirect to the passed path if available"
29
-
30
- it "should allow access if user is logged in"
36
+ it "should redirect to root (default) if not logged in" do
37
+ get '/admin'
38
+ follow_redirect!
39
+ last_request.url.should == 'http://example.org/'
40
+ end
41
+
42
+ it "should redirect to the passed path if available" do
43
+ get '/dashboard'
44
+ follow_redirect!
45
+ last_request.url.should == 'http://example.org/login'
46
+ end
47
+
48
+ it "should allow access if user is logged in" do
49
+ post '/login', 'email' => 'justin.smestad@gmail.com', 'password' => 'thedude'
50
+ last_request.env['warden'].authenticated?.should == true
51
+ get '/dashboard'
52
+ last_response.body.should == "My Dashboard"
53
+ end
31
54
 
32
55
  end
33
56
 
data/spec/spec_helper.rb CHANGED
@@ -28,7 +28,12 @@ Spec::Runner.configure do |config|
28
28
  def app
29
29
  @app ||= Rack::Builder.app do
30
30
  use Rack::Session::Cookie
31
- run TestingLogin.app
31
+ use Warden::Manager do |manager|
32
+ manager.default_strategies :password
33
+ manager.failure_app = TestingLogin
34
+ end
35
+ use Rack::Flash
36
+ run TestingLogin
32
37
  end
33
38
  end
34
39
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sinatra_warden
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Justin Smestad
@@ -33,93 +33,21 @@ dependencies:
33
33
  - !ruby/object:Gem::Version
34
34
  version: 0.5.0
35
35
  version:
36
- - !ruby/object:Gem::Dependency
37
- name: rake
38
- type: :runtime
39
- version_requirement:
40
- version_requirements: !ruby/object:Gem::Requirement
41
- requirements:
42
- - - ">="
43
- - !ruby/object:Gem::Version
44
- version: "0"
45
- version:
46
- - !ruby/object:Gem::Dependency
47
- name: rspec
48
- type: :runtime
49
- version_requirement:
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - ~>
53
- - !ruby/object:Gem::Version
54
- version: 1.2.9
55
- version:
56
- - !ruby/object:Gem::Dependency
57
- name: yard
58
- type: :runtime
59
- version_requirement:
60
- version_requirements: !ruby/object:Gem::Requirement
61
- requirements:
62
- - - ">="
63
- - !ruby/object:Gem::Version
64
- version: "0"
65
- version:
66
- - !ruby/object:Gem::Dependency
67
- name: rack-test
68
- type: :runtime
69
- version_requirement:
70
- version_requirements: !ruby/object:Gem::Requirement
71
- requirements:
72
- - - ~>
73
- - !ruby/object:Gem::Version
74
- version: 0.5.0
75
- version:
76
- - !ruby/object:Gem::Dependency
77
- name: rcov
78
- type: :runtime
79
- version_requirement:
80
- version_requirements: !ruby/object:Gem::Requirement
81
- requirements:
82
- - - ">="
83
- - !ruby/object:Gem::Version
84
- version: "0"
85
- version:
86
- - !ruby/object:Gem::Dependency
87
- name: do_sqlite3
88
- type: :runtime
89
- version_requirement:
90
- version_requirements: !ruby/object:Gem::Requirement
91
- requirements:
92
- - - ~>
93
- - !ruby/object:Gem::Version
94
- version: 0.10.0
95
- version:
96
- - !ruby/object:Gem::Dependency
97
- name: dm-core
98
- type: :runtime
99
- version_requirement:
100
- version_requirements: !ruby/object:Gem::Requirement
101
- requirements:
102
- - - ~>
103
- - !ruby/object:Gem::Version
104
- version: 0.10.1
105
- version:
106
- - !ruby/object:Gem::Dependency
107
- name: bcrypt-ruby
108
- type: :runtime
109
- version_requirement:
110
- version_requirements: !ruby/object:Gem::Requirement
111
- requirements:
112
- - - ">="
113
- - !ruby/object:Gem::Version
114
- version: "0"
115
- version:
116
36
  description: basic helpers and authentication methods for using warden with sinatra also providing some hooks into Rack::Flash
117
37
  email: justin.smestad@gmail.com
118
38
  executables:
119
39
  - autospec
40
+ - css2sass
41
+ - edit_json.rb
42
+ - haml
43
+ - html2haml
44
+ - jeweler
45
+ - prettify_json.rb
120
46
  - rackup
121
47
  - rake
122
48
  - rcov
49
+ - rubyforge
50
+ - sass
123
51
  - spec
124
52
  - yard-graph
125
53
  - yardoc
@@ -140,9 +68,10 @@ files:
140
68
  - lib/sinatra_warden.rb
141
69
  - lib/sinatra_warden/sinatra.rb
142
70
  - sinatra_warden.gemspec
143
- - spec/fixtures/bcrypt_strategy.rb
71
+ - spec/fixtures/basic_strategy.rb
144
72
  - spec/fixtures/testing_login.rb
145
73
  - spec/fixtures/user.rb
74
+ - spec/fixtures/views/login.haml
146
75
  - spec/sinatra_warden_spec.rb
147
76
  - spec/spec.opts
148
77
  - spec/spec_helper.rb
@@ -175,7 +104,7 @@ signing_key:
175
104
  specification_version: 3
176
105
  summary: authentication system for using warden with sinatra
177
106
  test_files:
178
- - spec/fixtures/bcrypt_strategy.rb
107
+ - spec/fixtures/basic_strategy.rb
179
108
  - spec/fixtures/testing_login.rb
180
109
  - spec/fixtures/user.rb
181
110
  - spec/sinatra_warden_spec.rb