diff --git a/app/models/concerns/external_user.rb b/app/models/concerns/external_user.rb index a00a7d0..6b1a84e 100644 --- a/app/models/concerns/external_user.rb +++ b/app/models/concerns/external_user.rb @@ -19,7 +19,7 @@ module ExternalUser def webfinger_lookup(login, domain, environment) if login && domain && environment.has_federated_network?(domain) url = URI.parse('https://'+ domain +'/.well-known/webfinger?resource=acct:'+ - login+'@'+Environment.default.federated_networks.find_by_url(domain)) + login+'@'+Environment.default.external_environments.find_by_url(domain)) req = Net::HTTP::Get.new(url.to_s) res = Net::HTTP.start(url.host, url.port) { |http| http.request(req) } JSON.parse(res.body) diff --git a/app/models/environment.rb b/app/models/environment.rb index 85994f8..04e6490 100644 --- a/app/models/environment.rb +++ b/app/models/environment.rb @@ -1010,7 +1010,7 @@ class Environment < ApplicationRecord end def has_federated_network?(domain) - self.federated_networks.map(&:url).any? { |url| /http[s]?:\/\/#{domain}\/?/ =~ url } + self.external_environments.map(&:url).any? { |url| /http[s]?:\/\/#{domain}\/?/ =~ url } end private diff --git a/features/external_login.feature b/features/external_login.feature new file mode 100644 index 0000000..9ae3302 --- /dev/null +++ b/features/external_login.feature @@ -0,0 +1,55 @@ +Feature: external login + As a user + I want to login using an account from a federated network + In order to view pages logged in + + @selenium + Scenario: 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 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 the homepage + And I should be externally 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 externally 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 externally logged in as "joaosilva@federated.noosfero.org" diff --git a/features/federated_login.feature b/features/federated_login.feature deleted file mode 100644 index a6fbde3..0000000 --- a/features/federated_login.feature +++ /dev/null @@ -1,55 +0,0 @@ -Feature: federated login - As a user - I want to login using an account from a federated network - In order to view pages logged in - - @selenium - Scenario: 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 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 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 d24de1e..14041a0 100644 --- a/features/step_definitions/noosfero_steps.rb +++ b/features/step_definitions/noosfero_steps.rb @@ -700,14 +700,14 @@ Given /^the following external users?$/ do |table| Net::HTTP.stub(:post_form).and_return(response) end end - -Then /^I should be federated logged in as "([^@]+)@(.+)"$/ do |username, domain| + +Then /^I should be externally logged in as "([^@]+)@(.+)"$/ do |username, domain| visit '/' url = 'http://' + domain + '/' + username page.should have_xpath("//a[@href=\"#{url}\"]") end -Then /^I should not be federated logged in as "([^@]+)@(.+)"$/ do |username, domain| +Then /^I should not be externally logged in as "([^@]+)@(.+)"$/ do |username, domain| visit '/' url = 'http://' + domain + '/' + username page.should_not have_xpath("//a[@href=\"#{url}\"]") -- libgit2 0.21.2