Commit 96dd6dafd4bf5af9aedc3d2a8792815391e7202f

Authored by Caio Almeida
Committed by Larissa Reis
1 parent b2604bc6

Ticket #194: Last tests for federated login feature

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
... ...