rails_apps_testing 0.2.4 → 0.3.0
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.
- checksums.yaml +4 -4
- data/CHANGELOG.textile +5 -0
- data/README.textile +14 -10
- data/lib/generators/testing/configure/configure_generator.rb +17 -4
- data/lib/generators/testing/configure/templates/spec/devise/factories/users.rb +7 -0
- data/lib/generators/testing/configure/templates/spec/devise/features/users/sign_in_spec.rb +49 -0
- data/lib/generators/testing/configure/templates/spec/devise/features/users/sign_out_spec.rb +21 -0
- data/lib/generators/testing/configure/templates/spec/devise/features/users/user_delete_spec.rb +32 -0
- data/lib/generators/testing/configure/templates/spec/devise/features/users/user_edit_spec.rb +41 -0
- data/lib/generators/testing/configure/templates/spec/devise/features/users/user_index_spec.rb +25 -0
- data/lib/generators/testing/configure/templates/spec/devise/features/users/user_show_spec.rb +39 -0
- data/lib/generators/testing/configure/templates/spec/devise/features/visitors/sign_up_spec.rb +61 -0
- data/lib/generators/testing/configure/templates/{devise.rb → spec/devise/support/devise.rb} +0 -0
- data/lib/generators/testing/configure/templates/spec/devise/support/helpers.rb +3 -0
- data/lib/generators/testing/configure/templates/spec/devise/support/helpers/session_helpers.rb +18 -0
- data/lib/generators/testing/configure/templates/spec/omniauth/controllers/sessions_controller_spec.rb +45 -0
- data/lib/generators/testing/configure/templates/spec/omniauth/features/users/sign_in_spec.rb +31 -0
- data/lib/generators/testing/configure/templates/spec/omniauth/features/users/sign_out_spec.rb +17 -0
- data/lib/generators/testing/configure/templates/spec/omniauth/support/helpers.rb +5 -0
- data/lib/generators/testing/configure/templates/spec/omniauth/support/helpers/omniauth.rb +31 -0
- data/lib/rails_apps_testing/version.rb +1 -1
- metadata +18 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a45babcf9e91ec332bf11ecdb5f63e59c635cdf4
|
4
|
+
data.tar.gz: 53d894e50a66f4ef042edab27d2e611432dc5c59
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 77482fbc848d257bac0d573e23b24b337401406fba4a84178084316805f1daefdc509bfa99fb03f61e1225914dfc4372959d7ee26e0b274f462eb1626259c90e
|
7
|
+
data.tar.gz: 6c301191cb4e2cdda94315187fc4f48d010d4e270cbdc23f616f6a7323bda1866e044a8d148c25dabda4335bc29bdc5908d14e187f4b90bf8b172e41422deb7d
|
data/CHANGELOG.textile
CHANGED
data/README.textile
CHANGED
@@ -19,6 +19,8 @@ Use this gem to set up a testing framework. The gem modifies a Rails application
|
|
19
19
|
|
20
20
|
This suite of gems is popular for testing Rails applications. Typically, a developer makes several small configuration changes when setting up a test framework with these gems. The configuration changes are easy to make manually, but this gem provides a generator to make the changes, for ease of use with an automated process such as an application template.
|
21
21
|
|
22
|
+
The gem also offers options to install test suites for Devise or OmniAuth.
|
23
|
+
|
22
24
|
RailsApps Testing is a utility gem to use during development. You can remove it after setting up your test framework. It was originally written for use by the "Rails Composer":http://railsapps.github.io/rails-composer/ tool. Use Rails Composer to build any of the "RailApps example applications":http://railsapps.github.io/ for use as starter apps.
|
23
25
|
|
24
26
|
If you like the RailsApps Testing gem, you might be interested in the "RailsLayout gem":https://github.com/RailsApps/rails_layout which generates Rails application layout files for various front-end frameworks such as Bootstrap and Foundation.
|
@@ -91,10 +93,11 @@ h3. RSpec Configuration
|
|
91
93
|
|
92
94
|
The RailsApps Testing generator will remove the legacy *test/* folder if it exists (it is not needed for RSpec).
|
93
95
|
|
94
|
-
The RailsApps Testing generator will run @rails generate rspec:install@ to create
|
96
|
+
The RailsApps Testing generator will run @rails generate rspec:install@ to create three files and a folder:
|
95
97
|
|
96
98
|
* *.rspec*
|
97
99
|
* *spec/*
|
100
|
+
* *spec/spec_helper.rb*
|
98
101
|
* *spec/rails_helper.rb*
|
99
102
|
|
100
103
|
Then the RailsApps Testing generator will configure RSpec.
|
@@ -103,6 +106,7 @@ It will modify the file *.rspec* to add:
|
|
103
106
|
|
104
107
|
<pre>
|
105
108
|
--format documentation
|
109
|
+
--require rails_helper
|
106
110
|
</pre>
|
107
111
|
|
108
112
|
and will remove:
|
@@ -111,6 +115,8 @@ and will remove:
|
|
111
115
|
--warnings
|
112
116
|
</pre>
|
113
117
|
|
118
|
+
Prior to RSpec 3.0, every RSpec test file had to include @require 'spec_helper'@. With RSpec 3.0 and later versions, an additional @require 'rails_helper'@ became necessary. Fortunately, starting with RSpec 3.0, to eliminate clutter and duplication, these requirements can be specified in the project setting *.rspec* file.
|
119
|
+
|
114
120
|
It will modify the file *config/application.rb* to suppress creation of stub files that many developers don't use:
|
115
121
|
|
116
122
|
<pre>
|
@@ -178,24 +184,22 @@ RSpec.configure do |config|
|
|
178
184
|
end
|
179
185
|
</pre>
|
180
186
|
|
181
|
-
h3. Devise
|
187
|
+
h3. Install Devise Tests
|
182
188
|
|
183
|
-
If
|
189
|
+
If you want to install tests for Devise, you can run:
|
184
190
|
|
185
191
|
<pre>
|
186
|
-
|
187
|
-
config.include Devise::TestHelpers, :type => :controller
|
188
|
-
end
|
192
|
+
$ rails generate testing:configure devise
|
189
193
|
</pre>
|
190
194
|
|
191
|
-
|
195
|
+
h3. Install OmniAuth Tests
|
196
|
+
|
197
|
+
If you want to install tests for OmniAuth, you can run:
|
192
198
|
|
193
199
|
<pre>
|
194
|
-
$ rails generate testing:configure
|
200
|
+
$ rails generate testing:configure omniauth
|
195
201
|
</pre>
|
196
202
|
|
197
|
-
This is helpful for application templates that install RSpec before installing Devise, allowing you to run the generator again to install support for Devise after Devise is installed.
|
198
|
-
|
199
203
|
h2. Issues
|
200
204
|
|
201
205
|
Any issues? Please create an "issue":http://github.com/RailsApps/rails_apps_testing/issues on GitHub. Reporting issues (and patching!) helps everyone.
|
@@ -24,11 +24,24 @@ module Testing
|
|
24
24
|
gsub_file 'spec/rails_helper.rb', /config.use_transactional_fixtures = true/, "config.use_transactional_fixtures = false"
|
25
25
|
copy_file 'database_cleaner.rb', 'spec/support/database_cleaner.rb'
|
26
26
|
copy_file 'factory_girl.rb', 'spec/support/factory_girl.rb'
|
27
|
-
if File.exists?('config/initializers/devise.rb')
|
28
|
-
copy_file 'devise.rb', 'spec/support/devise.rb'
|
29
|
-
end
|
30
27
|
when 'devise'
|
31
|
-
copy_file 'devise.rb', 'spec/support/devise.rb'
|
28
|
+
copy_file 'spec/devise/support/devise.rb', 'spec/support/devise.rb'
|
29
|
+
copy_file 'spec/devise/support/helpers/session_helpers.rb', 'spec/support/helpers/session_helpers.rb'
|
30
|
+
copy_file 'spec/devise/support/helpers.rb', 'spec/support/helpers.rb'
|
31
|
+
copy_file 'spec/devise/factories/users.rb', 'spec/factories/users.rb'
|
32
|
+
copy_file 'spec/devise/features/users/sign_in_spec.rb', 'spec/features/users/sign_in_spec.rb'
|
33
|
+
copy_file 'spec/devise/features/users/sign_out_spec.rb', 'spec/features/users/sign_out_spec.rb'
|
34
|
+
copy_file 'spec/devise/features/users/user_delete_spec.rb', 'spec/features/users/user_delete_spec.rb'
|
35
|
+
copy_file 'spec/devise/features/users/user_edit_spec.rb', 'spec/features/users/user_edit_spec.rb'
|
36
|
+
copy_file 'spec/features/users/user_index_spec.rb', 'spec/features/users/user_index_spec.rb'
|
37
|
+
copy_file 'spec/features/users/user_show_spec.rb', 'spec/features/users/user_show_spec.rb'
|
38
|
+
copy_file 'spec/devise/features/visitors/sign_up_spec.rb', 'spec/features/visitors/sign_up_spec.rb'
|
39
|
+
when 'omniauth'
|
40
|
+
copy_file 'spec/omniauth/support/helpers/omniauth.rb', 'spec/support/helpers/omniauth.rb'
|
41
|
+
copy_file 'spec/omniauth/support/helpers.rb', 'spec/support/helpers.rb'
|
42
|
+
copy_file 'spec/omniauth/features/users/sign_in_spec.rb', 'spec/features/users/sign_in_spec.rb'
|
43
|
+
copy_file 'spec/omniauth/features/users/sign_out_spec.rb', 'spec/features/users/sign_out_spec.rb'
|
44
|
+
copy_file 'spec/omniauth/controllers/sessions_controller_spec.rb', 'spec/controllers/sessions_controller_spec.rb'
|
32
45
|
end
|
33
46
|
end
|
34
47
|
|
@@ -0,0 +1,49 @@
|
|
1
|
+
# Feature: Sign in
|
2
|
+
# As a user
|
3
|
+
# I want to sign in
|
4
|
+
# So I can visit protected areas of the site
|
5
|
+
feature 'Sign in', :devise do
|
6
|
+
|
7
|
+
# Scenario: User cannot sign in if not registered
|
8
|
+
# Given I do not exist as a user
|
9
|
+
# When I sign in with valid credentials
|
10
|
+
# Then I see an invalid credentials message
|
11
|
+
scenario 'user cannot sign in if not registered' do
|
12
|
+
signin('test@example.com', 'please123')
|
13
|
+
expect(page).to have_content 'Invalid email or password.'
|
14
|
+
end
|
15
|
+
|
16
|
+
# Scenario: User can sign in with valid credentials
|
17
|
+
# Given I exist as a user
|
18
|
+
# And I am not signed in
|
19
|
+
# When I sign in with valid credentials
|
20
|
+
# Then I see a success message
|
21
|
+
scenario 'user can sign in with valid credentials' do
|
22
|
+
user = FactoryGirl.create(:user)
|
23
|
+
signin(user.email, user.password)
|
24
|
+
expect(page).to have_content 'Signed in successfully.'
|
25
|
+
end
|
26
|
+
|
27
|
+
# Scenario: User cannot sign in with wrong email
|
28
|
+
# Given I exist as a user
|
29
|
+
# And I am not signed in
|
30
|
+
# When I sign in with a wrong email
|
31
|
+
# Then I see an invalid email message
|
32
|
+
scenario 'user cannot sign in with wrong email' do
|
33
|
+
user = FactoryGirl.create(:user)
|
34
|
+
signin('invalid@email.com', user.password)
|
35
|
+
expect(page).to have_content 'Invalid email or password.'
|
36
|
+
end
|
37
|
+
|
38
|
+
# Scenario: User cannot sign in with wrong password
|
39
|
+
# Given I exist as a user
|
40
|
+
# And I am not signed in
|
41
|
+
# When I sign in with a wrong password
|
42
|
+
# Then I see an invalid password message
|
43
|
+
scenario 'user cannot sign in with wrong password' do
|
44
|
+
user = FactoryGirl.create(:user)
|
45
|
+
signin(user.email, 'invalidpass')
|
46
|
+
expect(page).to have_content 'Invalid email or password.'
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# Feature: Sign out
|
2
|
+
# As a user
|
3
|
+
# I want to sign out
|
4
|
+
# So I can protect my account from unauthorized access
|
5
|
+
feature 'Sign out', :devise do
|
6
|
+
|
7
|
+
# Scenario: User signs out successfully
|
8
|
+
# Given I am signed in
|
9
|
+
# When I sign out
|
10
|
+
# Then I see a signed out message
|
11
|
+
scenario 'user signs out successfully' do
|
12
|
+
user = FactoryGirl.create(:user)
|
13
|
+
signin(user.email, user.password)
|
14
|
+
expect(page).to have_content 'Signed in successfully.'
|
15
|
+
click_link 'Sign out'
|
16
|
+
expect(page).to have_content 'Signed out successfully.'
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
20
|
+
|
21
|
+
|
data/lib/generators/testing/configure/templates/spec/devise/features/users/user_delete_spec.rb
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
include Warden::Test::Helpers
|
2
|
+
Warden.test_mode!
|
3
|
+
|
4
|
+
# Feature: User delete
|
5
|
+
# As a user
|
6
|
+
# I want to delete my user profile
|
7
|
+
# So I can close my account
|
8
|
+
feature 'User delete', :devise, :js do
|
9
|
+
|
10
|
+
after(:each) do
|
11
|
+
Warden.test_reset!
|
12
|
+
end
|
13
|
+
|
14
|
+
# Scenario: User can delete own account
|
15
|
+
# Given I am signed in
|
16
|
+
# When I delete my account
|
17
|
+
# Then I should see an account deleted message
|
18
|
+
scenario 'user can delete own account' do
|
19
|
+
skip 'skip a slow test'
|
20
|
+
user = FactoryGirl.create(:user)
|
21
|
+
login_as(user, :scope => :user)
|
22
|
+
visit edit_user_registration_path(user)
|
23
|
+
click_button 'Cancel my account'
|
24
|
+
page.driver.browser.switch_to.alert.accept
|
25
|
+
expect(page).to have_content 'Bye! Your account was successfully cancelled. We hope to see you again soon.'
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
29
|
+
|
30
|
+
|
31
|
+
|
32
|
+
|
@@ -0,0 +1,41 @@
|
|
1
|
+
include Warden::Test::Helpers
|
2
|
+
Warden.test_mode!
|
3
|
+
|
4
|
+
# Feature: User edit
|
5
|
+
# As a user
|
6
|
+
# I want to edit my user profile
|
7
|
+
# So I can change my email address
|
8
|
+
feature 'User edit', :devise do
|
9
|
+
|
10
|
+
after(:each) do
|
11
|
+
Warden.test_reset!
|
12
|
+
end
|
13
|
+
|
14
|
+
# Scenario: User changes email address
|
15
|
+
# Given I am signed in
|
16
|
+
# When I change my email address
|
17
|
+
# Then I see an account updated message
|
18
|
+
scenario 'user changes email address' do
|
19
|
+
user = FactoryGirl.create(:user)
|
20
|
+
login_as(user, :scope => :user)
|
21
|
+
visit edit_user_registration_path(user)
|
22
|
+
fill_in 'Email', :with => 'newemail@example.com'
|
23
|
+
fill_in 'Current password', :with => user.password
|
24
|
+
click_button 'Update'
|
25
|
+
expect(page).to have_content 'You updated your account successfully.'
|
26
|
+
end
|
27
|
+
|
28
|
+
# Scenario: User cannot edit another user's profile
|
29
|
+
# Given I am signed in
|
30
|
+
# When I try to edit another user's profile
|
31
|
+
# Then I see my own 'edit profile' page
|
32
|
+
scenario "user cannot cannot edit another user's profile", :me do
|
33
|
+
me = FactoryGirl.create(:user)
|
34
|
+
other = FactoryGirl.create(:user, email: 'other@example.com')
|
35
|
+
login_as(me, :scope => :user)
|
36
|
+
visit edit_user_registration_path(other)
|
37
|
+
expect(page).to have_content 'Edit User'
|
38
|
+
expect(page).to have_field('Email', with: me.email)
|
39
|
+
end
|
40
|
+
|
41
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
include Warden::Test::Helpers
|
2
|
+
Warden.test_mode!
|
3
|
+
|
4
|
+
# Feature: User index page
|
5
|
+
# As a user
|
6
|
+
# I want to see a list of users
|
7
|
+
# So I can see who has registered
|
8
|
+
feature 'User index page', :devise do
|
9
|
+
|
10
|
+
after(:each) do
|
11
|
+
Warden.test_reset!
|
12
|
+
end
|
13
|
+
|
14
|
+
# Scenario: User listed on index page
|
15
|
+
# Given I am signed in
|
16
|
+
# When I visit the user index page
|
17
|
+
# Then I see my own email address
|
18
|
+
scenario 'user sees own email address' do
|
19
|
+
user = FactoryGirl.create(:user)
|
20
|
+
login_as(user, scope: :user)
|
21
|
+
visit users_path
|
22
|
+
expect(page).to have_content user.email
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
include Warden::Test::Helpers
|
2
|
+
Warden.test_mode!
|
3
|
+
|
4
|
+
# Feature: User profile page
|
5
|
+
# As a user
|
6
|
+
# I want to visit my user profile page
|
7
|
+
# So I can see my personal account data
|
8
|
+
feature 'User profile page', :devise do
|
9
|
+
|
10
|
+
after(:each) do
|
11
|
+
Warden.test_reset!
|
12
|
+
end
|
13
|
+
|
14
|
+
# Scenario: User sees own profile
|
15
|
+
# Given I am signed in
|
16
|
+
# When I visit the user profile page
|
17
|
+
# Then I see my own email address
|
18
|
+
scenario 'user sees own profile' do
|
19
|
+
user = FactoryGirl.create(:user)
|
20
|
+
login_as(user, :scope => :user)
|
21
|
+
visit user_path(user)
|
22
|
+
expect(page).to have_content 'User'
|
23
|
+
expect(page).to have_content user.email
|
24
|
+
end
|
25
|
+
|
26
|
+
# Scenario: User cannot see another user's profile
|
27
|
+
# Given I am signed in
|
28
|
+
# When I visit another user's profile
|
29
|
+
# Then I see an 'access denied' message
|
30
|
+
scenario "user cannot see another user's profile" do
|
31
|
+
me = FactoryGirl.create(:user)
|
32
|
+
other = FactoryGirl.create(:user, email: 'other@example.com')
|
33
|
+
login_as(me, :scope => :user)
|
34
|
+
Capybara.current_session.driver.header 'Referer', root_path
|
35
|
+
visit user_path(other)
|
36
|
+
expect(page).to have_content 'Access denied.'
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
# Feature: Sign up
|
2
|
+
# As a visitor
|
3
|
+
# I want to sign up
|
4
|
+
# So I can visit protected areas of the site
|
5
|
+
feature 'Sign Up', :devise do
|
6
|
+
|
7
|
+
# Scenario: Visitor can sign up with valid email address and password
|
8
|
+
# Given I am not signed in
|
9
|
+
# When I sign up with a valid email address and password
|
10
|
+
# Then I see a successful sign up message
|
11
|
+
scenario 'visitor can sign up with valid email address and password' do
|
12
|
+
sign_up_with('test@example.com', 'please123', 'please123')
|
13
|
+
expect(page).to have_content 'Welcome! You have signed up successfully.'
|
14
|
+
end
|
15
|
+
|
16
|
+
# Scenario: Visitor cannot sign up with invalid email address
|
17
|
+
# Given I am not signed in
|
18
|
+
# When I sign up with an invalid email address
|
19
|
+
# Then I see an invalid email message
|
20
|
+
scenario 'visitor cannot sign up with invalid email address' do
|
21
|
+
sign_up_with('bogus', 'please123', 'please123')
|
22
|
+
expect(page).to have_content 'Email is invalid'
|
23
|
+
end
|
24
|
+
|
25
|
+
# Scenario: Visitor cannot sign up without password
|
26
|
+
# Given I am not signed in
|
27
|
+
# When I sign up without a password
|
28
|
+
# Then I see a missing password message
|
29
|
+
scenario 'visitor cannot sign up without password' do
|
30
|
+
sign_up_with('test@example.com', '', '')
|
31
|
+
expect(page).to have_content "Password can't be blank"
|
32
|
+
end
|
33
|
+
|
34
|
+
# Scenario: Visitor cannot sign up with a short password
|
35
|
+
# Given I am not signed in
|
36
|
+
# When I sign up with a short password
|
37
|
+
# Then I see a 'too short password' message
|
38
|
+
scenario 'visitor cannot sign up with a short password' do
|
39
|
+
sign_up_with('test@example.com', 'please', 'please')
|
40
|
+
expect(page).to have_content "Password is too short"
|
41
|
+
end
|
42
|
+
|
43
|
+
# Scenario: Visitor cannot sign up without password confirmation
|
44
|
+
# Given I am not signed in
|
45
|
+
# When I sign up without a password confirmation
|
46
|
+
# Then I see a missing password confirmation message
|
47
|
+
scenario 'visitor cannot sign up without password confirmation' do
|
48
|
+
sign_up_with('test@example.com', 'please123', '')
|
49
|
+
expect(page).to have_content "Password confirmation doesn't match"
|
50
|
+
end
|
51
|
+
|
52
|
+
# Scenario: Visitor cannot sign up with mismatched password and confirmation
|
53
|
+
# Given I am not signed in
|
54
|
+
# When I sign up with a mismatched password confirmation
|
55
|
+
# Then I should see a mismatched password message
|
56
|
+
scenario 'visitor cannot sign up with mismatched password and confirmation' do
|
57
|
+
sign_up_with('test@example.com', 'please123', 'mismatch')
|
58
|
+
expect(page).to have_content "Password confirmation doesn't match"
|
59
|
+
end
|
60
|
+
|
61
|
+
end
|
File without changes
|
data/lib/generators/testing/configure/templates/spec/devise/support/helpers/session_helpers.rb
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
module Features
|
2
|
+
module SessionHelpers
|
3
|
+
def sign_up_with(email, password, confirmation)
|
4
|
+
visit new_user_registration_path
|
5
|
+
fill_in 'Email', with: email
|
6
|
+
fill_in 'Password', with: password
|
7
|
+
fill_in 'Password confirmation', :with => confirmation
|
8
|
+
click_button 'Sign up'
|
9
|
+
end
|
10
|
+
|
11
|
+
def signin(email, password)
|
12
|
+
visit new_user_session_path
|
13
|
+
fill_in 'Email', with: email
|
14
|
+
fill_in 'Password', with: password
|
15
|
+
click_button 'Sign in'
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
describe SessionsController, :omniauth do
|
2
|
+
|
3
|
+
before do
|
4
|
+
request.env['omniauth.auth'] = auth_mock
|
5
|
+
end
|
6
|
+
|
7
|
+
describe "#create" do
|
8
|
+
|
9
|
+
it "creates a user" do
|
10
|
+
expect {post :create, provider: :twitter}.to change{ User.count }.by(1)
|
11
|
+
end
|
12
|
+
|
13
|
+
it "creates a session" do
|
14
|
+
expect(session[:user_id]).to be_nil
|
15
|
+
post :create, provider: :twitter
|
16
|
+
expect(session[:user_id]).to_not be_nil
|
17
|
+
end
|
18
|
+
|
19
|
+
it "redirects the user to the user profile" do
|
20
|
+
post :create, provider: :twitter
|
21
|
+
expect(response).to redirect_to edit_user_path(1)
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
25
|
+
|
26
|
+
describe "#destroy" do
|
27
|
+
|
28
|
+
before do
|
29
|
+
post :create, provider: :twitter
|
30
|
+
end
|
31
|
+
|
32
|
+
it "resets the session" do
|
33
|
+
session[:user_id].should_not be_nil
|
34
|
+
delete :destroy
|
35
|
+
expect(session[:user_id]).to be_nil
|
36
|
+
end
|
37
|
+
|
38
|
+
it "redirects to the home page" do
|
39
|
+
delete :destroy
|
40
|
+
expect(response).to redirect_to root_url
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
44
|
+
|
45
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# Feature: Sign in
|
2
|
+
# As a user
|
3
|
+
# I want to sign in
|
4
|
+
# So I can visit protected areas of the site
|
5
|
+
feature 'Sign in', :omniauth do
|
6
|
+
|
7
|
+
# Scenario: User can sign in with valid account
|
8
|
+
# Given I have a valid account
|
9
|
+
# And I am not signed in
|
10
|
+
# When I sign in
|
11
|
+
# Then I see a success message
|
12
|
+
scenario "user can sign in with valid account" do
|
13
|
+
signin
|
14
|
+
page.should have_content("test@example.com")
|
15
|
+
page.should have_content("Sign out")
|
16
|
+
end
|
17
|
+
|
18
|
+
# Scenario: User cannot sign in with invalid account
|
19
|
+
# Given I have no account
|
20
|
+
# And I am not signed in
|
21
|
+
# When I sign in
|
22
|
+
# Then I see an authentication error message
|
23
|
+
scenario 'user cannot sign in with invalid account' do
|
24
|
+
OmniAuth.config.mock_auth[:twitter] = :invalid_credentials
|
25
|
+
visit root_path
|
26
|
+
page.should have_content("Sign in")
|
27
|
+
click_link "Sign in"
|
28
|
+
page.should have_content('Authentication error')
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
# Feature: Sign out
|
2
|
+
# As a user
|
3
|
+
# I want to sign out
|
4
|
+
# So I can protect my account from unauthorized access
|
5
|
+
feature 'Sign out', :omniauth do
|
6
|
+
|
7
|
+
# Scenario: User signs out successfully
|
8
|
+
# Given I am signed in
|
9
|
+
# When I sign out
|
10
|
+
# Then I see a signed out message
|
11
|
+
scenario 'user signs out successfully' do
|
12
|
+
signin
|
13
|
+
click_link 'Sign out'
|
14
|
+
expect(page).to have_content 'Signed out'
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module Omniauth
|
2
|
+
|
3
|
+
module Mock
|
4
|
+
def auth_mock
|
5
|
+
OmniAuth.config.mock_auth[:twitter] = {
|
6
|
+
'provider' => 'twitter',
|
7
|
+
'uid' => '123545',
|
8
|
+
'user_info' => {
|
9
|
+
'name' => 'mockuser',
|
10
|
+
'image' => 'mock_user_thumbnail_url'
|
11
|
+
},
|
12
|
+
'credentials' => {
|
13
|
+
'token' => 'mock_token',
|
14
|
+
'secret' => 'mock_secret'
|
15
|
+
}
|
16
|
+
}
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
module SessionHelpers
|
21
|
+
def signin
|
22
|
+
visit root_path
|
23
|
+
page.should have_content("Sign in")
|
24
|
+
click_link "Sign in"
|
25
|
+
auth_mock
|
26
|
+
fill_in 'user_email', with: 'test@example.com'
|
27
|
+
click_button "Sign in"
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rails_apps_testing
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Daniel Kehoe
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-06-
|
11
|
+
date: 2014-06-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -57,8 +57,23 @@ files:
|
|
57
57
|
- lib/generators/testing/configure/templates/application.rb
|
58
58
|
- lib/generators/testing/configure/templates/capybara.rb
|
59
59
|
- lib/generators/testing/configure/templates/database_cleaner.rb
|
60
|
-
- lib/generators/testing/configure/templates/devise.rb
|
61
60
|
- lib/generators/testing/configure/templates/factory_girl.rb
|
61
|
+
- lib/generators/testing/configure/templates/spec/devise/factories/users.rb
|
62
|
+
- lib/generators/testing/configure/templates/spec/devise/features/users/sign_in_spec.rb
|
63
|
+
- lib/generators/testing/configure/templates/spec/devise/features/users/sign_out_spec.rb
|
64
|
+
- lib/generators/testing/configure/templates/spec/devise/features/users/user_delete_spec.rb
|
65
|
+
- lib/generators/testing/configure/templates/spec/devise/features/users/user_edit_spec.rb
|
66
|
+
- lib/generators/testing/configure/templates/spec/devise/features/users/user_index_spec.rb
|
67
|
+
- lib/generators/testing/configure/templates/spec/devise/features/users/user_show_spec.rb
|
68
|
+
- lib/generators/testing/configure/templates/spec/devise/features/visitors/sign_up_spec.rb
|
69
|
+
- lib/generators/testing/configure/templates/spec/devise/support/devise.rb
|
70
|
+
- lib/generators/testing/configure/templates/spec/devise/support/helpers.rb
|
71
|
+
- lib/generators/testing/configure/templates/spec/devise/support/helpers/session_helpers.rb
|
72
|
+
- lib/generators/testing/configure/templates/spec/omniauth/controllers/sessions_controller_spec.rb
|
73
|
+
- lib/generators/testing/configure/templates/spec/omniauth/features/users/sign_in_spec.rb
|
74
|
+
- lib/generators/testing/configure/templates/spec/omniauth/features/users/sign_out_spec.rb
|
75
|
+
- lib/generators/testing/configure/templates/spec/omniauth/support/helpers.rb
|
76
|
+
- lib/generators/testing/configure/templates/spec/omniauth/support/helpers/omniauth.rb
|
62
77
|
- lib/rails_apps_testing.rb
|
63
78
|
- lib/rails_apps_testing/version.rb
|
64
79
|
- rails_apps_testing.gemspec
|