diff --git a/config/initializers/diaspora_federation.rb b/config/initializers/diaspora_federation.rb index e0d16ee44de705942b21f5954434dc3def85b085..cedbf2e000c86477788bd212a181006180b0fbbd 100644 --- a/config/initializers/diaspora_federation.rb +++ b/config/initializers/diaspora_federation.rb @@ -9,8 +9,8 @@ DiasporaFederation.configure do |config| if person DiasporaFederation::WebFinger::WebFinger.new( acct_uri: "acct:#{person.diaspora_handle}", - alias_url: url_to("/people/#{person.guid}"), - hcard_url: url_to(DiasporaFederation::Engine.routes.url_helpers.hcard_path(person.guid)), + alias_url: AppConfig.url_to("/people/#{person.guid}"), + hcard_url: AppConfig.url_to(DiasporaFederation::Engine.routes.url_helpers.hcard_path(person.guid)), seed_url: AppConfig.pod_uri, profile_url: person.profile_url, atom_url: person.atom_url, @@ -40,8 +40,4 @@ DiasporaFederation.configure do |config| end end end - - def url_to(path) - AppConfig.pod_uri.tap {|uri| uri.path = path }.to_s - end end diff --git a/lib/configuration_methods.rb b/lib/configuration_methods.rb index 107fde37c0c66a15491f12f0e270e46b60cce83d..81d769b78e133eeb4afacb6b79bdf6282cf7a4c9 100644 --- a/lib/configuration_methods.rb +++ b/lib/configuration_methods.rb @@ -3,19 +3,25 @@ module Configuration module Methods def pod_uri - return @pod_uri unless @pod_uri.nil? + return @pod_uri.dup unless @pod_uri.nil? url = environment.url.get url = "http://#{url}" unless url =~ /^(https?:\/\/)/ url << "/" unless url.end_with?("/") begin - @pod_url = Addressable::URI.parse(url) + @pod_uri = Addressable::URI.parse(url) rescue puts "WARNING: pod url #{url} is not a legal URI" end - @pod_url + @pod_uri.dup + end + + # @param path [String] + # @return [String] + def url_to(path) + pod_uri.tap {|uri| uri.path = path }.to_s end def bare_pod_uri diff --git a/spec/lib/configuration_methods_spec.rb b/spec/lib/configuration_methods_spec.rb index 966b4c0396fa5789a265e5b6709da498c8f9ee36..452fbfe249af9c5a201e71b07fd5e0848724c777 100644 --- a/spec/lib/configuration_methods_spec.rb +++ b/spec/lib/configuration_methods_spec.rb @@ -21,7 +21,7 @@ describe Configuration::Methods do expect(@settings.pod_uri.host).to eq("example.org") end - it "adds a trailing slash if there isn't one" do + it "adds a trailing slash if there isn't one" do @settings.environment.url = "http://example.org" expect(@settings.pod_uri.to_s).to eq("http://example.org/") end @@ -40,6 +40,12 @@ describe Configuration::Methods do @settings.environment.url = "https://example.org/" expect(@settings.pod_uri.to_s).to eq("https://example.org/") end + + it "returns another instance everytime" do + @settings.environment.url = "https://example.org/" + uri = @settings.pod_uri + expect(@settings.pod_uri).not_to be(uri) + end end describe "#bare_pod_uri" do @@ -51,6 +57,21 @@ describe Configuration::Methods do end end + describe "#url_to" do + before do + @settings.environment.url = "https://example.org" + @settings.instance_variable_set(:@pod_uri, nil) + end + + it "appends the path to the pod url" do + expect(@settings.url_to("/any/path")).to eq("https://example.org/any/path") + end + + it "does not add double slash" do + expect(@settings.url_to("/any/path")).to eq("https://example.org/any/path") + end + end + describe "#configured_services" do it "includes the enabled services only" do services = double