nifty-generators 0.4.0 → 0.4.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/CHANGELOG +11 -0
- data/README.rdoc +2 -2
- data/features/nifty_authentication.feature +2 -2
- data/features/nifty_scaffold.feature +15 -0
- data/features/step_definitions/common_steps.rb +1 -1
- data/features/step_definitions/rails_setup_steps.rb +1 -1
- data/lib/generators/nifty.rb +2 -2
- data/lib/generators/nifty/authentication/USAGE +15 -15
- data/lib/generators/nifty/authentication/authentication_generator.rb +10 -9
- data/lib/generators/nifty/authentication/templates/authentication.rb +9 -9
- data/lib/generators/nifty/authentication/templates/migration.rb +1 -1
- data/lib/generators/nifty/authentication/templates/sessions_controller.rb +4 -4
- data/lib/generators/nifty/authentication/templates/tests/rspec/sessions_controller.rb +6 -6
- data/lib/generators/nifty/authentication/templates/tests/rspec/user.rb +15 -15
- data/lib/generators/nifty/authentication/templates/tests/rspec/users_controller.rb +5 -5
- data/lib/generators/nifty/authentication/templates/tests/shoulda/sessions_controller.rb +3 -3
- data/lib/generators/nifty/authentication/templates/tests/shoulda/user.rb +15 -15
- data/lib/generators/nifty/authentication/templates/tests/shoulda/users_controller.rb +2 -2
- data/lib/generators/nifty/authentication/templates/tests/testunit/sessions_controller.rb +3 -3
- data/lib/generators/nifty/authentication/templates/tests/testunit/user.rb +15 -15
- data/lib/generators/nifty/authentication/templates/tests/testunit/users_controller.rb +2 -2
- data/lib/generators/nifty/authentication/templates/user.rb +7 -7
- data/lib/generators/nifty/authentication/templates/users_controller.rb +1 -1
- data/lib/generators/nifty/config/USAGE +2 -2
- data/lib/generators/nifty/config/config_generator.rb +3 -3
- data/lib/generators/nifty/layout/USAGE +2 -2
- data/lib/generators/nifty/layout/layout_generator.rb +4 -4
- data/lib/generators/nifty/layout/templates/error_messages_helper.rb +2 -2
- data/lib/generators/nifty/layout/templates/layout.html.erb +1 -1
- data/lib/generators/nifty/layout/templates/layout.html.haml +4 -4
- data/lib/generators/nifty/layout/templates/layout_helper.rb +3 -3
- data/lib/generators/nifty/layout/templates/stylesheet.sass +41 -41
- data/lib/generators/nifty/scaffold/USAGE +9 -9
- data/lib/generators/nifty/scaffold/scaffold_generator.rb +8 -6
- data/lib/generators/nifty/scaffold/templates/migration.rb +1 -1
- data/lib/generators/nifty/scaffold/templates/tests/rspec/actions/create.rb +1 -1
- data/lib/generators/nifty/scaffold/templates/tests/rspec/actions/update.rb +1 -1
- data/lib/generators/nifty/scaffold/templates/tests/rspec/controller.rb +3 -3
- data/lib/generators/nifty/scaffold/templates/tests/shoulda/actions/create.rb +1 -1
- data/lib/generators/nifty/scaffold/templates/tests/shoulda/actions/update.rb +1 -1
- data/lib/generators/nifty/scaffold/templates/tests/testunit/actions/create.rb +1 -1
- data/lib/generators/nifty/scaffold/templates/tests/testunit/actions/update.rb +1 -1
- data/rails_generators/nifty_authentication/USAGE +15 -15
- data/rails_generators/nifty_authentication/lib/insert_commands.rb +8 -8
- data/rails_generators/nifty_authentication/nifty_authentication_generator.rb +20 -20
- data/rails_generators/nifty_authentication/templates/authentication.rb +9 -9
- data/rails_generators/nifty_authentication/templates/migration.rb +1 -1
- data/rails_generators/nifty_authentication/templates/sessions_controller.rb +4 -4
- data/rails_generators/nifty_authentication/templates/tests/rspec/sessions_controller.rb +5 -5
- data/rails_generators/nifty_authentication/templates/tests/rspec/user.rb +15 -15
- data/rails_generators/nifty_authentication/templates/tests/rspec/users_controller.rb +4 -4
- data/rails_generators/nifty_authentication/templates/tests/shoulda/sessions_controller.rb +3 -3
- data/rails_generators/nifty_authentication/templates/tests/shoulda/user.rb +15 -15
- data/rails_generators/nifty_authentication/templates/tests/shoulda/users_controller.rb +2 -2
- data/rails_generators/nifty_authentication/templates/tests/testunit/sessions_controller.rb +3 -3
- data/rails_generators/nifty_authentication/templates/tests/testunit/user.rb +15 -15
- data/rails_generators/nifty_authentication/templates/tests/testunit/users_controller.rb +2 -2
- data/rails_generators/nifty_authentication/templates/user.rb +7 -7
- data/rails_generators/nifty_authentication/templates/users_controller.rb +1 -1
- data/rails_generators/nifty_config/USAGE +2 -2
- data/rails_generators/nifty_config/nifty_config_generator.rb +3 -3
- data/rails_generators/nifty_layout/USAGE +2 -2
- data/rails_generators/nifty_layout/nifty_layout_generator.rb +3 -3
- data/rails_generators/nifty_layout/templates/helper.rb +3 -3
- data/rails_generators/nifty_layout/templates/layout.html.erb +2 -2
- data/rails_generators/nifty_layout/templates/layout.html.haml +4 -4
- data/rails_generators/nifty_scaffold/USAGE +9 -9
- data/rails_generators/nifty_scaffold/nifty_scaffold_generator.rb +38 -38
- data/rails_generators/nifty_scaffold/templates/migration.rb +1 -1
- data/rails_generators/nifty_scaffold/templates/tests/rspec/actions/create.rb +1 -1
- data/rails_generators/nifty_scaffold/templates/tests/rspec/actions/update.rb +1 -1
- data/rails_generators/nifty_scaffold/templates/tests/rspec/controller.rb +2 -2
- data/rails_generators/nifty_scaffold/templates/tests/shoulda/actions/create.rb +1 -1
- data/rails_generators/nifty_scaffold/templates/tests/shoulda/actions/update.rb +1 -1
- data/rails_generators/nifty_scaffold/templates/tests/testunit/actions/create.rb +1 -1
- data/rails_generators/nifty_scaffold/templates/tests/testunit/actions/update.rb +1 -1
- data/test/test_helper.rb +7 -7
- data/test/test_nifty_authentication_generator.rb +30 -30
- data/test/test_nifty_config_generator.rb +4 -4
- data/test/test_nifty_layout_generator.rb +5 -5
- data/test/test_nifty_scaffold_generator.rb +93 -93
- metadata +6 -4
data/CHANGELOG
CHANGED
|
@@ -1,3 +1,14 @@
|
|
|
1
|
+
0.4.1 (September 23rd, 2010)
|
|
2
|
+
|
|
3
|
+
* fixing frozen hash error when not passing additional arguments to nifty:scaffold - issue #35
|
|
4
|
+
|
|
5
|
+
* fixing rendering of default title in nifty:layout - issue #36
|
|
6
|
+
|
|
7
|
+
* fixing integrate_views error in nifty:scaffold specs - issue #43
|
|
8
|
+
|
|
9
|
+
* updating SASS syntax (thanks semaperepelitsa) - issue #46
|
|
10
|
+
|
|
11
|
+
|
|
1
12
|
0.4.0 (April 19th, 2010)
|
|
2
13
|
|
|
3
14
|
* adding error_messages_for and f.error_messages helper for Rails 3 nifty:layout
|
data/README.rdoc
CHANGED
|
@@ -87,10 +87,10 @@ Try restarting your development server. Sometimes it doesn't detect the change i
|
|
|
87
87
|
Make sure you have mocha installed and require it in your spec/test helper.
|
|
88
88
|
|
|
89
89
|
gem install mocha
|
|
90
|
-
|
|
90
|
+
|
|
91
91
|
# in spec_helper.rb
|
|
92
92
|
config.mock_with :mocha
|
|
93
|
-
|
|
93
|
+
|
|
94
94
|
# in test_helper.rb
|
|
95
95
|
require 'mocha'
|
|
96
96
|
|
|
@@ -2,7 +2,7 @@ Feature: Nifty Authentication Generator
|
|
|
2
2
|
In order to authenticate users
|
|
3
3
|
As a rails developer
|
|
4
4
|
I want to generate some user authentication
|
|
5
|
-
|
|
5
|
+
|
|
6
6
|
Scenario: Generate default authentication
|
|
7
7
|
Given a new Rails app
|
|
8
8
|
When I run "rails g nifty:authentication"
|
|
@@ -31,7 +31,7 @@ Feature: Nifty Authentication Generator
|
|
|
31
31
|
And I run "rake db:migrate"
|
|
32
32
|
And I add "gem 'mocha', :group => :test" to file "Gemfile"
|
|
33
33
|
Then I should successfully run "rake test"
|
|
34
|
-
|
|
34
|
+
|
|
35
35
|
Scenario: Generate named authentication
|
|
36
36
|
Given a new Rails app
|
|
37
37
|
When I run "rails g nifty:authentication Account CurrentSession"
|
|
@@ -18,5 +18,20 @@ Feature: Nifty Scaffold Generator
|
|
|
18
18
|
And I should see "resources :projects" in file "config/routes.rb"
|
|
19
19
|
When I run "rails g nifty:layout -f"
|
|
20
20
|
And I run "rake db:migrate"
|
|
21
|
+
And I should successfully run "rails g nifty:scaffold Project -f"
|
|
21
22
|
And I add "gem 'mocha', :group => :test" to file "Gemfile"
|
|
22
23
|
Then I should successfully run "rake test"
|
|
24
|
+
|
|
25
|
+
Scenario: Generate scaffold with rspec tests
|
|
26
|
+
Given a new Rails app
|
|
27
|
+
When I run "rails g nifty:scaffold Project name:string --rspec"
|
|
28
|
+
Then I should see the following files
|
|
29
|
+
| spec/models/project_spec.rb |
|
|
30
|
+
| spec/controllers/projects_controller_spec.rb |
|
|
31
|
+
And I should see "resources :projects" in file "config/routes.rb"
|
|
32
|
+
When I run "rails g nifty:layout -f"
|
|
33
|
+
And I run "rake db:migrate"
|
|
34
|
+
And I add "gem 'mocha', :group => :test" to file "Gemfile"
|
|
35
|
+
And I add "gem 'rspec-rails', '>= 2.0.0.beta.19'" to file "Gemfile"
|
|
36
|
+
And I run "rails g rspec:install"
|
|
37
|
+
Then I should successfully run "rake spec"
|
|
@@ -5,7 +5,7 @@ end
|
|
|
5
5
|
When /^I add "([^\"]*)" to file "([^\"]*)"$/ do |content, short_path|
|
|
6
6
|
path = File.join(@current_directory, short_path)
|
|
7
7
|
File.should exist(path)
|
|
8
|
-
File.open(path, 'a') { |f| f.write(content) }
|
|
8
|
+
File.open(path, 'a') { |f| f.write(content + "\n") }
|
|
9
9
|
end
|
|
10
10
|
|
|
11
11
|
Then /^I should see file "([^\"]*)"$/ do |path|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Given /^a new Rails app$/ do
|
|
2
2
|
FileUtils.mkdir_p("tmp")
|
|
3
|
-
system("rails tmp/rails_app").should be_true
|
|
3
|
+
system("rails new tmp/rails_app").should be_true
|
|
4
4
|
system("ln -s ../../../lib/generators tmp/rails_app/lib/generators").should be_true
|
|
5
5
|
@current_directory = File.expand_path("tmp/rails_app")
|
|
6
6
|
end
|
data/lib/generators/nifty.rb
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
require 'rails/generators/base'
|
|
2
|
-
|
|
2
|
+
|
|
3
3
|
module Nifty
|
|
4
4
|
module Generators
|
|
5
5
|
class Base < Rails::Generators::Base #:nodoc:
|
|
6
6
|
def self.source_root
|
|
7
7
|
@_nifty_source_root ||= File.expand_path(File.join(File.dirname(__FILE__), 'nifty', generator_name, 'templates'))
|
|
8
8
|
end
|
|
9
|
-
|
|
9
|
+
|
|
10
10
|
def self.banner
|
|
11
11
|
"#{$0} nifty:#{generator_name} #{self.arguments.map{ |a| a.usage }.join(' ')} [options]"
|
|
12
12
|
end
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
Description:
|
|
2
|
-
Generates a user model, users controller, and sessions controller. The
|
|
3
|
-
users controller handles the registration and the sessions controller
|
|
4
|
-
handles authentication. This is similar to restful_authentication, but
|
|
2
|
+
Generates a user model, users controller, and sessions controller. The
|
|
3
|
+
users controller handles the registration and the sessions controller
|
|
4
|
+
handles authentication. This is similar to restful_authentication, but
|
|
5
5
|
simpler.
|
|
6
|
-
|
|
6
|
+
|
|
7
7
|
IMPORTANT: This generator uses the "title" helper method which is generated
|
|
8
8
|
by the nifty_layout generator. You may want to run that generator first.
|
|
9
9
|
|
|
@@ -12,28 +12,28 @@ Usage:
|
|
|
12
12
|
the authentication controller will default to "session". You can override
|
|
13
13
|
each of these respectively by passing one or two arguments. Either name can
|
|
14
14
|
be CamelCased or under_scored.
|
|
15
|
-
|
|
15
|
+
|
|
16
16
|
Make sure to setup the authlogic gem if you are using that option.
|
|
17
|
-
|
|
17
|
+
|
|
18
18
|
gem "authlogic" # in Gemfile
|
|
19
19
|
|
|
20
20
|
Examples:
|
|
21
21
|
rails generate nifty:authentication
|
|
22
|
-
|
|
22
|
+
|
|
23
23
|
Creates user model, users_controller, and sessions_controller.
|
|
24
|
-
|
|
24
|
+
|
|
25
25
|
rails generate nifty:authentication account
|
|
26
|
-
|
|
26
|
+
|
|
27
27
|
Creates account model, accounts_controller, and sessions_controller.
|
|
28
|
-
|
|
28
|
+
|
|
29
29
|
rails generate nifty:authentication Account UserSession
|
|
30
|
-
|
|
30
|
+
|
|
31
31
|
Creates account model, accounts_controller, and user_sessions_controller.
|
|
32
32
|
|
|
33
33
|
Methods:
|
|
34
34
|
There are several methods generated which you can use in your application.
|
|
35
35
|
Here's a common example of what you might add to your layout.
|
|
36
|
-
|
|
36
|
+
|
|
37
37
|
<% if logged_in? %>
|
|
38
38
|
Welcome <%= current_user.username %>! Not you?
|
|
39
39
|
<%= link_to "Log out", logout_path %>
|
|
@@ -41,10 +41,10 @@ Methods:
|
|
|
41
41
|
<%= link_to "Sign up", signup_path %> or
|
|
42
42
|
<%= link_to "log in", login_path %>.
|
|
43
43
|
<% end %>
|
|
44
|
-
|
|
44
|
+
|
|
45
45
|
You can also restrict unregistered users from accessing a controller using
|
|
46
46
|
a before filter. For example.
|
|
47
|
-
|
|
47
|
+
|
|
48
48
|
before_filter :login_required, :except => [:index, :show]
|
|
49
|
-
|
|
49
|
+
|
|
50
50
|
See the generated file lib/authentication.rb for details.
|
|
@@ -5,17 +5,17 @@ module Nifty
|
|
|
5
5
|
module Generators
|
|
6
6
|
class AuthenticationGenerator < Base
|
|
7
7
|
include Rails::Generators::Migration
|
|
8
|
-
|
|
8
|
+
|
|
9
9
|
argument :user_name, :type => :string, :default => 'user', :banner => 'user_name'
|
|
10
10
|
argument :session_name, :type => :string, :default => '[[DEFAULT]]', :banner => 'sessions_controller_name'
|
|
11
|
-
|
|
11
|
+
|
|
12
12
|
class_option :testunit, :desc => 'Use test/unit for test files.', :group => 'Test framework', :type => :boolean
|
|
13
13
|
class_option :rspec, :desc => 'Use RSpec for test files.', :group => 'Test framework', :type => :boolean
|
|
14
14
|
class_option :shoulda, :desc => 'Use shoulda for test files.', :group => 'Test framework', :type => :boolean
|
|
15
|
-
|
|
15
|
+
|
|
16
16
|
class_option :haml, :desc => 'Generate HAML views instead of ERB.', :type => :boolean
|
|
17
17
|
class_option :authlogic, :desc => 'Use Authlogic for authentication.', :type => :boolean
|
|
18
|
-
|
|
18
|
+
|
|
19
19
|
def create_model_files
|
|
20
20
|
template 'user.rb', "app/models/#{user_singular_name}.rb"
|
|
21
21
|
template 'authlogic_session.rb', "app/models/#{user_singular_name}_session.rb" if options.authlogic?
|
|
@@ -26,7 +26,7 @@ module Nifty
|
|
|
26
26
|
template 'sessions_controller.rb', "app/controllers/#{session_plural_name}_controller.rb"
|
|
27
27
|
end
|
|
28
28
|
|
|
29
|
-
def
|
|
29
|
+
def create_helper_files
|
|
30
30
|
template 'users_helper.rb', "app/helpers/#{user_plural_name}_helper.rb"
|
|
31
31
|
template 'sessions_helper.rb', "app/helpers/#{session_plural_name}_helper.rb"
|
|
32
32
|
end
|
|
@@ -47,12 +47,13 @@ module Nifty
|
|
|
47
47
|
route "match 'logout' => '#{session_plural_name}#destroy', :as => :logout"
|
|
48
48
|
route "match 'signup' => '#{user_plural_name}#new', :as => :signup"
|
|
49
49
|
end
|
|
50
|
-
|
|
50
|
+
|
|
51
51
|
def create_migration
|
|
52
52
|
migration_template 'migration.rb', "db/migrate/create_#{user_plural_name}.rb"
|
|
53
53
|
end
|
|
54
|
-
|
|
55
|
-
def
|
|
54
|
+
|
|
55
|
+
def load_and_include_authentication
|
|
56
|
+
inject_into_class "config/application.rb", "Application", " config.autoload_paths << \"\#{config.root}/lib\""
|
|
56
57
|
inject_into_class "app/controllers/application_controller.rb", "ApplicationController", " include Authentication\n"
|
|
57
58
|
end
|
|
58
59
|
|
|
@@ -71,7 +72,7 @@ module Nifty
|
|
|
71
72
|
end
|
|
72
73
|
|
|
73
74
|
private
|
|
74
|
-
|
|
75
|
+
|
|
75
76
|
def session_name
|
|
76
77
|
@_session_name ||= @session_name == '[[DEFAULT]]' ?
|
|
77
78
|
(options.authlogic? ? user_name + '_session' : 'session') :
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# This module is included in your application controller which makes
|
|
2
2
|
# several methods available to all controllers and views. Here's a
|
|
3
3
|
# common example you might add to your application layout file.
|
|
4
|
-
#
|
|
4
|
+
#
|
|
5
5
|
# <%% if logged_in? %>
|
|
6
6
|
# Welcome <%%= current_<%= user_singular_name %>.username %>! Not you?
|
|
7
7
|
# <%%= link_to "Log out", logout_path %>
|
|
@@ -9,16 +9,16 @@
|
|
|
9
9
|
# <%%= link_to "Sign up", signup_path %> or
|
|
10
10
|
# <%%= link_to "log in", login_path %>.
|
|
11
11
|
# <%% end %>
|
|
12
|
-
#
|
|
12
|
+
#
|
|
13
13
|
# You can also restrict unregistered users from accessing a controller using
|
|
14
14
|
# a before filter. For example.
|
|
15
|
-
#
|
|
15
|
+
#
|
|
16
16
|
# before_filter :login_required, :except => [:index, :show]
|
|
17
17
|
module Authentication
|
|
18
18
|
def self.included(controller)
|
|
19
19
|
controller.send :helper_method, :current_<%= user_singular_name %>, :logged_in?, :redirect_to_target_or_default
|
|
20
20
|
end
|
|
21
|
-
|
|
21
|
+
|
|
22
22
|
<%- if options[:authlogic] -%>
|
|
23
23
|
def current_<%= session_singular_name %>
|
|
24
24
|
return @current_<%= session_singular_name %> if defined?(@current_<%= session_singular_name %>)
|
|
@@ -34,11 +34,11 @@ module Authentication
|
|
|
34
34
|
@current_<%= user_singular_name %> ||= <%= user_class_name %>.find(session[:<%= user_singular_name %>_id]) if session[:<%= user_singular_name %>_id]
|
|
35
35
|
end
|
|
36
36
|
<%- end -%>
|
|
37
|
-
|
|
37
|
+
|
|
38
38
|
def logged_in?
|
|
39
39
|
current_<%= user_singular_name %>
|
|
40
40
|
end
|
|
41
|
-
|
|
41
|
+
|
|
42
42
|
def login_required
|
|
43
43
|
unless logged_in?
|
|
44
44
|
flash[:error] = "You must first log in or sign up before accessing this page."
|
|
@@ -46,14 +46,14 @@ module Authentication
|
|
|
46
46
|
redirect_to login_url
|
|
47
47
|
end
|
|
48
48
|
end
|
|
49
|
-
|
|
49
|
+
|
|
50
50
|
def redirect_to_target_or_default(default)
|
|
51
51
|
redirect_to(session[:return_to] || default)
|
|
52
52
|
session[:return_to] = nil
|
|
53
53
|
end
|
|
54
|
-
|
|
54
|
+
|
|
55
55
|
private
|
|
56
|
-
|
|
56
|
+
|
|
57
57
|
def store_target_location
|
|
58
58
|
session[:return_to] = request.request_uri
|
|
59
59
|
end
|
|
@@ -3,7 +3,7 @@ class <%= session_plural_class_name %>Controller < ApplicationController
|
|
|
3
3
|
def new
|
|
4
4
|
@<%= session_singular_name %> = <%= session_class_name %>.new
|
|
5
5
|
end
|
|
6
|
-
|
|
6
|
+
|
|
7
7
|
def create
|
|
8
8
|
@<%= session_singular_name %> = <%= session_class_name %>.new(params[:<%= session_singular_name %>])
|
|
9
9
|
if @<%= session_singular_name %>.save
|
|
@@ -13,7 +13,7 @@ class <%= session_plural_class_name %>Controller < ApplicationController
|
|
|
13
13
|
render :action => 'new'
|
|
14
14
|
end
|
|
15
15
|
end
|
|
16
|
-
|
|
16
|
+
|
|
17
17
|
def destroy
|
|
18
18
|
@<%= session_singular_name %> = <%= session_class_name %>.find
|
|
19
19
|
@<%= session_singular_name %>.destroy
|
|
@@ -23,7 +23,7 @@ class <%= session_plural_class_name %>Controller < ApplicationController
|
|
|
23
23
|
<%- else -%>
|
|
24
24
|
def new
|
|
25
25
|
end
|
|
26
|
-
|
|
26
|
+
|
|
27
27
|
def create
|
|
28
28
|
<%= user_singular_name %> = <%= user_class_name %>.authenticate(params[:login], params[:password])
|
|
29
29
|
if <%= user_singular_name %>
|
|
@@ -35,7 +35,7 @@ class <%= session_plural_class_name %>Controller < ApplicationController
|
|
|
35
35
|
render :action => 'new'
|
|
36
36
|
end
|
|
37
37
|
end
|
|
38
|
-
|
|
38
|
+
|
|
39
39
|
def destroy
|
|
40
40
|
session[:<%= user_singular_name %>_id] = nil
|
|
41
41
|
flash[:notice] = "You have been logged out."
|
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
require File.dirname(__FILE__) + '/../spec_helper'
|
|
2
|
-
|
|
2
|
+
|
|
3
3
|
describe <%= session_plural_class_name %>Controller do
|
|
4
4
|
fixtures :all
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
render_views
|
|
6
|
+
|
|
7
7
|
it "new action should render new template" do
|
|
8
8
|
get :new
|
|
9
9
|
response.should render_template(:new)
|
|
10
10
|
end
|
|
11
|
-
|
|
11
|
+
|
|
12
12
|
<%- if options[:authlogic] -%>
|
|
13
13
|
it "create action should render new template when authentication is invalid" do
|
|
14
14
|
post :create, :<%= session_singular_name %> => { :username => "foo", :password => "badpassword" }
|
|
15
15
|
response.should render_template(:new)
|
|
16
16
|
<%= session_class_name %>.find.should be_nil
|
|
17
17
|
end
|
|
18
|
-
|
|
18
|
+
|
|
19
19
|
it "create action should redirect when authentication is valid" do
|
|
20
20
|
post :create, :<%= session_singular_name %> => { :username => "foo", :password => "secret" }
|
|
21
21
|
response.should redirect_to("/")
|
|
@@ -28,7 +28,7 @@ describe <%= session_plural_class_name %>Controller do
|
|
|
28
28
|
response.should render_template(:new)
|
|
29
29
|
session['<%= user_singular_name %>_id'].should be_nil
|
|
30
30
|
end
|
|
31
|
-
|
|
31
|
+
|
|
32
32
|
it "create action should redirect when authentication is valid" do
|
|
33
33
|
<%= user_class_name %>.stubs(:authenticate).returns(<%= user_class_name %>.first)
|
|
34
34
|
post :create
|
|
@@ -9,72 +9,72 @@ describe <%= user_class_name %> do
|
|
|
9
9
|
attributes[:password_confirmation] ||= attributes[:password]
|
|
10
10
|
<%= user_class_name %>.new(attributes)
|
|
11
11
|
end
|
|
12
|
-
|
|
12
|
+
|
|
13
13
|
before(:each) do
|
|
14
14
|
<%= user_class_name %>.delete_all
|
|
15
15
|
end
|
|
16
|
-
|
|
16
|
+
|
|
17
17
|
it "should be valid" do
|
|
18
18
|
new_<%= user_singular_name %>.should be_valid
|
|
19
19
|
end
|
|
20
|
-
|
|
20
|
+
|
|
21
21
|
it "should require username" do
|
|
22
22
|
new_<%= user_singular_name %>(:username => '').should have(1).error_on(:username)
|
|
23
23
|
end
|
|
24
|
-
|
|
24
|
+
|
|
25
25
|
it "should require password" do
|
|
26
26
|
new_<%= user_singular_name %>(:password => '').should have(1).error_on(:password)
|
|
27
27
|
end
|
|
28
|
-
|
|
28
|
+
|
|
29
29
|
it "should require well formed email" do
|
|
30
30
|
new_<%= user_singular_name %>(:email => 'foo@bar@example.com').should have(1).error_on(:email)
|
|
31
31
|
end
|
|
32
|
-
|
|
32
|
+
|
|
33
33
|
it "should validate uniqueness of email" do
|
|
34
34
|
new_<%= user_singular_name %>(:email => 'bar@example.com').save!
|
|
35
35
|
new_<%= user_singular_name %>(:email => 'bar@example.com').should have(1).error_on(:email)
|
|
36
36
|
end
|
|
37
|
-
|
|
37
|
+
|
|
38
38
|
it "should validate uniqueness of username" do
|
|
39
39
|
new_<%= user_singular_name %>(:username => 'uniquename').save!
|
|
40
40
|
new_<%= user_singular_name %>(:username => 'uniquename').should have(1).error_on(:username)
|
|
41
41
|
end
|
|
42
|
-
|
|
42
|
+
|
|
43
43
|
it "should not allow odd characters in username" do
|
|
44
44
|
new_<%= user_singular_name %>(:username => 'odd ^&(@)').should have(1).error_on(:username)
|
|
45
45
|
end
|
|
46
|
-
|
|
46
|
+
|
|
47
47
|
it "should validate password is longer than 3 characters" do
|
|
48
48
|
new_<%= user_singular_name %>(:password => 'bad').should have(1).error_on(:password)
|
|
49
49
|
end
|
|
50
|
-
|
|
50
|
+
|
|
51
51
|
it "should require matching password confirmation" do
|
|
52
52
|
new_<%= user_singular_name %>(:password_confirmation => 'nonmatching').should have(1).error_on(:password)
|
|
53
53
|
end
|
|
54
|
-
|
|
54
|
+
|
|
55
55
|
it "should generate password hash and salt on create" do
|
|
56
56
|
<%= user_singular_name %> = new_<%= user_singular_name %>
|
|
57
57
|
<%= user_singular_name %>.save!
|
|
58
58
|
<%= user_singular_name %>.password_hash.should_not be_nil
|
|
59
59
|
<%= user_singular_name %>.password_salt.should_not be_nil
|
|
60
60
|
end
|
|
61
|
-
|
|
61
|
+
|
|
62
62
|
it "should authenticate by username" do
|
|
63
63
|
<%= user_singular_name %> = new_<%= user_singular_name %>(:username => 'foobar', :password => 'secret')
|
|
64
64
|
<%= user_singular_name %>.save!
|
|
65
65
|
<%= user_class_name %>.authenticate('foobar', 'secret').should == <%= user_singular_name %>
|
|
66
66
|
end
|
|
67
|
-
|
|
67
|
+
|
|
68
68
|
it "should authenticate by email" do
|
|
69
69
|
<%= user_singular_name %> = new_<%= user_singular_name %>(:email => 'foo@bar.com', :password => 'secret')
|
|
70
70
|
<%= user_singular_name %>.save!
|
|
71
71
|
<%= user_class_name %>.authenticate('foo@bar.com', 'secret').should == <%= user_singular_name %>
|
|
72
72
|
end
|
|
73
|
-
|
|
73
|
+
|
|
74
74
|
it "should not authenticate bad username" do
|
|
75
75
|
<%= user_class_name %>.authenticate('nonexisting', 'secret').should be_nil
|
|
76
76
|
end
|
|
77
|
-
|
|
77
|
+
|
|
78
78
|
it "should not authenticate bad password" do
|
|
79
79
|
new_<%= user_singular_name %>(:username => 'foobar', :password => 'secret').save!
|
|
80
80
|
<%= user_class_name %>.authenticate('foobar', 'badpassword').should be_nil
|