Add Server#base_url and make Session#server_url part of the public API
This commit is contained in:
parent
91bdb822fe
commit
9ae0a8c28b
|
@ -86,6 +86,10 @@ module Capybara
|
|||
self
|
||||
end
|
||||
|
||||
def base_url
|
||||
"http#{'s' if using_ssl?}://#{host}:#{port}"
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def middleware
|
||||
|
|
|
@ -806,6 +806,10 @@ module Capybara
|
|||
end
|
||||
end
|
||||
|
||||
def server_url
|
||||
@server&.base_url
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
@@instance_created = false # rubocop:disable Style/ClassVars
|
||||
|
@ -863,10 +867,6 @@ module Capybara
|
|||
end
|
||||
end
|
||||
|
||||
def server_url
|
||||
"http#{'s' if @server.using_ssl?}://#{@server.host}:#{@server.port}" if @server
|
||||
end
|
||||
|
||||
def adjust_server_port(uri)
|
||||
uri.port ||= @server.port if @server && config.always_include_port
|
||||
end
|
||||
|
|
|
@ -74,6 +74,13 @@ RSpec.describe Capybara::Server do
|
|||
end
|
||||
end
|
||||
|
||||
it 'should return its #base_url' do
|
||||
app = proc { |_env| [200, {}, ['Hello Server!']] }
|
||||
server = Capybara::Server.new(app).boot
|
||||
uri = ::Addressable::URI.parse(server.base_url)
|
||||
expect(uri.to_hash).to include(scheme: 'http', host: server.host, port: server.port)
|
||||
end
|
||||
|
||||
it 'should support SSL' do
|
||||
begin
|
||||
key = File.join(Dir.pwd, 'spec', 'fixtures', 'key.pem')
|
||||
|
@ -93,6 +100,8 @@ RSpec.describe Capybara::Server do
|
|||
end
|
||||
|
||||
expect(res.body).to include('Hello SSL Server!')
|
||||
uri = ::Addressable::URI.parse(server.base_url)
|
||||
expect(uri.to_hash).to include(scheme: 'https', host: server.host, port: server.port)
|
||||
ensure
|
||||
Capybara.server = :default
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue