From 96dd6dafd4bf5af9aedc3d2a8792815391e7202f Mon Sep 17 00:00:00 2001 From: Caio SBA Date: Fri, 6 May 2016 13:01:43 -0300 Subject: [PATCH] Ticket #194: Last tests for federated login feature --- app/models/concerns/external_user.rb | 18 ++++++++++++------ features/federated_login.feature | 32 ++++++++++++++++++++++++++++++++ features/step_definitions/noosfero_steps.rb | 6 ++++++ 3 files changed, 50 insertions(+), 6 deletions(-) diff --git a/app/models/concerns/external_user.rb b/app/models/concerns/external_user.rb index 4efec9d..daa5119 100644 --- a/app/models/concerns/external_user.rb +++ b/app/models/concerns/external_user.rb @@ -30,14 +30,20 @@ module ExternalUser def external_login(login, password, domain) # Call Noosfero /api/login - uri = URI.parse('http://' + domain + '/api/v1/login') - response = Net::HTTP.post_form(uri, { login: login, password: password }) - if response.code == '301' - # Follow a redirection - uri = URI.parse(response.header['location']) + result = nil + begin + uri = URI.parse('http://' + domain + '/api/v1/login') response = Net::HTTP.post_form(uri, { login: login, password: password }) + if response.code == '301' + # Follow a redirection + uri = URI.parse(response.header['location']) + response = Net::HTTP.post_form(uri, { login: login, password: password }) + end + result = response.code.to_i / 100 === 2 ? JSON.parse(response.body) : nil + rescue + # Could not make request end - response.code.to_i / 100 === 2 ? JSON.parse(response.body) : nil + result end # Authenticates a user from an external social network diff --git a/features/federated_login.feature b/features/federated_login.feature index b7babce..a6fbde3 100644 --- a/features/federated_login.feature +++ b/features/federated_login.feature @@ -21,3 +21,35 @@ Feature: federated login When I press "Log in" Then I should be on the homepage And I should be federated logged in as "joaosilva@federated.noosfero.org" + + @selenium + Scenario: not login from portal homepage + Given feature "allow_change_of_redirection_after_login" is disabled on environment + And the following federated networks + | identifier | name | url | + | test | Test | http://federated.noosfero.org | + And I am not logged in + And I go to the homepage + And I follow "Login" + And I fill in the following: + | Username / Email | joaosilva@federated.noosfero.org | + | Password | 123456 | + When I press "Log in" + Then I should be on /account/login + And I should not be federated logged in as "joaosilva@federated.noosfero.org" + + @selenium + Scenario: not login if network is not whitelisted + Given feature "allow_change_of_redirection_after_login" is disabled on environment + And the following external users + | login | + | joaosilva@federated.noosfero.org | + And I am not logged in + And I go to the homepage + And I follow "Login" + And I fill in the following: + | Username / Email | joaosilva@federated.noosfero.org | + | Password | 123456 | + When I press "Log in" + Then I should be on /account/login + And I should not be federated logged in as "joaosilva@federated.noosfero.org" diff --git a/features/step_definitions/noosfero_steps.rb b/features/step_definitions/noosfero_steps.rb index f9f6c53..2691bdb 100644 --- a/features/step_definitions/noosfero_steps.rb +++ b/features/step_definitions/noosfero_steps.rb @@ -706,3 +706,9 @@ Then /^I should be federated logged in as "([^@]+)@(.+)"$/ do |username, domain| url = 'http://' + domain + '/' + username page.should have_xpath("//a[@href=\"#{url}\"]") end + +Then /^I should not be federated logged in as "([^@]+)@(.+)"$/ do |username, domain| + visit '/' + url = 'http://' + domain + '/' + username + page.should_not have_xpath("//a[@href=\"#{url}\"]") +end -- libgit2 0.21.2