Commit 96dd6dafd4bf5af9aedc3d2a8792815391e7202f
Committed by
Larissa Reis
1 parent
b2604bc6
Exists in
federation-webfinger
Ticket #194: Last tests for federated login feature
Showing
3 changed files
with
50 additions
and
6 deletions
Show diff stats
app/models/concerns/external_user.rb
@@ -30,14 +30,20 @@ module ExternalUser | @@ -30,14 +30,20 @@ module ExternalUser | ||
30 | 30 | ||
31 | def external_login(login, password, domain) | 31 | def external_login(login, password, domain) |
32 | # Call Noosfero /api/login | 32 | # Call Noosfero /api/login |
33 | - uri = URI.parse('http://' + domain + '/api/v1/login') | ||
34 | - response = Net::HTTP.post_form(uri, { login: login, password: password }) | ||
35 | - if response.code == '301' | ||
36 | - # Follow a redirection | ||
37 | - uri = URI.parse(response.header['location']) | 33 | + result = nil |
34 | + begin | ||
35 | + uri = URI.parse('http://' + domain + '/api/v1/login') | ||
38 | response = Net::HTTP.post_form(uri, { login: login, password: password }) | 36 | response = Net::HTTP.post_form(uri, { login: login, password: password }) |
37 | + if response.code == '301' | ||
38 | + # Follow a redirection | ||
39 | + uri = URI.parse(response.header['location']) | ||
40 | + response = Net::HTTP.post_form(uri, { login: login, password: password }) | ||
41 | + end | ||
42 | + result = response.code.to_i / 100 === 2 ? JSON.parse(response.body) : nil | ||
43 | + rescue | ||
44 | + # Could not make request | ||
39 | end | 45 | end |
40 | - response.code.to_i / 100 === 2 ? JSON.parse(response.body) : nil | 46 | + result |
41 | end | 47 | end |
42 | 48 | ||
43 | # Authenticates a user from an external social network | 49 | # Authenticates a user from an external social network |
features/federated_login.feature
@@ -21,3 +21,35 @@ Feature: federated login | @@ -21,3 +21,35 @@ Feature: federated login | ||
21 | When I press "Log in" | 21 | When I press "Log in" |
22 | Then I should be on the homepage | 22 | Then I should be on the homepage |
23 | And I should be federated logged in as "joaosilva@federated.noosfero.org" | 23 | And I should be federated logged in as "joaosilva@federated.noosfero.org" |
24 | + | ||
25 | + @selenium | ||
26 | + Scenario: not login from portal homepage | ||
27 | + Given feature "allow_change_of_redirection_after_login" is disabled on environment | ||
28 | + And the following federated networks | ||
29 | + | identifier | name | url | | ||
30 | + | test | Test | http://federated.noosfero.org | | ||
31 | + And I am not logged in | ||
32 | + And I go to the homepage | ||
33 | + And I follow "Login" | ||
34 | + And I fill in the following: | ||
35 | + | Username / Email | joaosilva@federated.noosfero.org | | ||
36 | + | Password | 123456 | | ||
37 | + When I press "Log in" | ||
38 | + Then I should be on /account/login | ||
39 | + And I should not be federated logged in as "joaosilva@federated.noosfero.org" | ||
40 | + | ||
41 | + @selenium | ||
42 | + Scenario: not login if network is not whitelisted | ||
43 | + Given feature "allow_change_of_redirection_after_login" is disabled on environment | ||
44 | + And the following external users | ||
45 | + | login | | ||
46 | + | joaosilva@federated.noosfero.org | | ||
47 | + And I am not logged in | ||
48 | + And I go to the homepage | ||
49 | + And I follow "Login" | ||
50 | + And I fill in the following: | ||
51 | + | Username / Email | joaosilva@federated.noosfero.org | | ||
52 | + | Password | 123456 | | ||
53 | + When I press "Log in" | ||
54 | + Then I should be on /account/login | ||
55 | + And I should not be federated logged in as "joaosilva@federated.noosfero.org" |
features/step_definitions/noosfero_steps.rb
@@ -706,3 +706,9 @@ Then /^I should be federated logged in as "([^@]+)@(.+)"$/ do |username, domain| | @@ -706,3 +706,9 @@ Then /^I should be federated logged in as "([^@]+)@(.+)"$/ do |username, domain| | ||
706 | url = 'http://' + domain + '/' + username | 706 | url = 'http://' + domain + '/' + username |
707 | page.should have_xpath("//a[@href=\"#{url}\"]") | 707 | page.should have_xpath("//a[@href=\"#{url}\"]") |
708 | end | 708 | end |
709 | + | ||
710 | +Then /^I should not be federated logged in as "([^@]+)@(.+)"$/ do |username, domain| | ||
711 | + visit '/' | ||
712 | + url = 'http://' + domain + '/' + username | ||
713 | + page.should_not have_xpath("//a[@href=\"#{url}\"]") | ||
714 | +end |