diff options
| author | Alban Peignier | 2018-04-18 21:46:11 +0200 | 
|---|---|---|
| committer | Alban Peignier | 2018-04-18 21:49:18 +0200 | 
| commit | 35ef1a2abe0a664b259c99538bb95f04ef6408d4 (patch) | |
| tree | 4aaee79b2cd674b67308c248926e24b221a75cc9 | |
| parent | fe3c330cacef3d4367c9a051e3858551986b2c14 (diff) | |
| download | chouette-core-35ef1a2abe0a664b259c99538bb95f04ef6408d4.tar.bz2 | |
Manage download uri in Import::Gtfs (with or without schema or port). Refs #6368
| -rw-r--r-- | app/models/import/gtfs.rb | 15 | ||||
| -rw-r--r-- | spec/models/import/gtfs_spec.rb | 49 | 
2 files changed, 58 insertions, 6 deletions
| diff --git a/app/models/import/gtfs.rb b/app/models/import/gtfs.rb index f017c8ee5..a20c468c1 100644 --- a/app/models/import/gtfs.rb +++ b/app/models/import/gtfs.rb @@ -56,7 +56,7 @@ class Import::Gtfs < Import::Base    attr_accessor :download_host    def download_host -    @download_host ||= Rails.application.config.rails_host.gsub("http://","") +    @download_host ||= Rails.application.config.rails_host    end    def local_temp_directory @@ -79,11 +79,20 @@ class Import::Gtfs < Import::Base      Rails.application.routes.url_helpers.download_workbench_import_path(workbench, id, token: token_download)    end +  def download_uri +    @download_uri ||= +      begin +        host = download_host +        host = "http://#{host}" unless host =~ %r{https?://} +        URI.join(host, download_path) +      end +  end +    def download_local_file      local_temp_file do |file|        begin -        Net::HTTP.start(download_host) do |http| -          http.request_get(download_path) do |response| +        Net::HTTP.start(download_uri.host, download_uri.port) do |http| +          http.request_get(download_uri.request_uri) do |response|              response.read_body do |segment|                file.write segment              end diff --git a/spec/models/import/gtfs_spec.rb b/spec/models/import/gtfs_spec.rb index b4b23be00..96b93dc62 100644 --- a/spec/models/import/gtfs_spec.rb +++ b/spec/models/import/gtfs_spec.rb @@ -262,10 +262,53 @@ RSpec.describe Import::Gtfs do      end    end -  describe "#download_host" do -    it "should return host defined by Rails.application.config.rails_host (without http:// schema)" do -      allow(Rails.application.config).to receive(:rails_host).and_return("http://download_host") +  describe "#download_uri" do +    let(:import) { Import::Gtfs.new } + +    before do +      allow(import).to receive(:download_path).and_return("/download_path") +    end + +    context "when download_host is 'front'" do +      before { allow(import).to receive(:download_host).and_return("front") } +      it "returns http://front/download_path" do +        expect(import.download_uri.to_s).to eq('http://front/download_path') +      end +    end + +    context "when download_host is 'front:3000'" do +      before { allow(import).to receive(:download_host).and_return("front:3000") } +      it "returns http://front:3000/download_path" do +        expect(import.download_uri.to_s).to eq('http://front:3000/download_path') +      end +    end + +    context "when download_host is 'http://front:3000'" do +      before { allow(import).to receive(:download_host).and_return("http://front:3000") } +      it "returns http://front:3000/download_path" do +        expect(import.download_uri.to_s).to eq('http://front:3000/download_path') +      end +    end + +    context "when download_host is 'https://front:3000'" do +      before { allow(import).to receive(:download_host).and_return("https://front:3000") } +      it "returns https://front:3000/download_path" do +        expect(import.download_uri.to_s).to eq('https://front:3000/download_path') +      end +    end +    context "when download_host is 'http://front'" do +      before { allow(import).to receive(:download_host).and_return("http://front") } +      it "returns http://front/download_path" do +        expect(import.download_uri.to_s).to eq('http://front/download_path') +      end +    end + +  end + +  describe "#download_host" do +    it "should return host defined by Rails.application.config.rails_host" do +      allow(Rails.application.config).to receive(:rails_host).and_return("download_host")        expect(Import::Gtfs.new.download_host).to eq("download_host")      end    end | 
