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 | 30 | |
31 | 31 | def external_login(login, password, domain) |
32 | 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 | 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 | 45 | end |
40 | - response.code.to_i / 100 === 2 ? JSON.parse(response.body) : nil | |
46 | + result | |
41 | 47 | end |
42 | 48 | |
43 | 49 | # Authenticates a user from an external social network | ... | ... |
features/federated_login.feature
... | ... | @@ -21,3 +21,35 @@ Feature: federated login |
21 | 21 | When I press "Log in" |
22 | 22 | Then I should be on the homepage |
23 | 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 | 706 | url = 'http://' + domain + '/' + username |
707 | 707 | page.should have_xpath("//a[@href=\"#{url}\"]") |
708 | 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 | ... | ... |