Skip to content

Commit

Permalink
Add Server#base_url and make Session#server_url part of the public API
Browse files Browse the repository at this point in the history
  • Loading branch information
twalpole committed Jul 7, 2019
1 parent 91bdb82 commit 9ae0a8c
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 4 deletions.
4 changes: 4 additions & 0 deletions lib/capybara/server.rb
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,10 @@ def boot
self
end

def base_url
"http#{'s' if using_ssl?}://#{host}:#{port}"
end

private

def middleware
Expand Down
8 changes: 4 additions & 4 deletions lib/capybara/session.rb
Original file line number Diff line number Diff line change
Expand Up @@ -806,6 +806,10 @@ def config
end
end

def server_url
@server&.base_url
end

private

@@instance_created = false # rubocop:disable Style/ClassVars
Expand Down Expand Up @@ -863,10 +867,6 @@ def element_script_result(arg)
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
Expand Down
9 changes: 9 additions & 0 deletions spec/server_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,13 @@
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')
Expand All @@ -93,6 +100,8 @@
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
Expand Down

0 comments on commit 9ae0a8c

Please sign in to comment.