alchemy_cms 2.8.3 → 2.9.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +3 -2
- data/README.md +108 -25
- data/alchemy_cms.gemspec +0 -1
- data/app/assets/stylesheets/alchemy/archive.scss +2 -2
- data/app/assets/stylesheets/alchemy/base.scss +0 -37
- data/app/assets/stylesheets/alchemy/elements.scss +1 -1
- data/app/assets/stylesheets/alchemy/flash.scss +1 -1
- data/app/assets/stylesheets/alchemy/form_elements.scss +1 -1
- data/app/assets/stylesheets/alchemy/icon-font.css.scss +40 -40
- data/app/assets/stylesheets/alchemy/icons.scss +4 -32
- data/app/assets/stylesheets/alchemy/jquery-ui.scss +4 -4
- data/app/assets/stylesheets/alchemy/menubar.css.scss +20 -12
- data/app/assets/stylesheets/alchemy/modules.scss +0 -4
- data/app/assets/stylesheets/alchemy/search.scss +1 -1
- data/app/assets/stylesheets/alchemy/sitemap.scss +1 -1
- data/app/assets/stylesheets/tiny_mce/plugins/inlinepopups/skins/alchemy-tinymce-dialog/window.css.scss +3 -3
- data/app/controllers/alchemy/admin/base_controller.rb +12 -8
- data/app/controllers/alchemy/admin/dashboard_controller.rb +10 -5
- data/app/controllers/alchemy/admin/elements_controller.rb +1 -1
- data/app/controllers/alchemy/admin/essence_pictures_controller.rb +8 -1
- data/app/controllers/alchemy/admin/layoutpages_controller.rb +1 -1
- data/app/controllers/alchemy/admin/pages_controller.rb +11 -6
- data/app/controllers/alchemy/admin/resources_controller.rb +2 -2
- data/app/controllers/alchemy/admin/users_controller.rb +1 -1
- data/app/controllers/alchemy/base_controller.rb +71 -37
- data/app/controllers/alchemy/elements_controller.rb +1 -1
- data/app/controllers/alchemy/pages_controller.rb +9 -3
- data/app/controllers/alchemy/pictures_controller.rb +1 -0
- data/app/helpers/alchemy/admin/base_helper.rb +2 -10
- data/app/helpers/alchemy/admin/pages_helper.rb +1 -1
- data/app/helpers/alchemy/base_helper.rb +1 -1
- data/app/helpers/alchemy/pages_helper.rb +1 -1
- data/app/models/alchemy/attachment.rb +3 -4
- data/app/models/alchemy/cell.rb +1 -1
- data/app/models/alchemy/content.rb +3 -4
- data/app/models/alchemy/element.rb +5 -6
- data/app/models/alchemy/folded_page.rb +1 -1
- data/app/models/alchemy/language.rb +1 -1
- data/app/models/alchemy/message.rb +1 -7
- data/app/models/alchemy/page.rb +12 -10
- data/app/models/alchemy/page/{cells.rb → page_cells.rb} +2 -2
- data/app/models/alchemy/page/{elements.rb → page_elements.rb} +2 -2
- data/app/models/alchemy/page/{naming.rb → page_naming.rb} +1 -1
- data/app/models/alchemy/page/{natures.rb → page_natures.rb} +3 -3
- data/app/models/alchemy/page/{scopes.rb → page_scopes.rb} +3 -3
- data/app/models/alchemy/page/page_users.rb +33 -0
- data/app/models/alchemy/picture.rb +3 -3
- data/app/models/alchemy/site.rb +2 -2
- data/app/views/alchemy/admin/dashboard/_locked_pages.html.erb +1 -1
- data/app/views/alchemy/admin/dashboard/_recent_pages.html.erb +1 -1
- data/app/views/alchemy/admin/dashboard/_sites.html.erb +1 -1
- data/app/views/alchemy/admin/dashboard/index.html.erb +10 -4
- data/app/views/alchemy/admin/pages/_page.html.erb +1 -1
- data/app/views/alchemy/admin/pages/update.js.erb +1 -1
- data/app/views/alchemy/{user_sessions → base}/leave.html.erb +2 -2
- data/app/views/alchemy/base/permission_denied.js.erb +3 -2
- data/app/views/layouts/alchemy/admin.html.erb +6 -3
- data/config/alchemy/config.yml +1 -11
- data/config/alchemy/modules.yml +0 -12
- data/config/locales/alchemy.de.yml +3 -40
- data/config/locales/alchemy.en.yml +2 -22
- data/config/routes.rb +2 -27
- data/db/migrate/20130827094554_alchemy_two_point_six.rb +0 -31
- data/lib/alchemy/auth_accessors.rb +54 -0
- data/lib/alchemy/capistrano.rb +5 -17
- data/lib/alchemy/engine.rb +7 -7
- data/lib/alchemy/errors.rb +6 -0
- data/lib/alchemy/essence.rb +2 -2
- data/lib/alchemy/seeder.rb +1 -1
- data/lib/alchemy/tasks/helpers.rb +83 -0
- data/lib/alchemy/test_support/auth_helpers.rb +35 -0
- data/lib/alchemy/test_support/controller_requests.rb +37 -0
- data/{spec/support → lib/alchemy/test_support}/factories.rb +7 -28
- data/{spec/support/alchemy → lib/alchemy/test_support}/integration_helpers.rb +9 -36
- data/lib/alchemy/upgrader.rb +8 -7
- data/lib/alchemy/upgrader/two_point_nine.rb +33 -0
- data/lib/alchemy/userstamp.rb +10 -0
- data/lib/alchemy/version.rb +1 -3
- data/lib/rails/templates/alchemy.rb +1 -0
- data/lib/tasks/alchemy/db.rake +5 -5
- data/spec/controllers/admin/attachments_controller_spec.rb +3 -3
- data/spec/controllers/admin/dashboard_controller_spec.rb +55 -34
- data/spec/controllers/admin/elements_controller_spec.rb +1 -1
- data/spec/controllers/admin/essence_pictures_controller_spec.rb +22 -6
- data/spec/controllers/admin/pages_controller_spec.rb +41 -58
- data/spec/controllers/admin/resources_controller_spec.rb +30 -5
- data/spec/controllers/admin/trash_controller_spec.rb +1 -1
- data/spec/controllers/attachments_controller_spec.rb +26 -44
- data/spec/controllers/base_controller_spec.rb +8 -33
- data/spec/controllers/elements_controller_spec.rb +1 -1
- data/spec/controllers/pages_controller_spec.rb +7 -15
- data/spec/controllers/pictures_controller_spec.rb +44 -5
- data/spec/dummy/app/controllers/application_controller.rb +9 -1
- data/spec/dummy/app/models/user.rb +14 -0
- data/spec/dummy/db/migrate/20130827094554_alchemy_two_point_six.rb +0 -31
- data/spec/dummy/db/schema.rb +0 -31
- data/spec/features/admin/language_tree_feature_spec.rb +34 -0
- data/spec/features/admin/pages_controller_spec.rb +1 -1
- data/spec/features/pages_controller_spec.rb +5 -12
- data/spec/features/picture_security_spec.rb +2 -2
- data/spec/features/security_spec.rb +6 -45
- data/spec/features/translation_integration_spec.rb +11 -20
- data/spec/{support → fixtures}/80x60.png +0 -0
- data/spec/support/image with spaces.png b/data/spec/fixtures/image with → spaces.png +0 -0
- data/spec/{support → fixtures}/image.png +0 -0
- data/spec/{support → fixtures}/image2.PNG +0 -0
- data/spec/{support → fixtures}/image3.jpeg +0 -0
- data/spec/helpers/admin/base_helper_spec.rb +31 -43
- data/spec/helpers/admin/pages_helper_spec.rb +4 -2
- data/spec/helpers/base_helper_spec.rb +10 -3
- data/spec/helpers/pages_helper_spec.rb +32 -22
- data/spec/models/attachment_spec.rb +1 -1
- data/spec/models/element_spec.rb +33 -57
- data/spec/models/message_spec.rb +0 -16
- data/spec/models/page_spec.rb +62 -26
- data/spec/models/picture_spec.rb +5 -5
- data/spec/spec_helper.rb +13 -4
- data/spec/tasks/helpers_spec.rb +213 -0
- metadata +33 -75
- data/app/controllers/alchemy/passwords_controller.rb +0 -35
- data/app/controllers/alchemy/user_sessions_controller.rb +0 -67
- data/app/controllers/alchemy/users_controller.rb +0 -46
- data/app/mailers/alchemy/notifications.rb +0 -33
- data/app/models/alchemy/page/users.rb +0 -25
- data/app/models/alchemy/user.rb +0 -183
- data/app/views/alchemy/admin/users/_table.html.erb +0 -69
- data/app/views/alchemy/admin/users/_user.html.erb +0 -39
- data/app/views/alchemy/admin/users/edit.html.erb +0 -6
- data/app/views/alchemy/admin/users/index.html.erb +0 -58
- data/app/views/alchemy/admin/users/new.html.erb +0 -6
- data/app/views/alchemy/notifications/admin_user_created.de.text.erb +0 -15
- data/app/views/alchemy/notifications/admin_user_created.en.text.erb +0 -15
- data/app/views/alchemy/notifications/registered_user_created.de.text.erb +0 -13
- data/app/views/alchemy/notifications/registered_user_created.en.text.erb +0 -13
- data/app/views/alchemy/notifications/reset_password_instructions.de.text.erb +0 -8
- data/app/views/alchemy/notifications/reset_password_instructions.en.text.erb +0 -8
- data/app/views/alchemy/passwords/edit.html.erb +0 -35
- data/app/views/alchemy/passwords/new.html.erb +0 -30
- data/app/views/alchemy/user_sessions/new.html.erb +0 -48
- data/app/views/alchemy/users/new.html.erb +0 -14
- data/config/initializers/devise.rb +0 -242
- data/config/locales/devise.de.yml +0 -58
- data/config/locales/devise.en.yml +0 -60
- data/lib/rails/generators/alchemy/devise/devise_generator.rb +0 -29
- data/spec/controllers/admin/users_controller_spec.rb +0 -132
- data/spec/controllers/passwords_controller_spec.rb +0 -16
- data/spec/controllers/user_sessions_controller_spec.rb +0 -22
- data/spec/controllers/users_controller_spec.rb +0 -66
- data/spec/mailers/notifications_spec.rb +0 -67
- data/spec/models/user_spec.rb +0 -252
- data/spec/support/alchemy/controller_helpers.rb +0 -35
data/spec/models/user_spec.rb
DELETED
@@ -1,252 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
module Alchemy
|
4
|
-
describe User do
|
5
|
-
|
6
|
-
let(:user) { FactoryGirl.build(:user) }
|
7
|
-
let(:page) { FactoryGirl.create(:page) }
|
8
|
-
|
9
|
-
it "should have at least registered role" do
|
10
|
-
user.save!
|
11
|
-
user.roles.should_not be_blank
|
12
|
-
user.roles.should include('registered')
|
13
|
-
end
|
14
|
-
|
15
|
-
context ".after_save" do
|
16
|
-
let(:user) { FactoryGirl.build(:admin_user) }
|
17
|
-
|
18
|
-
context "with send_credentials set to '1'" do
|
19
|
-
before { user.send_credentials = '1' }
|
20
|
-
|
21
|
-
it "delivers the admin welcome mail." do
|
22
|
-
Notifications.should_receive(:admin_user_created).and_return(OpenStruct.new(deliver: true))
|
23
|
-
user.save!
|
24
|
-
end
|
25
|
-
|
26
|
-
context "of author user" do
|
27
|
-
before { user.roles = %w(author) }
|
28
|
-
|
29
|
-
it "delivers the admin welcome mail." do
|
30
|
-
Notifications.should_receive(:admin_user_created).and_return(OpenStruct.new(deliver: true))
|
31
|
-
user.save!
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
context "of registered user" do
|
36
|
-
before { user.roles = %w(registered) }
|
37
|
-
|
38
|
-
it "delivers the welcome mail." do
|
39
|
-
Notifications.should_receive(:registered_user_created).and_return(OpenStruct.new(deliver: true))
|
40
|
-
user.save!
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
context "with send_credentials set to false" do
|
46
|
-
before { user.send_credentials = false }
|
47
|
-
|
48
|
-
it "does not deliver any mail" do
|
49
|
-
Notifications.should_not_receive(:admin_user_created)
|
50
|
-
user.save!
|
51
|
-
end
|
52
|
-
end
|
53
|
-
end
|
54
|
-
|
55
|
-
describe 'scopes' do
|
56
|
-
describe '.admins' do
|
57
|
-
before do
|
58
|
-
user.roles = 'admin'
|
59
|
-
user.save!
|
60
|
-
end
|
61
|
-
|
62
|
-
it "should only return users with admin role" do
|
63
|
-
User.admins.should include(user)
|
64
|
-
end
|
65
|
-
end
|
66
|
-
end
|
67
|
-
|
68
|
-
describe ".human_rolename" do
|
69
|
-
it "return a translated role name" do
|
70
|
-
::I18n.locale = :de
|
71
|
-
User.human_rolename('registered').should == "Registriert"
|
72
|
-
end
|
73
|
-
end
|
74
|
-
|
75
|
-
describe "#human_roles_string" do
|
76
|
-
it "should return a humanized roles string." do
|
77
|
-
::I18n.locale = :de
|
78
|
-
user.roles = ['registered', 'admin']
|
79
|
-
user.human_roles_string.should == "Registriert und Administrator"
|
80
|
-
end
|
81
|
-
end
|
82
|
-
|
83
|
-
describe '#role_symbols' do
|
84
|
-
it "should return an array of user role symbols" do
|
85
|
-
user.role_symbols.should == [:registered]
|
86
|
-
end
|
87
|
-
end
|
88
|
-
|
89
|
-
describe '#has_role?' do
|
90
|
-
|
91
|
-
context "with given role" do
|
92
|
-
it "should return true." do
|
93
|
-
user.has_role?('registered').should be_true
|
94
|
-
end
|
95
|
-
end
|
96
|
-
|
97
|
-
context "with role given as symbol" do
|
98
|
-
it "should return true." do
|
99
|
-
user.has_role?(:registered).should be_true
|
100
|
-
end
|
101
|
-
end
|
102
|
-
|
103
|
-
context "without given role" do
|
104
|
-
it "should return true." do
|
105
|
-
user.has_role?('admin').should be_false
|
106
|
-
end
|
107
|
-
end
|
108
|
-
|
109
|
-
end
|
110
|
-
|
111
|
-
describe '#role' do
|
112
|
-
context "when user doesn't have any roles" do
|
113
|
-
before { user.roles = [] }
|
114
|
-
|
115
|
-
it 'should return nil' do
|
116
|
-
user.role.should be_nil
|
117
|
-
end
|
118
|
-
end
|
119
|
-
|
120
|
-
context "when user has multiple roles" do
|
121
|
-
before { user.roles = ["admin", "registered"] }
|
122
|
-
|
123
|
-
it 'should return the first role' do
|
124
|
-
user.role.should == "admin"
|
125
|
-
end
|
126
|
-
end
|
127
|
-
end
|
128
|
-
|
129
|
-
describe '#roles' do
|
130
|
-
it "should return an array of user roles" do
|
131
|
-
user.roles.should == ["registered"]
|
132
|
-
end
|
133
|
-
end
|
134
|
-
|
135
|
-
describe '#roles=' do
|
136
|
-
|
137
|
-
it "should accept an array of user roles" do
|
138
|
-
user.roles = ["admin"]
|
139
|
-
user.roles.should == ["admin"]
|
140
|
-
end
|
141
|
-
|
142
|
-
it "should accept a string of user roles" do
|
143
|
-
user.roles = "admin registered"
|
144
|
-
user.roles.should == ["admin", "registered"]
|
145
|
-
end
|
146
|
-
|
147
|
-
it "should store the user roles as space seperated string" do
|
148
|
-
user.roles = ["admin", "registered"]
|
149
|
-
user.read_attribute(:roles).should == "admin registered"
|
150
|
-
end
|
151
|
-
|
152
|
-
end
|
153
|
-
|
154
|
-
describe "#add_role" do
|
155
|
-
it "should add the given role to roles array" do
|
156
|
-
user.add_role "member"
|
157
|
-
user.roles.should == ["registered", "member"]
|
158
|
-
end
|
159
|
-
|
160
|
-
it "should not add the given role twice" do
|
161
|
-
user.add_role "registered"
|
162
|
-
user.roles.should == ["registered"]
|
163
|
-
end
|
164
|
-
end
|
165
|
-
|
166
|
-
describe '#logged_in?' do
|
167
|
-
before { Config.stub!(:get).and_return 60 }
|
168
|
-
|
169
|
-
it "should return logged in status" do
|
170
|
-
user.last_request_at = 30.minutes.ago
|
171
|
-
user.save!
|
172
|
-
user.logged_in?.should be_true
|
173
|
-
end
|
174
|
-
end
|
175
|
-
|
176
|
-
describe '#logged_out?' do
|
177
|
-
before { Config.stub!(:get).and_return 60 }
|
178
|
-
|
179
|
-
it "should return logged in status" do
|
180
|
-
user.last_request_at = 2.hours.ago
|
181
|
-
user.save!
|
182
|
-
user.logged_out?.should be_true
|
183
|
-
end
|
184
|
-
end
|
185
|
-
|
186
|
-
describe "#pages_locked_by_me" do
|
187
|
-
it "should return all pages that are locked by user" do
|
188
|
-
user.save!
|
189
|
-
page.lock!(user)
|
190
|
-
user.locked_pages.should include(page)
|
191
|
-
end
|
192
|
-
end
|
193
|
-
|
194
|
-
describe '#unlock_pages' do
|
195
|
-
before do
|
196
|
-
user.save!
|
197
|
-
page.lock!(user)
|
198
|
-
end
|
199
|
-
|
200
|
-
it "should unlock all users lockes pages" do
|
201
|
-
user.unlock_pages!
|
202
|
-
user.locked_pages.should be_empty
|
203
|
-
end
|
204
|
-
end
|
205
|
-
|
206
|
-
describe '#is_admin?' do
|
207
|
-
it "should return true if the user has admin role" do
|
208
|
-
user.roles = "admin"
|
209
|
-
user.save!
|
210
|
-
user.is_admin?.should be_true
|
211
|
-
end
|
212
|
-
end
|
213
|
-
|
214
|
-
describe '#fullname' do
|
215
|
-
it "should return the firstname and lastname" do
|
216
|
-
user.fullname.should == "John Doe"
|
217
|
-
end
|
218
|
-
|
219
|
-
context "user without firstname and lastname" do
|
220
|
-
it "should return the login" do
|
221
|
-
user.firstname = nil
|
222
|
-
user.lastname = nil
|
223
|
-
user.fullname.should == "jdoe"
|
224
|
-
end
|
225
|
-
end
|
226
|
-
|
227
|
-
context "with flipped option set to true" do
|
228
|
-
it "should return the lastname and firstname comma seperated" do
|
229
|
-
user.fullname(flipped: true).should == "Doe, John"
|
230
|
-
end
|
231
|
-
end
|
232
|
-
|
233
|
-
context "with blank firstname" do
|
234
|
-
it "should not have whitespace" do
|
235
|
-
user.firstname = nil
|
236
|
-
user.fullname.should == "Doe"
|
237
|
-
end
|
238
|
-
end
|
239
|
-
end
|
240
|
-
|
241
|
-
describe '#store_request_time!' do
|
242
|
-
it "should store the timestamp of the request" do
|
243
|
-
last_request_at = 2.hours.ago
|
244
|
-
user.last_request_at = last_request_at
|
245
|
-
user.save!
|
246
|
-
user.store_request_time!
|
247
|
-
user.last_request_at.should_not == last_request_at
|
248
|
-
end
|
249
|
-
end
|
250
|
-
|
251
|
-
end
|
252
|
-
end
|
@@ -1,35 +0,0 @@
|
|
1
|
-
module Alchemy
|
2
|
-
module Specs
|
3
|
-
|
4
|
-
# Helpers for controller specs
|
5
|
-
#
|
6
|
-
# This file is included in rspec controller tests.
|
7
|
-
#
|
8
|
-
module ControllerHelpers
|
9
|
-
|
10
|
-
def sign_in(user=admin_user)
|
11
|
-
request.env['warden'].stub :authenticate! => user
|
12
|
-
request.env['warden'].set_user(user, store: false, run_callbacks: false)
|
13
|
-
controller.stub :current_user => user
|
14
|
-
end
|
15
|
-
|
16
|
-
def admin_user
|
17
|
-
mock_user([:admin])
|
18
|
-
end
|
19
|
-
|
20
|
-
def registered_user
|
21
|
-
mock_user([:registered])
|
22
|
-
end
|
23
|
-
|
24
|
-
def mock_user(roles)
|
25
|
-
mock_model(User,
|
26
|
-
name: 'Hermes Trismegistus',
|
27
|
-
roles: roles.map(&:to_sym),
|
28
|
-
store_request_time!: nil
|
29
|
-
)
|
30
|
-
end
|
31
|
-
|
32
|
-
end
|
33
|
-
|
34
|
-
end
|
35
|
-
end
|