radiant-reader-extension 0.9.2
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +2 -0
- data/README.md +89 -0
- data/Rakefile +140 -0
- data/VERSION +1 -0
- data/app/controllers/admin/messages_controller.rb +20 -0
- data/app/controllers/admin/reader_settings_controller.rb +92 -0
- data/app/controllers/admin/readers_controller.rb +28 -0
- data/app/controllers/password_resets_controller.rb +64 -0
- data/app/controllers/reader_action_controller.rb +84 -0
- data/app/controllers/reader_activations_controller.rb +60 -0
- data/app/controllers/reader_sessions_controller.rb +56 -0
- data/app/controllers/readers_controller.rb +131 -0
- data/app/helpers/admin/reader_settings_helper.rb +36 -0
- data/app/models/message.rb +108 -0
- data/app/models/message_function.rb +37 -0
- data/app/models/message_reader.rb +13 -0
- data/app/models/reader.rb +146 -0
- data/app/models/reader_notifier.rb +34 -0
- data/app/models/reader_session.rb +3 -0
- data/app/views/admin/messages/_form.html.haml +29 -0
- data/app/views/admin/messages/_help.html.haml +41 -0
- data/app/views/admin/messages/_message_description.html.haml +3 -0
- data/app/views/admin/messages/edit.html.haml +16 -0
- data/app/views/admin/messages/new.html.haml +16 -0
- data/app/views/admin/reader_settings/_setting.html.haml +24 -0
- data/app/views/admin/reader_settings/edit.html.haml +10 -0
- data/app/views/admin/reader_settings/index.html.haml +35 -0
- data/app/views/admin/reader_settings/show.html.haml +1 -0
- data/app/views/admin/readers/_avatar.html.haml +3 -0
- data/app/views/admin/readers/_form.html.haml +50 -0
- data/app/views/admin/readers/_list_head.html.haml +9 -0
- data/app/views/admin/readers/_listed.html.haml +22 -0
- data/app/views/admin/readers/_password_fields.html.haml +18 -0
- data/app/views/admin/readers/edit.html.haml +8 -0
- data/app/views/admin/readers/index.html.haml +17 -0
- data/app/views/admin/readers/new.html.haml +7 -0
- data/app/views/admin/readers/remove.html.haml +18 -0
- data/app/views/admin/sites/_choose_reader_layout.html.haml +7 -0
- data/app/views/password_resets/create.html.haml +13 -0
- data/app/views/password_resets/edit.html.haml +71 -0
- data/app/views/password_resets/new.html.haml +31 -0
- data/app/views/reader_activations/_activation_required.html.haml +34 -0
- data/app/views/reader_activations/_on_activation.html.haml +4 -0
- data/app/views/reader_activations/show.html.haml +41 -0
- data/app/views/reader_notifier/message.html.haml +1 -0
- data/app/views/reader_sessions/_login_form.html.haml +59 -0
- data/app/views/reader_sessions/new.html.haml +38 -0
- data/app/views/readers/_contributions.html.haml +2 -0
- data/app/views/readers/_controls.html.haml +25 -0
- data/app/views/readers/_extra_controls.html.haml +0 -0
- data/app/views/readers/_flasher.html.haml +6 -0
- data/app/views/readers/_form.html.haml +73 -0
- data/app/views/readers/create.html.haml +28 -0
- data/app/views/readers/edit.html.haml +47 -0
- data/app/views/readers/index.html.haml +16 -0
- data/app/views/readers/login.html.haml +15 -0
- data/app/views/readers/new.html.haml +41 -0
- data/app/views/readers/permission_denied.html.haml +23 -0
- data/app/views/readers/show.html.haml +35 -0
- data/app/views/wrappers/_field_errors.html.haml +5 -0
- data/config/routes.rb +22 -0
- data/config/settings.rb +9 -0
- data/db/migrate/001_create_readers.rb +31 -0
- data/db/migrate/002_extend_sites.rb +17 -0
- data/db/migrate/003_reader_honorifics.rb +12 -0
- data/db/migrate/004_user_readers.rb +11 -0
- data/db/migrate/005_last_login.rb +15 -0
- data/db/migrate/007_adapt_for_authlogic.rb +27 -0
- data/db/migrate/20090921125653_reader_messages.rb +27 -0
- data/db/migrate/20090924164413_functional_messages.rb +9 -0
- data/db/migrate/20090925081225_standard_messages.rb +106 -0
- data/db/migrate/20091006102438_message_visibility.rb +9 -0
- data/db/migrate/20091010083503_registration_config.rb +10 -0
- data/db/migrate/20091019124021_message_functions.rb +9 -0
- data/db/migrate/20091020133533_forenames.rb +9 -0
- data/db/migrate/20091020135152_contacts.rb +23 -0
- data/db/migrate/20091111090819_ensure_functional_messages_visible.rb +9 -0
- data/db/migrate/20091119092936_messages_have_layout.rb +9 -0
- data/db/migrate/20100922152338_lock_versions.rb +9 -0
- data/db/migrate/20100927095703_default_settings.rb +14 -0
- data/db/migrate/20101004074945_unlock_version.rb +9 -0
- data/lib/config_extensions.rb +5 -0
- data/lib/controller_extensions.rb +77 -0
- data/lib/reader_admin_ui.rb +64 -0
- data/lib/reader_helper.rb +36 -0
- data/lib/reader_site.rb +10 -0
- data/lib/reader_tags.rb +297 -0
- data/lib/rfc822.rb +29 -0
- data/lib/tasks/reader_extension_tasks.rake +28 -0
- data/pkg/radiant-reader-extension-0.9.0.gem +0 -0
- data/public/images/admin/chk_off.png +0 -0
- data/public/images/admin/chk_on.png +0 -0
- data/public/images/admin/new-message.png +0 -0
- data/public/images/admin/new-reader.png +0 -0
- data/public/javascripts/admin/messages.js +13 -0
- data/public/stylesheets/sass/admin/reader.sass +95 -0
- data/radiant-reader-extension.gemspec +184 -0
- data/reader_extension.rb +55 -0
- data/spec/controllers/admin/messages_controller_spec.rb +38 -0
- data/spec/controllers/admin/readers_controller_spec.rb +14 -0
- data/spec/controllers/password_resets_controller_spec.rb +140 -0
- data/spec/controllers/reader_activations_controller_spec.rb +45 -0
- data/spec/controllers/readers_controller_spec.rb +193 -0
- data/spec/datasets/messages_dataset.rb +49 -0
- data/spec/datasets/reader_layouts_dataset.rb +26 -0
- data/spec/datasets/reader_sites_dataset.rb +10 -0
- data/spec/datasets/readers_dataset.rb +51 -0
- data/spec/lib/reader_admin_ui_spec.rb +35 -0
- data/spec/lib/reader_site_spec.rb +18 -0
- data/spec/matchers/reader_login_system_matcher.rb +35 -0
- data/spec/models/message_spec.rb +109 -0
- data/spec/models/reader_notifier_spec.rb +34 -0
- data/spec/models/reader_spec.rb +155 -0
- data/spec/spec.opts +5 -0
- data/spec/spec_helper.rb +48 -0
- metadata +267 -0
@@ -0,0 +1,184 @@
|
|
1
|
+
# Generated by jeweler
|
2
|
+
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
|
4
|
+
# -*- encoding: utf-8 -*-
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = %q{radiant-reader-extension}
|
8
|
+
s.version = "0.9.2"
|
9
|
+
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
+
s.authors = ["spanner"]
|
12
|
+
s.date = %q{2010-10-04}
|
13
|
+
s.description = %q{Centralises reader/member/user registration and management tasks for the benefit of other extensions}
|
14
|
+
s.email = %q{will@spanner.org}
|
15
|
+
s.extra_rdoc_files = [
|
16
|
+
"README.md"
|
17
|
+
]
|
18
|
+
s.files = [
|
19
|
+
".gitignore",
|
20
|
+
"README.md",
|
21
|
+
"Rakefile",
|
22
|
+
"VERSION",
|
23
|
+
"app/controllers/admin/messages_controller.rb",
|
24
|
+
"app/controllers/admin/reader_settings_controller.rb",
|
25
|
+
"app/controllers/admin/readers_controller.rb",
|
26
|
+
"app/controllers/password_resets_controller.rb",
|
27
|
+
"app/controllers/reader_action_controller.rb",
|
28
|
+
"app/controllers/reader_activations_controller.rb",
|
29
|
+
"app/controllers/reader_sessions_controller.rb",
|
30
|
+
"app/controllers/readers_controller.rb",
|
31
|
+
"app/helpers/admin/reader_settings_helper.rb",
|
32
|
+
"app/models/message.rb",
|
33
|
+
"app/models/message_function.rb",
|
34
|
+
"app/models/message_reader.rb",
|
35
|
+
"app/models/reader.rb",
|
36
|
+
"app/models/reader_notifier.rb",
|
37
|
+
"app/models/reader_session.rb",
|
38
|
+
"app/views/admin/messages/_form.html.haml",
|
39
|
+
"app/views/admin/messages/_help.html.haml",
|
40
|
+
"app/views/admin/messages/_message_description.html.haml",
|
41
|
+
"app/views/admin/messages/edit.html.haml",
|
42
|
+
"app/views/admin/messages/new.html.haml",
|
43
|
+
"app/views/admin/reader_settings/_setting.html.haml",
|
44
|
+
"app/views/admin/reader_settings/edit.html.haml",
|
45
|
+
"app/views/admin/reader_settings/index.html.haml",
|
46
|
+
"app/views/admin/reader_settings/show.html.haml",
|
47
|
+
"app/views/admin/readers/_avatar.html.haml",
|
48
|
+
"app/views/admin/readers/_form.html.haml",
|
49
|
+
"app/views/admin/readers/_list_head.html.haml",
|
50
|
+
"app/views/admin/readers/_listed.html.haml",
|
51
|
+
"app/views/admin/readers/_password_fields.html.haml",
|
52
|
+
"app/views/admin/readers/edit.html.haml",
|
53
|
+
"app/views/admin/readers/index.html.haml",
|
54
|
+
"app/views/admin/readers/new.html.haml",
|
55
|
+
"app/views/admin/readers/remove.html.haml",
|
56
|
+
"app/views/admin/sites/_choose_reader_layout.html.haml",
|
57
|
+
"app/views/password_resets/create.html.haml",
|
58
|
+
"app/views/password_resets/edit.html.haml",
|
59
|
+
"app/views/password_resets/new.html.haml",
|
60
|
+
"app/views/reader_activations/_activation_required.html.haml",
|
61
|
+
"app/views/reader_activations/_on_activation.html.haml",
|
62
|
+
"app/views/reader_activations/show.html.haml",
|
63
|
+
"app/views/reader_notifier/message.html.haml",
|
64
|
+
"app/views/reader_sessions/_login_form.html.haml",
|
65
|
+
"app/views/reader_sessions/new.html.haml",
|
66
|
+
"app/views/readers/_contributions.html.haml",
|
67
|
+
"app/views/readers/_controls.html.haml",
|
68
|
+
"app/views/readers/_extra_controls.html.haml",
|
69
|
+
"app/views/readers/_flasher.html.haml",
|
70
|
+
"app/views/readers/_form.html.haml",
|
71
|
+
"app/views/readers/create.html.haml",
|
72
|
+
"app/views/readers/edit.html.haml",
|
73
|
+
"app/views/readers/index.html.haml",
|
74
|
+
"app/views/readers/login.html.haml",
|
75
|
+
"app/views/readers/new.html.haml",
|
76
|
+
"app/views/readers/permission_denied.html.haml",
|
77
|
+
"app/views/readers/show.html.haml",
|
78
|
+
"app/views/wrappers/_field_errors.html.haml",
|
79
|
+
"config/routes.rb",
|
80
|
+
"config/settings.rb",
|
81
|
+
"db/migrate/001_create_readers.rb",
|
82
|
+
"db/migrate/002_extend_sites.rb",
|
83
|
+
"db/migrate/003_reader_honorifics.rb",
|
84
|
+
"db/migrate/004_user_readers.rb",
|
85
|
+
"db/migrate/005_last_login.rb",
|
86
|
+
"db/migrate/007_adapt_for_authlogic.rb",
|
87
|
+
"db/migrate/20090921125653_reader_messages.rb",
|
88
|
+
"db/migrate/20090924164413_functional_messages.rb",
|
89
|
+
"db/migrate/20090925081225_standard_messages.rb",
|
90
|
+
"db/migrate/20091006102438_message_visibility.rb",
|
91
|
+
"db/migrate/20091010083503_registration_config.rb",
|
92
|
+
"db/migrate/20091019124021_message_functions.rb",
|
93
|
+
"db/migrate/20091020133533_forenames.rb",
|
94
|
+
"db/migrate/20091020135152_contacts.rb",
|
95
|
+
"db/migrate/20091111090819_ensure_functional_messages_visible.rb",
|
96
|
+
"db/migrate/20091119092936_messages_have_layout.rb",
|
97
|
+
"db/migrate/20100922152338_lock_versions.rb",
|
98
|
+
"db/migrate/20100927095703_default_settings.rb",
|
99
|
+
"db/migrate/20101004074945_unlock_version.rb",
|
100
|
+
"lib/config_extensions.rb",
|
101
|
+
"lib/controller_extensions.rb",
|
102
|
+
"lib/reader_admin_ui.rb",
|
103
|
+
"lib/reader_helper.rb",
|
104
|
+
"lib/reader_site.rb",
|
105
|
+
"lib/reader_tags.rb",
|
106
|
+
"lib/rfc822.rb",
|
107
|
+
"lib/tasks/reader_extension_tasks.rake",
|
108
|
+
"pkg/radiant-reader-extension-0.9.0.gem",
|
109
|
+
"public/images/admin/chk_off.png",
|
110
|
+
"public/images/admin/chk_on.png",
|
111
|
+
"public/images/admin/new-message.png",
|
112
|
+
"public/images/admin/new-reader.png",
|
113
|
+
"public/javascripts/admin/messages.js",
|
114
|
+
"public/stylesheets/sass/admin/reader.sass",
|
115
|
+
"radiant-reader-extension.gemspec",
|
116
|
+
"reader_extension.rb",
|
117
|
+
"spec/controllers/admin/messages_controller_spec.rb",
|
118
|
+
"spec/controllers/admin/readers_controller_spec.rb",
|
119
|
+
"spec/controllers/password_resets_controller_spec.rb",
|
120
|
+
"spec/controllers/reader_activations_controller_spec.rb",
|
121
|
+
"spec/controllers/readers_controller_spec.rb",
|
122
|
+
"spec/datasets/messages_dataset.rb",
|
123
|
+
"spec/datasets/reader_layouts_dataset.rb",
|
124
|
+
"spec/datasets/reader_sites_dataset.rb",
|
125
|
+
"spec/datasets/readers_dataset.rb",
|
126
|
+
"spec/lib/reader_admin_ui_spec.rb",
|
127
|
+
"spec/lib/reader_site_spec.rb",
|
128
|
+
"spec/matchers/reader_login_system_matcher.rb",
|
129
|
+
"spec/models/message_spec.rb",
|
130
|
+
"spec/models/reader_notifier_spec.rb",
|
131
|
+
"spec/models/reader_spec.rb",
|
132
|
+
"spec/spec.opts",
|
133
|
+
"spec/spec_helper.rb"
|
134
|
+
]
|
135
|
+
s.homepage = %q{http://github.com/spanner/radiant-reader-extension}
|
136
|
+
s.rdoc_options = ["--charset=UTF-8"]
|
137
|
+
s.require_paths = ["lib"]
|
138
|
+
s.rubygems_version = %q{1.3.7}
|
139
|
+
s.summary = %q{User-services extension for Radiant CMS}
|
140
|
+
s.test_files = [
|
141
|
+
"spec/controllers/admin/messages_controller_spec.rb",
|
142
|
+
"spec/controllers/admin/readers_controller_spec.rb",
|
143
|
+
"spec/controllers/password_resets_controller_spec.rb",
|
144
|
+
"spec/controllers/reader_activations_controller_spec.rb",
|
145
|
+
"spec/controllers/readers_controller_spec.rb",
|
146
|
+
"spec/datasets/messages_dataset.rb",
|
147
|
+
"spec/datasets/reader_layouts_dataset.rb",
|
148
|
+
"spec/datasets/reader_sites_dataset.rb",
|
149
|
+
"spec/datasets/readers_dataset.rb",
|
150
|
+
"spec/lib/reader_admin_ui_spec.rb",
|
151
|
+
"spec/lib/reader_site_spec.rb",
|
152
|
+
"spec/matchers/reader_login_system_matcher.rb",
|
153
|
+
"spec/models/message_spec.rb",
|
154
|
+
"spec/models/reader_notifier_spec.rb",
|
155
|
+
"spec/models/reader_spec.rb",
|
156
|
+
"spec/spec_helper.rb"
|
157
|
+
]
|
158
|
+
|
159
|
+
if s.respond_to? :specification_version then
|
160
|
+
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
161
|
+
s.specification_version = 3
|
162
|
+
|
163
|
+
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
164
|
+
s.add_runtime_dependency(%q<radiant>, [">= 0.9.0"])
|
165
|
+
s.add_runtime_dependency(%q<radiant-layouts-extension>, [">= 0"])
|
166
|
+
s.add_runtime_dependency(%q<radiant-mailer_layouts-extension>, [">= 0"])
|
167
|
+
s.add_runtime_dependency(%q<authlogic>, [">= 0"])
|
168
|
+
s.add_runtime_dependency(%q<sanitize>, [">= 0"])
|
169
|
+
else
|
170
|
+
s.add_dependency(%q<radiant>, [">= 0.9.0"])
|
171
|
+
s.add_dependency(%q<radiant-layouts-extension>, [">= 0"])
|
172
|
+
s.add_dependency(%q<radiant-mailer_layouts-extension>, [">= 0"])
|
173
|
+
s.add_dependency(%q<authlogic>, [">= 0"])
|
174
|
+
s.add_dependency(%q<sanitize>, [">= 0"])
|
175
|
+
end
|
176
|
+
else
|
177
|
+
s.add_dependency(%q<radiant>, [">= 0.9.0"])
|
178
|
+
s.add_dependency(%q<radiant-layouts-extension>, [">= 0"])
|
179
|
+
s.add_dependency(%q<radiant-mailer_layouts-extension>, [">= 0"])
|
180
|
+
s.add_dependency(%q<authlogic>, [">= 0"])
|
181
|
+
s.add_dependency(%q<sanitize>, [">= 0"])
|
182
|
+
end
|
183
|
+
end
|
184
|
+
|
data/reader_extension.rb
ADDED
@@ -0,0 +1,55 @@
|
|
1
|
+
require_dependency 'application_controller'
|
2
|
+
|
3
|
+
class ReaderExtension < Radiant::Extension
|
4
|
+
version "0.9.2"
|
5
|
+
description "Provides reader/member/user registration and management functions"
|
6
|
+
url "http://spanner.org/radiant/reader"
|
7
|
+
|
8
|
+
extension_config do |config|
|
9
|
+
config.gem 'authlogic'
|
10
|
+
config.gem 'sanitize'
|
11
|
+
config.gem 'will_paginate'
|
12
|
+
end
|
13
|
+
|
14
|
+
def activate
|
15
|
+
Reader
|
16
|
+
ApplicationController.send :include, ControllerExtensions # hooks up reader authentication and layout-chooser
|
17
|
+
ApplicationHelper.send :include, ReaderHelper # display usefulness including error-wrapper
|
18
|
+
Site.send :include, ReaderSite if defined? Site # adds site scope and site-based layout-chooser
|
19
|
+
Page.send :include, ReaderTags # a few mailmerge-like radius tags for use in messages, or for greeting readers on (uncached) pages
|
20
|
+
Radiant::Config.send :include, ConfigExtensions # .boolean?
|
21
|
+
UserActionObserver.instance.send :add_observer!, Reader
|
22
|
+
UserActionObserver.instance.send :add_observer!, Message
|
23
|
+
|
24
|
+
unless defined? admin.reader
|
25
|
+
Radiant::AdminUI.send :include, ReaderAdminUI
|
26
|
+
Radiant::AdminUI.load_reader_extension_regions
|
27
|
+
admin.reader = Radiant::AdminUI.load_default_reader_regions
|
28
|
+
admin.message = Radiant::AdminUI.load_default_message_regions
|
29
|
+
admin.reader_setting = Radiant::AdminUI.load_default_reader_setting_regions
|
30
|
+
if defined? admin.sites
|
31
|
+
admin.sites.edit.add :form, "admin/sites/choose_reader_layout", :after => "edit_homepage"
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
if respond_to?(:tab)
|
36
|
+
tab("Readers") do
|
37
|
+
add_item("Readers", "/admin/readers")
|
38
|
+
add_item("Settings", "/admin/readers/reader_settings")
|
39
|
+
end
|
40
|
+
tab("Settings") do
|
41
|
+
add_item("Reader", "/admin/readers/reader_settings")
|
42
|
+
end
|
43
|
+
else
|
44
|
+
admin.tabs.add "Readers", "/admin/readers", :after => "Layouts", :visibility => [:all]
|
45
|
+
if admin.tabs['Readers'].respond_to?(:add_link)
|
46
|
+
admin.tabs['Readers'].add_link('readers', '/admin/readers')
|
47
|
+
admin.tabs['Readers'].add_link('settings', '/admin/readers/reader_settings')
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
def deactivate
|
53
|
+
admin.tabs.remove "Readers" unless respond_to? :tab
|
54
|
+
end
|
55
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
require File.dirname(__FILE__) + "/../../spec_helper"
|
2
|
+
|
3
|
+
describe Admin::MessagesController do
|
4
|
+
dataset :messages
|
5
|
+
|
6
|
+
it "should be a ResourceController" do
|
7
|
+
controller.should be_kind_of(Admin::ResourceController)
|
8
|
+
end
|
9
|
+
|
10
|
+
it "should handle Messages" do
|
11
|
+
controller.class.model_class.should == Message
|
12
|
+
end
|
13
|
+
|
14
|
+
describe "on index" do
|
15
|
+
before do
|
16
|
+
login_as :existing
|
17
|
+
end
|
18
|
+
|
19
|
+
it "should redirect to the settings page" do
|
20
|
+
get :index
|
21
|
+
response.should be_redirect
|
22
|
+
response.should redirect_to(admin_reader_settings_url)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
describe "on update" do
|
27
|
+
before do
|
28
|
+
login_as :existing
|
29
|
+
end
|
30
|
+
|
31
|
+
it "should redirect to the settings page" do
|
32
|
+
put :update, :id => message_id(:normal), :subject => 'testing'
|
33
|
+
response.should be_redirect
|
34
|
+
response.should redirect_to(admin_reader_settings_url)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require File.dirname(__FILE__) + "/../../spec_helper"
|
2
|
+
|
3
|
+
describe Admin::ReadersController do
|
4
|
+
dataset :users
|
5
|
+
dataset :readers
|
6
|
+
|
7
|
+
it "should be a ResourceController" do
|
8
|
+
controller.should be_kind_of(Admin::ResourceController)
|
9
|
+
end
|
10
|
+
|
11
|
+
it "should handle Readers" do
|
12
|
+
controller.class.model_class.should == Reader
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,140 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../spec_helper'
|
2
|
+
|
3
|
+
describe PasswordResetsController do
|
4
|
+
dataset :readers, :messages
|
5
|
+
|
6
|
+
before do
|
7
|
+
controller.stub!(:request).and_return(request)
|
8
|
+
Page.current_site = sites(:test) if defined? Site
|
9
|
+
request.env["HTTP_REFERER"] = 'http://test.host/referer!'
|
10
|
+
end
|
11
|
+
|
12
|
+
describe "with a forgot-my-password request" do
|
13
|
+
it "should ask for an email address" do
|
14
|
+
get :new
|
15
|
+
response.should be_success
|
16
|
+
response.should render_template("new")
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
describe "with a submitted email address" do
|
21
|
+
describe "that we recognise" do
|
22
|
+
before do
|
23
|
+
post :create, :email => 'normal@spanner.org'
|
24
|
+
@reader = readers(:normal)
|
25
|
+
end
|
26
|
+
|
27
|
+
it "should give instructions" do
|
28
|
+
response.should be_success
|
29
|
+
response.should render_template("create")
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
|
34
|
+
describe "for an account not yet activated" do
|
35
|
+
before do
|
36
|
+
post :create, :email => 'inactive@spanner.org'
|
37
|
+
@reader = readers(:inactive)
|
38
|
+
end
|
39
|
+
|
40
|
+
it "should redirect to the please-activate page" do
|
41
|
+
response.should be_redirect
|
42
|
+
response.should redirect_to(new_reader_activation_url)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
describe "that we don't recognise" do
|
47
|
+
before do
|
48
|
+
post :create, :email => 'abinormal@spanner.org'
|
49
|
+
end
|
50
|
+
|
51
|
+
it 'should grumble' do
|
52
|
+
response.should be_success
|
53
|
+
response.should render_template("new")
|
54
|
+
flash[:error].should_not be_blank
|
55
|
+
end
|
56
|
+
it 'should not send a message' do
|
57
|
+
ActionMailer::Base.deliveries.last.should be_nil
|
58
|
+
end
|
59
|
+
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
describe "with a confirmation" do
|
64
|
+
describe "where the code is correct" do
|
65
|
+
before do
|
66
|
+
@reader = readers(:normal)
|
67
|
+
get :edit, :id => @reader.id, :confirmation_code => @reader.perishable_token
|
68
|
+
end
|
69
|
+
|
70
|
+
it 'should show the new-password form' do
|
71
|
+
response.should be_success
|
72
|
+
response.should render_template("edit")
|
73
|
+
flash[:error].should be_nil
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
describe "where the code is wrong" do
|
78
|
+
before do
|
79
|
+
@reader = readers(:normal)
|
80
|
+
get :edit, :id => @reader.id, :confirmation_code => 'anyoldstringwillnotdo'
|
81
|
+
end
|
82
|
+
it 'should grumble' do
|
83
|
+
response.should be_success
|
84
|
+
response.should render_template("edit")
|
85
|
+
flash[:error].should_not be_blank
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
describe "with a new password" do
|
91
|
+
|
92
|
+
describe "where the confirmation code is correct and the password confirmed" do
|
93
|
+
before do
|
94
|
+
reader = readers(:normal)
|
95
|
+
post :update, :id => reader.id, :confirmation_code => reader.perishable_token, :reader => {:password => 'testify', :password_confirmation => 'testify'}
|
96
|
+
end
|
97
|
+
|
98
|
+
it "should update the reader" do
|
99
|
+
readers(:normal).valid_password?('testify').should be_true
|
100
|
+
end
|
101
|
+
|
102
|
+
it "should log the reader in" do
|
103
|
+
controller.send(:current_reader).should == readers(:normal)
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
107
|
+
describe "where the confirmation code is correct but the password not confirmed" do
|
108
|
+
before do
|
109
|
+
@reader = readers(:normal)
|
110
|
+
post :update, :id => @reader.id, :confirmation_code => @reader.perishable_token, :reader => {:password => 'testify', :password_confirmation => 'testy'}
|
111
|
+
end
|
112
|
+
|
113
|
+
it 'should grumble' do
|
114
|
+
flash[:error].should_not be_blank
|
115
|
+
end
|
116
|
+
|
117
|
+
it "should return the password form again" do
|
118
|
+
response.should be_success
|
119
|
+
response.should render_template("edit")
|
120
|
+
end
|
121
|
+
end
|
122
|
+
|
123
|
+
describe "where the confirmation code is wrong" do
|
124
|
+
before do
|
125
|
+
@reader = readers(:normal)
|
126
|
+
post :update, :id => @reader.id, :confirmation_code => 'dingbat', :reader => {:password => 'testify', :password_confirmation => 'testify'}
|
127
|
+
end
|
128
|
+
|
129
|
+
it 'should grumble' do
|
130
|
+
response.should be_success
|
131
|
+
response.should render_template("edit")
|
132
|
+
flash[:error].should_not be_blank
|
133
|
+
end
|
134
|
+
|
135
|
+
it 'should not change the password' do
|
136
|
+
readers(:normal).valid_password?('testify').should be_false
|
137
|
+
end
|
138
|
+
end
|
139
|
+
end
|
140
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../spec_helper'
|
2
|
+
|
3
|
+
describe ReaderActivationsController do
|
4
|
+
dataset :messages
|
5
|
+
|
6
|
+
before do
|
7
|
+
controller.stub!(:request).and_return(request)
|
8
|
+
Page.current_site = sites(:test) if defined? Site
|
9
|
+
request.env["HTTP_REFERER"] = 'http://test.host/referer!'
|
10
|
+
end
|
11
|
+
|
12
|
+
describe "with a correct activation" do
|
13
|
+
before do
|
14
|
+
@newreader = readers(:inactive)
|
15
|
+
put :update, :id => @newreader.id, :activation_code => @newreader.perishable_token
|
16
|
+
@reader = Reader.find_by_name('Inactive')
|
17
|
+
end
|
18
|
+
|
19
|
+
it "should activate the reader" do
|
20
|
+
@reader.activated?.should be_true
|
21
|
+
@reader.activated_at.should be_close((Time.now).utc, 1.minute)
|
22
|
+
end
|
23
|
+
|
24
|
+
it "should redirect to a confirmation page" do
|
25
|
+
response.should be_redirect
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
describe "with an incorrect activation" do
|
30
|
+
before do
|
31
|
+
@newreader = readers(:inactive)
|
32
|
+
put :update, :id => @newreader.id, :activation_code => 'down perishcope'
|
33
|
+
end
|
34
|
+
|
35
|
+
it "should render the please-activate page" do
|
36
|
+
response.should be_success
|
37
|
+
response.should render_template("show")
|
38
|
+
end
|
39
|
+
|
40
|
+
it "should flash an error" do
|
41
|
+
flash[:error].should_not be_nil
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
end
|