fat_free_crm 0.13.0 → 0.13.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.
Potentially problematic release.
This version of fat_free_crm might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Capfile +1 -4
- data/Gemfile.lock +0 -1
- data/README.md +1 -0
- data/app/assets/javascripts/lists.js.coffee +1 -2
- data/app/controllers/application_controller.rb +27 -25
- data/app/controllers/emails_controller.rb +1 -30
- data/app/controllers/entities/contacts_controller.rb +1 -1
- data/app/controllers/entities/opportunities_controller.rb +1 -1
- data/app/controllers/entities_controller.rb +0 -1
- data/app/controllers/home_controller.rb +0 -4
- data/app/controllers/passwords_controller.rb +3 -3
- data/app/controllers/tasks_controller.rb +17 -10
- data/app/controllers/users_controller.rb +23 -46
- data/app/helpers/application_helper.rb +0 -3
- data/app/helpers/campaigns_helper.rb +0 -1
- data/app/helpers/leads_helper.rb +0 -11
- data/app/helpers/opportunities_helper.rb +0 -1
- data/app/helpers/tags_helper.rb +0 -8
- data/app/helpers/versions_helper.rb +1 -1
- data/app/models/entities/account_contact.rb +1 -1
- data/app/models/entities/campaign.rb +3 -3
- data/app/models/entities/contact.rb +3 -3
- data/app/models/entities/lead.rb +5 -5
- data/app/models/entities/opportunity.rb +1 -3
- data/app/models/fields/field_group.rb +1 -0
- data/app/models/list.rb +2 -1
- data/app/models/polymorphic/avatar.rb +1 -1
- data/app/models/polymorphic/task.rb +7 -4
- data/app/models/setting.rb +0 -3
- data/app/models/users/ability.rb +13 -2
- data/app/models/users/user.rb +4 -1
- data/app/views/home/index.html.haml +0 -4
- data/app/views/layouts/application.html.haml +7 -5
- data/app/views/leads/_contact.html.haml +0 -3
- data/app/views/lists/_personal_sidebar.html.haml +2 -2
- data/app/views/lists/_sidebar.html.haml +2 -2
- data/config/application.rb +2 -2
- data/config/environments/development.rb +2 -0
- data/config/environments/production.rb +2 -3
- data/config/initializers/secret_token.rb +25 -1
- data/config/locales/en-US_fat_free_crm.yml +1 -1
- data/config/routes.rb +27 -32
- data/config/settings.default.yml +3 -4
- data/lib/development_tasks/rspec.rake +1 -5
- data/lib/fat_free_crm.rb +11 -1
- data/lib/fat_free_crm/fields.rb +1 -1
- data/lib/fat_free_crm/gem_ext/rails/text_helper.rb +1 -2
- data/lib/fat_free_crm/secret_token_generator.rb +59 -0
- data/lib/fat_free_crm/version.rb +1 -1
- data/spec/controllers/admin/users_controller_spec.rb +1 -3
- data/spec/controllers/home_controller_spec.rb +0 -7
- data/spec/controllers/passwords_controller_spec.rb +23 -5
- data/spec/controllers/users_controller_spec.rb +45 -17
- data/spec/lib/secret_token_generator_spec.rb +55 -0
- data/spec/models/users/abilities/user_ability_spec.rb +58 -0
- data/spec/routing/emails_routing_spec.rb +13 -14
- data/spec/spec_helper.rb +2 -1
- metadata +5 -2
@@ -189,7 +189,7 @@ en-US:
|
|
189
189
|
msg_account_not_approved: Your account has not been approved yet.
|
190
190
|
msg_asset_deleted: ! '%{value} has been deleted.'
|
191
191
|
msg_asset_not_available: This %{value} is no longer available.
|
192
|
-
|
192
|
+
msg_not_authorized: You are not authorized to take this action.
|
193
193
|
msg_assets_not_available: The %{value} are not available.
|
194
194
|
msg_asset_rejected: ! '%{value} has been rejected.'
|
195
195
|
msg_bad_image_file: ^Could't upload or resize the image file you specified.
|
data/config/routes.rb
CHANGED
@@ -21,10 +21,10 @@ Rails.application.routes.draw do
|
|
21
21
|
match '/home/timezone', :as => :timezone
|
22
22
|
match '/home/redraw', :as => :redraw
|
23
23
|
|
24
|
-
resource :authentication
|
25
|
-
resources :comments,
|
26
|
-
resources :emails
|
27
|
-
resources :passwords
|
24
|
+
resource :authentication, :except => [:index, :edit]
|
25
|
+
resources :comments, :except => [:new, :show]
|
26
|
+
resources :emails, :only => [:destroy]
|
27
|
+
resources :passwords, :only => [:new, :create, :edit, :update]
|
28
28
|
|
29
29
|
resources :accounts, :id => /\d+/ do
|
30
30
|
collection do
|
@@ -32,17 +32,17 @@ Rails.application.routes.draw do
|
|
32
32
|
post :filter
|
33
33
|
get :options
|
34
34
|
get :field_group
|
35
|
-
|
35
|
+
post :auto_complete
|
36
36
|
post :redraw
|
37
|
-
get
|
37
|
+
get :versions
|
38
38
|
end
|
39
39
|
member do
|
40
40
|
put :attach
|
41
41
|
post :discard
|
42
42
|
post :subscribe
|
43
43
|
post :unsubscribe
|
44
|
-
get
|
45
|
-
get
|
44
|
+
get :contacts
|
45
|
+
get :opportunities
|
46
46
|
end
|
47
47
|
end
|
48
48
|
|
@@ -54,15 +54,15 @@ Rails.application.routes.draw do
|
|
54
54
|
get :field_group
|
55
55
|
post :auto_complete
|
56
56
|
post :redraw
|
57
|
-
get
|
57
|
+
get :versions
|
58
58
|
end
|
59
59
|
member do
|
60
60
|
put :attach
|
61
61
|
post :discard
|
62
62
|
post :subscribe
|
63
63
|
post :unsubscribe
|
64
|
-
get
|
65
|
-
get
|
64
|
+
get :leads
|
65
|
+
get :opportunities
|
66
66
|
end
|
67
67
|
end
|
68
68
|
|
@@ -74,14 +74,14 @@ Rails.application.routes.draw do
|
|
74
74
|
get :field_group
|
75
75
|
post :auto_complete
|
76
76
|
post :redraw
|
77
|
-
get
|
77
|
+
get :versions
|
78
78
|
end
|
79
79
|
member do
|
80
80
|
put :attach
|
81
81
|
post :discard
|
82
82
|
post :subscribe
|
83
83
|
post :unsubscribe
|
84
|
-
get
|
84
|
+
get :opportunities
|
85
85
|
end
|
86
86
|
end
|
87
87
|
|
@@ -93,7 +93,8 @@ Rails.application.routes.draw do
|
|
93
93
|
get :field_group
|
94
94
|
post :auto_complete
|
95
95
|
post :redraw
|
96
|
-
get
|
96
|
+
get :versions
|
97
|
+
get :autocomplete_account_name
|
97
98
|
end
|
98
99
|
member do
|
99
100
|
get :convert
|
@@ -104,8 +105,6 @@ Rails.application.routes.draw do
|
|
104
105
|
put :promote
|
105
106
|
put :reject
|
106
107
|
end
|
107
|
-
|
108
|
-
get :autocomplete_account_name, :on => :collection
|
109
108
|
end
|
110
109
|
|
111
110
|
resources :opportunities, :id => /\d+/ do
|
@@ -123,7 +122,7 @@ Rails.application.routes.draw do
|
|
123
122
|
post :discard
|
124
123
|
post :subscribe
|
125
124
|
post :unsubscribe
|
126
|
-
get
|
125
|
+
get :contacts
|
127
126
|
end
|
128
127
|
end
|
129
128
|
|
@@ -133,24 +132,21 @@ Rails.application.routes.draw do
|
|
133
132
|
post :auto_complete
|
134
133
|
end
|
135
134
|
member do
|
136
|
-
put
|
135
|
+
put :complete
|
137
136
|
end
|
138
137
|
end
|
139
138
|
|
140
139
|
resources :users, :id => /\d+/, :except => [:index, :destroy] do
|
141
140
|
member do
|
142
|
-
get
|
143
|
-
get
|
144
|
-
put
|
145
|
-
put
|
141
|
+
get :avatar
|
142
|
+
get :password
|
143
|
+
put :upload_avatar
|
144
|
+
put :change_password
|
146
145
|
post :redraw
|
147
146
|
end
|
148
|
-
|
149
147
|
collection do
|
150
|
-
|
151
|
-
|
152
|
-
collection do
|
153
|
-
get :opportunities_overview
|
148
|
+
post :auto_complete
|
149
|
+
get :opportunities_overview
|
154
150
|
end
|
155
151
|
end
|
156
152
|
|
@@ -168,7 +164,7 @@ Rails.application.routes.draw do
|
|
168
164
|
end
|
169
165
|
end
|
170
166
|
|
171
|
-
resources :field_groups, :except => :index do
|
167
|
+
resources :field_groups, :except => [:index, :show] do
|
172
168
|
collection do
|
173
169
|
post :sort
|
174
170
|
end
|
@@ -187,7 +183,7 @@ Rails.application.routes.draw do
|
|
187
183
|
end
|
188
184
|
end
|
189
185
|
|
190
|
-
resources :tags do
|
186
|
+
resources :tags, :except => [:show] do
|
191
187
|
member do
|
192
188
|
get :confirm
|
193
189
|
end
|
@@ -196,9 +192,8 @@ Rails.application.routes.draw do
|
|
196
192
|
resources :fields, :as => :custom_fields
|
197
193
|
resources :fields, :as => :core_fields
|
198
194
|
|
199
|
-
resources :settings
|
200
|
-
resources :plugins
|
195
|
+
resources :settings, :only => :index
|
196
|
+
resources :plugins, :only => :index
|
201
197
|
end
|
202
198
|
|
203
|
-
get '/:controller/tagged/:id' => '#tagged'
|
204
199
|
end
|
data/config/settings.default.yml
CHANGED
@@ -63,12 +63,11 @@
|
|
63
63
|
|
64
64
|
|
65
65
|
# Settings for outgoing email (SMTP)
|
66
|
-
# - Default configuration is for GMail
|
67
66
|
#------------------------------------------------------------------------------
|
68
67
|
:smtp:
|
69
|
-
:address : "smtp.gmail.com
|
70
|
-
:enable_starttls_auto : true
|
71
|
-
:port : 587
|
68
|
+
:address : "" # e.g. smtp.gmail.com
|
69
|
+
:enable_starttls_auto : true # true/false
|
70
|
+
:port : "" # e.g. 587
|
72
71
|
:authentication : :plain
|
73
72
|
:user_name : ""
|
74
73
|
:password : ""
|
@@ -5,7 +5,7 @@
|
|
5
5
|
#------------------------------------------------------------------------------
|
6
6
|
if defined?(RSpec)
|
7
7
|
require 'rspec/core/rake_task'
|
8
|
-
|
8
|
+
|
9
9
|
namespace :spec do
|
10
10
|
desc "Preparing test env"
|
11
11
|
task :prepare do
|
@@ -21,8 +21,4 @@ if defined?(RSpec)
|
|
21
21
|
Rake::Task["spec"].prerequisites.clear
|
22
22
|
Rake::Task["spec"].prerequisites.push("spec:prepare")
|
23
23
|
|
24
|
-
desc 'Run the acceptance specs in ./acceptance'
|
25
|
-
RSpec::Core::RakeTask.new(:acceptance => 'spec:prepare') do |t|
|
26
|
-
t.pattern = 'acceptance/**/*_spec.rb'
|
27
|
-
end
|
28
24
|
end
|
data/lib/fat_free_crm.rb
CHANGED
@@ -9,12 +9,22 @@ module FatFreeCRM
|
|
9
9
|
# Return either Application or Engine,
|
10
10
|
# depending on how Fat Free CRM has been loaded
|
11
11
|
def application
|
12
|
-
|
12
|
+
engine? ? Engine : Application
|
13
13
|
end
|
14
14
|
|
15
15
|
def root
|
16
16
|
application.root
|
17
17
|
end
|
18
|
+
|
19
|
+
# Are we running as an engine?
|
20
|
+
def engine?
|
21
|
+
defined?(FatFreeCRM::Engine).present?
|
22
|
+
end
|
23
|
+
|
24
|
+
def application?
|
25
|
+
!engine?
|
26
|
+
end
|
27
|
+
|
18
28
|
end
|
19
29
|
end
|
20
30
|
|
data/lib/fat_free_crm/fields.rb
CHANGED
@@ -76,7 +76,7 @@ module FatFreeCRM
|
|
76
76
|
end
|
77
77
|
|
78
78
|
def method_missing(method_id, *args, &block)
|
79
|
-
if method_id.to_s =~
|
79
|
+
if method_id.to_s =~ /\Acf_/
|
80
80
|
# Refresh columns and try again.
|
81
81
|
self.class.reset_column_information
|
82
82
|
# If new record, create new object from class, else reload class
|
@@ -86,7 +86,7 @@ module ActionView
|
|
86
86
|
href
|
87
87
|
else
|
88
88
|
# don't include trailing punctuation character as part of the URL
|
89
|
-
while href.sub!(/[^\w\/-]
|
89
|
+
while href.sub!(/[^\w\/-]\z/, '')
|
90
90
|
punctuation.push $&
|
91
91
|
if opening = BRACKETS[punctuation.last] and href.scan(opening).size > href.scan(punctuation.last).size
|
92
92
|
href << punctuation.pop
|
@@ -127,4 +127,3 @@ module ActionView
|
|
127
127
|
end
|
128
128
|
end
|
129
129
|
end
|
130
|
-
|
@@ -0,0 +1,59 @@
|
|
1
|
+
# Copyright (c) 2008-2014 Michael Dvorkin and contributors.
|
2
|
+
#
|
3
|
+
# Fat Free CRM is freely distributable under the terms of MIT license.
|
4
|
+
# See MIT-LICENSE file or http://www.opensource.org/licenses/mit-license.php
|
5
|
+
#------------------------------------------------------------------------------
|
6
|
+
|
7
|
+
require 'securerandom'
|
8
|
+
|
9
|
+
module FatFreeCRM
|
10
|
+
|
11
|
+
class SecretTokenGenerator
|
12
|
+
|
13
|
+
class << self
|
14
|
+
|
15
|
+
#
|
16
|
+
# If there is no secret token defined, we generate one and save it as a setting
|
17
|
+
# If a token has been already been saved, we tell Rails to use it and move on.
|
18
|
+
def setup!
|
19
|
+
if token.blank?
|
20
|
+
Rails.logger.info("No secret key defined yet... generating and saving to Setting.secret_token")
|
21
|
+
generate_and_persist_token!
|
22
|
+
end
|
23
|
+
FatFreeCRM::Application.config.secret_token = token
|
24
|
+
raise(FAIL_MESSAGE) if FatFreeCRM::Application.config.secret_token.blank?# and !Rails.env.test?
|
25
|
+
end
|
26
|
+
|
27
|
+
private
|
28
|
+
|
29
|
+
FAIL_MESSAGE = ::I18n.t('secret_token_generator.fail_message', default: "There was a problem generating the secret token. Please see lib/fat_free_crm/secret_token_generator.rb")
|
30
|
+
|
31
|
+
#
|
32
|
+
# Read the current token from settings
|
33
|
+
def token
|
34
|
+
Setting.secret_token
|
35
|
+
end
|
36
|
+
|
37
|
+
#
|
38
|
+
# Create a new secret token and save it as a setting.
|
39
|
+
def generate_and_persist_token!
|
40
|
+
quietly do
|
41
|
+
Setting.secret_token = SecureRandom.hex(64)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
#
|
46
|
+
# Yields to a block that executes with the logging turned off
|
47
|
+
# This stops the secret token from being appended to the log
|
48
|
+
def quietly(&block)
|
49
|
+
temp_logger = ActiveRecord::Base.logger
|
50
|
+
ActiveRecord::Base.logger = nil
|
51
|
+
yield
|
52
|
+
ActiveRecord::Base.logger = temp_logger
|
53
|
+
end
|
54
|
+
|
55
|
+
end
|
56
|
+
|
57
|
+
end
|
58
|
+
|
59
|
+
end
|
data/lib/fat_free_crm/version.rb
CHANGED
@@ -54,10 +54,8 @@ describe Admin::UsersController do
|
|
54
54
|
#----------------------------------------------------------------------------
|
55
55
|
describe "GET new" do
|
56
56
|
it "assigns a new user as @user and renders [new] template" do
|
57
|
-
@user = User.new
|
58
|
-
|
59
57
|
xhr :get, :new
|
60
|
-
assigns[:user].
|
58
|
+
expect(assigns[:user]).to be_new_record
|
61
59
|
response.should render_template("admin/users/new")
|
62
60
|
end
|
63
61
|
end
|
@@ -76,13 +76,6 @@ describe HomeController do
|
|
76
76
|
assigns[:my_accounts].should == [account_1, account_4, account_3, account_2]
|
77
77
|
end
|
78
78
|
|
79
|
-
it "should assign @hello and call hook" do
|
80
|
-
require_user
|
81
|
-
controller.should_receive(:hook).at_least(:once)
|
82
|
-
|
83
|
-
get :index
|
84
|
-
assigns[:hello].should == "Hello world"
|
85
|
-
end
|
86
79
|
end
|
87
80
|
|
88
81
|
# GET /home/options AJAX
|
@@ -3,14 +3,32 @@
|
|
3
3
|
# Fat Free CRM is freely distributable under the terms of MIT license.
|
4
4
|
# See MIT-LICENSE file or http://www.opensource.org/licenses/mit-license.php
|
5
5
|
#------------------------------------------------------------------------------
|
6
|
-
require
|
6
|
+
require 'spec_helper'
|
7
7
|
|
8
8
|
describe PasswordsController do
|
9
9
|
|
10
|
-
|
11
|
-
|
12
|
-
|
10
|
+
let(:user) { FactoryGirl.build(:user) }
|
11
|
+
|
12
|
+
describe "update" do
|
13
|
+
|
14
|
+
before(:each) do
|
15
|
+
User.stub(:find_using_perishable_token).and_return(user)
|
16
|
+
end
|
17
|
+
|
18
|
+
it "should accept non-blank passwords" do
|
19
|
+
password = "password"
|
20
|
+
user.should_receive(:update_attributes).and_return(true)
|
21
|
+
put :update, id: 1, user: { password: password, password_confirmation: password }
|
22
|
+
response.should redirect_to( profile_url )
|
23
|
+
end
|
24
|
+
|
25
|
+
it "should not accept blank passwords" do
|
26
|
+
password = " "
|
27
|
+
user.should_not_receive(:update_attributes)
|
28
|
+
put :update, id: 1, user: { password: password, password_confirmation: password }
|
29
|
+
response.should render_template('edit')
|
30
|
+
end
|
31
|
+
|
13
32
|
end
|
14
33
|
|
15
34
|
end
|
16
|
-
|
@@ -3,7 +3,7 @@
|
|
3
3
|
# Fat Free CRM is freely distributable under the terms of MIT license.
|
4
4
|
# See MIT-LICENSE file or http://www.opensource.org/licenses/mit-license.php
|
5
5
|
#------------------------------------------------------------------------------
|
6
|
-
require
|
6
|
+
require 'spec_helper'
|
7
7
|
|
8
8
|
describe UsersController do
|
9
9
|
|
@@ -15,11 +15,9 @@ describe UsersController do
|
|
15
15
|
require_user
|
16
16
|
end
|
17
17
|
|
18
|
-
it "should
|
19
|
-
|
20
|
-
|
21
|
-
get :show, :id => @user.id
|
22
|
-
assigns[:user].should == @user
|
18
|
+
it "should render [show] template" do
|
19
|
+
get :show, :id => current_user.id
|
20
|
+
assigns[:user].should == current_user
|
23
21
|
response.should render_template("users/show")
|
24
22
|
end
|
25
23
|
|
@@ -29,16 +27,30 @@ describe UsersController do
|
|
29
27
|
response.should render_template("users/show")
|
30
28
|
end
|
31
29
|
|
30
|
+
it "should show user if admin user" do
|
31
|
+
@user = create(:user)
|
32
|
+
require_user(admin: true)
|
33
|
+
get :show, id: @user.id
|
34
|
+
assigns[:user].should == @user
|
35
|
+
response.should render_template("users/show")
|
36
|
+
end
|
37
|
+
|
38
|
+
it "should not show user if not admin user" do
|
39
|
+
@user = create(:user)
|
40
|
+
get :show, id: @user.id
|
41
|
+
response.should redirect_to(root_url)
|
42
|
+
end
|
43
|
+
|
32
44
|
describe "with mime type of JSON" do
|
33
45
|
before(:each) do
|
34
46
|
request.env["HTTP_ACCEPT"] = "application/json"
|
35
47
|
end
|
36
48
|
|
37
49
|
it "should render the requested user as JSON" do
|
38
|
-
User.should_receive(:find).and_return(
|
39
|
-
|
50
|
+
User.should_receive(:find).and_return(current_user)
|
51
|
+
current_user.should_receive(:to_json).and_return("generated JSON")
|
40
52
|
|
41
|
-
get :show, :id =>
|
53
|
+
get :show, :id => current_user.id
|
42
54
|
response.body.should == "generated JSON"
|
43
55
|
end
|
44
56
|
|
@@ -56,10 +68,10 @@ describe UsersController do
|
|
56
68
|
end
|
57
69
|
|
58
70
|
it "should render the requested user as XML" do
|
59
|
-
User.should_receive(:find).and_return(
|
60
|
-
|
71
|
+
User.should_receive(:find).and_return(current_user)
|
72
|
+
current_user.should_receive(:to_xml).and_return("generated XML")
|
61
73
|
|
62
|
-
get :show, :id =>
|
74
|
+
get :show, :id => current_user.id
|
63
75
|
response.body.should == "generated XML"
|
64
76
|
end
|
65
77
|
|
@@ -79,7 +91,7 @@ describe UsersController do
|
|
79
91
|
|
80
92
|
describe "if user is allowed to sign up" do
|
81
93
|
it "should expose a new user as @user and render [new] template" do
|
82
|
-
|
94
|
+
User.should_receive(:can_signup?).and_return(true)
|
83
95
|
@user = FactoryGirl.build(:user)
|
84
96
|
User.stub(:new).and_return(@user)
|
85
97
|
|
@@ -91,7 +103,7 @@ describe UsersController do
|
|
91
103
|
|
92
104
|
describe "if user is not allowed to sign up" do
|
93
105
|
it "should redirect to login_path" do
|
94
|
-
|
106
|
+
User.should_receive(:can_signup?).and_return(false)
|
95
107
|
|
96
108
|
get :new
|
97
109
|
response.should redirect_to(login_path)
|
@@ -102,14 +114,27 @@ describe UsersController do
|
|
102
114
|
# GET /users/1/edit AJAX
|
103
115
|
#----------------------------------------------------------------------------
|
104
116
|
describe "responding to GET edit" do
|
105
|
-
|
117
|
+
|
118
|
+
it "should expose current user as @user and render [edit] template" do
|
106
119
|
require_user
|
107
120
|
@user = current_user
|
121
|
+
xhr :get, :edit, :id => @user.id
|
122
|
+
assigns[:user].should == current_user
|
123
|
+
response.should render_template("users/edit")
|
108
124
|
end
|
109
125
|
|
110
|
-
it "should
|
126
|
+
it "should not allow current user to edit another user" do
|
127
|
+
@user = create(:user)
|
128
|
+
require_user
|
111
129
|
xhr :get, :edit, :id => @user.id
|
112
|
-
|
130
|
+
expect(response.body).to eql("window.location.reload();")
|
131
|
+
end
|
132
|
+
|
133
|
+
it "should allow admin to edit another user" do
|
134
|
+
require_user(admin: true)
|
135
|
+
@user = create(:user)
|
136
|
+
xhr :get, :edit, :id => @user.id
|
137
|
+
assigns[:user].should == @user
|
113
138
|
response.should render_template("users/edit")
|
114
139
|
end
|
115
140
|
|
@@ -130,6 +155,7 @@ describe UsersController do
|
|
130
155
|
end
|
131
156
|
|
132
157
|
it "exposes a newly created user as @user and redirect to profile page" do
|
158
|
+
require_user(admin: true)
|
133
159
|
post :create, :user => { :username => @username, :email => @email, :password => @password, :password_confirmation => @password }
|
134
160
|
assigns[:user].should == @user
|
135
161
|
flash[:notice].should =~ /welcome/
|
@@ -148,6 +174,7 @@ describe UsersController do
|
|
148
174
|
|
149
175
|
describe "with invalid params" do
|
150
176
|
it "assigns a newly created but unsaved user as @user and renders [new] template" do
|
177
|
+
require_user(admin: true)
|
151
178
|
@user = FactoryGirl.build(:user, :username => "", :email => "")
|
152
179
|
User.stub(:new).and_return(@user)
|
153
180
|
|
@@ -292,6 +319,7 @@ describe UsersController do
|
|
292
319
|
describe "responding to PUT change_password" do
|
293
320
|
before(:each) do
|
294
321
|
require_user
|
322
|
+
User.stub(:find).and_return(current_user)
|
295
323
|
@current_user_session.stub(:unauthorized_record=).and_return(current_user)
|
296
324
|
@current_user_session.stub(:save).and_return(current_user)
|
297
325
|
@user = current_user
|