elasticsearch-transport 0.4.0 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/README.md CHANGED
@@ -1,11 +1,11 @@
1
- # Elasticsearch::Client
1
+ # Elasticsearch::Transport
2
2
 
3
3
  **This library is part of the [`elasticsearch-ruby`](https://github.com/elasticsearch/elasticsearch-ruby/) package;
4
4
  please refer to it, unless you want to use this library standalone.**
5
5
 
6
6
  ----
7
7
 
8
- The `elasticsearch-client` library provides a Ruby client for connecting
8
+ The `elasticsearch-transport` library provides a low-level Ruby client for connecting
9
9
  to an [Elasticsearch](http://elasticsearch.org) cluster.
10
10
 
11
11
  It handles connecting to multiple nodes in the cluster, rotating across connections,
@@ -31,16 +31,16 @@ Features overview:
31
31
 
32
32
  Install the package from [Rubygems](https://rubygems.org):
33
33
 
34
- gem install elasticsearch-client
34
+ gem install elasticsearch-transport
35
35
 
36
36
  To use an unreleased version, either add it to your `Gemfile` for [Bundler](http://gembundler.com):
37
37
 
38
- gem 'elasticsearch-client', git: 'git://github.com/elasticsearch/elasticsearch-ruby.git'
38
+ gem 'elasticsearch-transport', git: 'git://github.com/elasticsearch/elasticsearch-ruby.git'
39
39
 
40
40
  or install it from a source code checkout:
41
41
 
42
42
  git clone https://github.com/elasticsearch/elasticsearch-ruby.git
43
- cd elasticsearch-ruby/elasticsearch-client
43
+ cd elasticsearch-ruby/elasticsearch-transport
44
44
  bundle install
45
45
  rake install
46
46
 
@@ -49,12 +49,14 @@ or install it from a source code checkout:
49
49
  In the simplest form, connect to Elasticsearch running on <http://localhost:9200>
50
50
  without any configuration:
51
51
 
52
- require 'elasticsearch/client'
52
+ require 'elasticsearch/transport'
53
53
 
54
54
  client = Elasticsearch::Client.new
55
55
  response = client.perform_request 'GET', '_cluster/health'
56
56
  # => #<Elasticsearch::Transport::Transport::Response:0x007fc5d506ce38 @status=200, @body={ ... } >
57
57
 
58
+ Full documentation is available at <http://rubydoc.info/gems/elasticsearch-transport>.
59
+
58
60
  ## Configuration
59
61
 
60
62
  The client supports many configurations options for setting up and managing connections,
@@ -78,6 +80,10 @@ Instead of Strings, you can pass host information as an array of Hashes:
78
80
 
79
81
  Elasticsearch::Client.new hosts: [ { host: 'myhost1', port: 8080 }, { host: 'myhost2', port: 8080 } ]
80
82
 
83
+ Scheme, HTTP authentication credentials and URL prefixes are handled automatically:
84
+
85
+ Elasticsearch::Client.new url: 'https://myserver:4430/search'
86
+
81
87
  ### Logging
82
88
 
83
89
  To log requests and responses to standard output with the default logger (an instance of Ruby's {::Logger}) class):
@@ -209,6 +215,17 @@ It's possible to customize the _Curb_ instance by passing a block to the constru
209
215
 
210
216
  client = Elasticsearch::Client.new transport: transport
211
217
 
218
+ Instead of passing the transport to the constructor, you can inject it at run time:
219
+
220
+ faraday_client = Elasticsearch::Transport::Transport::HTTP::Faraday.new \
221
+ hosts: [ { host: '33.33.33.10', port: '443', user: 'USERNAME', password: 'PASSWORD', scheme: 'https' } ],
222
+ & lambda { |f| f.instance_variable_set :@ssl, { verify: false }
223
+ f.options[:ssl] = { verify: false }
224
+ f.adapter :excon }
225
+
226
+ client = Elasticsearch::Client.new
227
+ client.transport = faraday_client
228
+
212
229
  You can write your own transport implementation easily, by including the
213
230
  {Elasticsearch::Transport::Transport::Base} module, implementing the required contract,
214
231
  and passing it to the client as the `transport_class` parameter. All the arguments
data/Rakefile CHANGED
@@ -8,7 +8,19 @@ task :test => 'test:unit'
8
8
 
9
9
  require 'rake/testtask'
10
10
  namespace :test do
11
+ task :ci_reporter do
12
+ ENV['CI_REPORTS'] ||= 'tmp/reports'
13
+ if defined?(RUBY_VERSION) && RUBY_VERSION < '1.9'
14
+ require 'ci/reporter/rake/test_unit'
15
+ Rake::Task['ci:setup:testunit'].invoke
16
+ else
17
+ require 'ci/reporter/rake/minitest'
18
+ Rake::Task['ci:setup:minitest'].invoke
19
+ end
20
+ end
21
+
11
22
  Rake::TestTask.new(:unit) do |test|
23
+ Rake::Task['test:ci_reporter'].invoke if ENV['CI']
12
24
  test.libs << 'lib' << 'test'
13
25
  test.test_files = FileList["test/unit/**/*_test.rb"]
14
26
  # test.verbose = true
@@ -16,16 +28,19 @@ namespace :test do
16
28
  end
17
29
 
18
30
  Rake::TestTask.new(:integration) do |test|
31
+ Rake::Task['test:ci_reporter'].invoke if ENV['CI']
19
32
  test.libs << 'lib' << 'test'
20
33
  test.test_files = FileList["test/integration/**/*_test.rb"]
21
34
  end
22
35
 
23
36
  Rake::TestTask.new(:all) do |test|
37
+ Rake::Task['test:ci_reporter'].invoke if ENV['CI']
24
38
  test.libs << 'lib' << 'test'
25
39
  test.test_files = FileList["test/unit/**/*_test.rb", "test/integration/**/*_test.rb"]
26
40
  end
27
41
 
28
42
  Rake::TestTask.new(:profile) do |test|
43
+ Rake::Task['test:ci_reporter'].invoke if ENV['CI']
29
44
  test.libs << 'lib' << 'test'
30
45
  test.test_files = FileList["test/profile/**/*_test.rb"]
31
46
  end
@@ -35,15 +35,23 @@ Gem::Specification.new do |s|
35
35
  s.add_development_dependency "turn"
36
36
  s.add_development_dependency "yard"
37
37
  s.add_development_dependency "ruby-prof"
38
+ s.add_development_dependency "pry"
39
+ s.add_development_dependency "ci_reporter"
38
40
 
39
41
  # Gems for testing integrations
40
42
  s.add_development_dependency "curb"
41
43
  s.add_development_dependency "typhoeus"
42
44
 
45
+ # Prevent unit test failures on Ruby 1.8
46
+ if defined?(RUBY_VERSION) && RUBY_VERSION < '1.9'
47
+ s.add_development_dependency "test-unit", '~> 2'
48
+ end
49
+
43
50
  if defined?(RUBY_VERSION) && RUBY_VERSION > '1.9'
44
51
  s.add_development_dependency "simplecov"
45
52
  s.add_development_dependency "cane"
46
53
  s.add_development_dependency "require-prof"
54
+ s.add_development_dependency "coveralls"
47
55
  end
48
56
 
49
57
  s.description = <<-DESC.gsub(/^ /, '')
@@ -105,13 +105,19 @@ module Elasticsearch
105
105
  hosts = hosts_config.map do |host|
106
106
  case host
107
107
  when String
108
- # TODO: Handle protocol?
109
- host, port = host.split(':')
110
- { :host => host, :port => port }
108
+ if host =~ /^[a-z]+\:\/\//
109
+ uri = URI.parse(host)
110
+ { :scheme => uri.scheme, :user => uri.user, :password => uri.password, :host => uri.host, :path => uri.path, :port => uri.port.to_s }
111
+ else
112
+ host, port = host.split(':')
113
+ { :host => host, :port => port }
114
+ end
115
+ when URI
116
+ { :scheme => host.scheme, :user => host.user, :password => host.password, :host => host.host, :path => host.path, :port => host.port.to_s }
111
117
  when Hash
112
118
  host
113
119
  else
114
- raise ArgumentError, "Please pass host as a String or Hash, #{host.class} given."
120
+ raise ArgumentError, "Please pass host as a String, URI or Hash -- #{host.class} given."
115
121
  end
116
122
  end
117
123
 
@@ -27,11 +27,6 @@ module Elasticsearch
27
27
  def start(arguments={})
28
28
  arguments[:command] = ENV['TEST_CLUSTER_COMMAND'] || 'elasticsearch'
29
29
 
30
- unless system "which #{arguments[:command]} > /dev/null 2>&1"
31
- STDERR.puts ANSI.red("[ERROR] Elasticsearch can't be started, is it installed? Run: $ which elasticsearch"), ''
32
- abort
33
- end
34
-
35
30
  @@number_of_nodes = arguments[:count] if arguments[:count]
36
31
 
37
32
  arguments[:port] = (ENV['TEST_CLUSTER_PORT'] || 9250).to_i
@@ -139,6 +139,19 @@ module Elasticsearch
139
139
  o = o.is_a?(String) ? o : serializer.dump(o, options)
140
140
  end
141
141
 
142
+ # Returns a full URL based on information from host
143
+ #
144
+ # @param host [Hash] Host configuration passed in from {Client}
145
+ #
146
+ # @api private
147
+ def __full_url(host)
148
+ url = "#{host[:protocol]}://"
149
+ url += "#{host[:user]}:#{host[:password]}@" if host[:user]
150
+ url += "#{host[:host]}:#{host[:port]}"
151
+ url += "#{host[:path]}" if host[:path]
152
+ url
153
+ end
154
+
142
155
  # Performs a request to Elasticsearch, while handling logging, tracing, marking dead connections,
143
156
  # retrying the request and reloading the connections.
144
157
  #
@@ -36,7 +36,11 @@ module Elasticsearch
36
36
  # @return [String]
37
37
  #
38
38
  def full_url(path, params={})
39
- "#{host[:protocol]}://#{host[:host]}:#{host[:port]}/#{full_path(path, params)}"
39
+ url = "#{host[:protocol]}://"
40
+ url += "#{host[:user]}:#{host[:password]}@" if host[:user]
41
+ url += "#{host[:host]}:#{host[:port]}"
42
+ url += "#{host[:path]}" if host[:path]
43
+ url += "/#{full_path(path, params)}"
40
44
  end
41
45
 
42
46
  # Returns the complete endpoint path with serialized parameters.
@@ -20,15 +20,14 @@ module Elasticsearch
20
20
  connection.connection.url = url
21
21
 
22
22
  case method
23
- when 'HEAD', 'GET' then connection.connection.http method.downcase.to_sym
24
- when 'PUT' then connection.connection.http_put serializer.dump(body)
25
- when 'DELETE' then connection.connection.http_delete
26
- when 'POST'
27
- connection.connection.post_body = __convert_to_json(body) if body
28
- connection.connection.http_post
23
+ when 'HEAD'
24
+ when 'GET', 'POST', 'PUT', 'DELETE'
25
+ connection.connection.put_data = __convert_to_json(body) if body
29
26
  else raise ArgumentError, "Unsupported HTTP method: #{method}"
30
27
  end
31
28
 
29
+ connection.connection.http(method.to_sym)
30
+
32
31
  Response.new connection.connection.response_code, connection.connection.body_str
33
32
  end
34
33
  end
@@ -40,13 +39,19 @@ module Elasticsearch
40
39
  def __build_connections
41
40
  Connections::Collection.new \
42
41
  :connections => hosts.map { |host|
43
- host[:protocol] ||= DEFAULT_PROTOCOL
42
+ host[:protocol] = host[:scheme] || DEFAULT_PROTOCOL
44
43
  host[:port] ||= DEFAULT_PORT
45
44
 
46
45
  client = ::Curl::Easy.new
47
46
  client.resolve_mode = :ipv4
48
- client.headers = {'Content-Type' => 'application/json'}
49
- client.url = "#{host[:protocol]}://#{host[:host]}:#{host[:port]}"
47
+ client.headers = {'User-Agent' => "Curb #{Curl::CURB_VERSION}", 'Content-Type' => 'application/json' }
48
+ client.url = __full_url(host)
49
+
50
+ if host[:user]
51
+ client.http_auth_types = host[:auth_type] || :basic
52
+ client.username = host[:user]
53
+ client.password = host[:password]
54
+ end
50
55
 
51
56
  client.instance_eval &@block if @block
52
57
 
@@ -33,9 +33,9 @@ module Elasticsearch
33
33
  def __build_connections
34
34
  Connections::Collection.new \
35
35
  :connections => hosts.map { |host|
36
- host[:protocol] ||= DEFAULT_PROTOCOL
36
+ host[:protocol] = host[:scheme] || DEFAULT_PROTOCOL
37
37
  host[:port] ||= DEFAULT_PORT
38
- url = "#{host[:protocol]}://#{host[:host]}:#{host[:port]}"
38
+ url = __full_url(host)
39
39
 
40
40
  Connections::Connection.new \
41
41
  :host => host,
@@ -1,5 +1,5 @@
1
1
  module Elasticsearch
2
2
  module Transport
3
- VERSION = "0.4.0"
3
+ VERSION = "0.4.1"
4
4
  end
5
5
  end
data/test/test_helper.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  RUBY_1_8 = defined?(RUBY_VERSION) && RUBY_VERSION < '1.9'
2
2
 
3
- if RUBY_1_8
3
+ if RUBY_1_8 and not ENV['BUNDLE_GEMFILE']
4
4
  require 'rubygems'
5
5
  gem 'test-unit'
6
6
  end
@@ -19,7 +19,7 @@ require 'mocha/setup'
19
19
  require 'ansi/code'
20
20
  require 'turn' unless ENV["TM_FILEPATH"] || ENV["NOTURN"] || RUBY_1_8
21
21
 
22
- require 'test_extensions'
22
+ require File.expand_path('../test_extensions', __FILE__)
23
23
 
24
24
  require 'require-prof' if ENV["REQUIRE_PROF"]
25
25
  require 'elasticsearch-transport'
@@ -66,30 +66,83 @@ class Elasticsearch::Transport::ClientTest < Test::Unit::TestCase
66
66
 
67
67
  context "extracting hosts" do
68
68
  should "handle defaults" do
69
- assert_equal [ {:host => 'localhost', :port => nil} ], @client.__extract_hosts
69
+ hosts = @client.__extract_hosts
70
+
71
+ assert_equal 'localhost', hosts[0][:host]
72
+ assert_nil hosts[0][:port]
70
73
  end
71
74
 
72
75
  should "extract from string" do
73
- assert_equal [ {:host => 'myhost', :port => nil} ], @client.__extract_hosts( 'myhost' )
76
+ hosts = @client.__extract_hosts 'myhost'
77
+
78
+ assert_equal 'myhost', hosts[0][:host]
79
+ assert_nil hosts[0][:port]
74
80
  end
75
81
 
76
82
  should "extract from array" do
77
- assert_equal [ {:host => 'myhost', :port => nil} ], @client.__extract_hosts( ['myhost'] )
83
+ hosts = @client.__extract_hosts ['myhost']
84
+
85
+ assert_equal 'myhost', hosts[0][:host]
78
86
  end
79
87
 
80
88
  should "extract from array with multiple hosts" do
81
- assert_equal [ {:host => 'host1', :port => nil}, {:host => 'host2', :port => nil} ],
82
- @client.__extract_hosts( ['host1', 'host2'] )
89
+ hosts = @client.__extract_hosts ['host1', 'host2']
90
+
91
+ assert_equal 'host1', hosts[0][:host]
92
+ assert_equal 'host2', hosts[1][:host]
83
93
  end
84
94
 
85
95
  should "extract from array with ports" do
86
- assert_equal [ {:host => 'host1', :port => '1000'}, {:host => 'host2', :port => '2000'} ],
87
- @client.__extract_hosts( ['host1:1000', 'host2:2000'] )
96
+ hosts = @client.__extract_hosts ['host1:1000', 'host2:2000']
97
+
98
+ assert_equal 'host1', hosts[0][:host]
99
+ assert_equal '1000', hosts[0][:port]
100
+
101
+ assert_equal 'host2', hosts[1][:host]
102
+ assert_equal '2000', hosts[1][:port]
103
+ end
104
+
105
+ should "extract path" do
106
+ hosts = @client.__extract_hosts 'https://myhost:8080/api'
107
+
108
+ assert_equal '/api', hosts[0][:path]
109
+ end
110
+
111
+ should "extract scheme (protocol)" do
112
+ hosts = @client.__extract_hosts 'https://myhost:8080'
113
+
114
+ assert_equal 'https', hosts[0][:scheme]
115
+ assert_equal 'myhost', hosts[0][:host]
116
+ assert_equal '8080', hosts[0][:port]
117
+ end
118
+
119
+ should "extract credentials" do
120
+ hosts = @client.__extract_hosts 'http://USERNAME:PASSWORD@myhost:8080'
121
+
122
+ assert_equal 'http', hosts[0][:scheme]
123
+ assert_equal 'USERNAME', hosts[0][:user]
124
+ assert_equal 'PASSWORD', hosts[0][:password]
125
+ assert_equal 'myhost', hosts[0][:host]
126
+ assert_equal '8080', hosts[0][:port]
88
127
  end
89
128
 
90
129
  should "pass Hashes over" do
91
- assert_equal [ {:host => 'myhost', :port => '1000'} ],
92
- @client.__extract_hosts( [{:host => 'myhost', :port => '1000'}] )
130
+ hosts = @client.__extract_hosts [{:host => 'myhost', :port => '1000', :foo => 'bar'}]
131
+
132
+ assert_equal 'myhost', hosts[0][:host]
133
+ assert_equal '1000', hosts[0][:port]
134
+ assert_equal 'bar', hosts[0][:foo]
135
+ end
136
+
137
+ should "use URL instance" do
138
+ require 'uri'
139
+ hosts = @client.__extract_hosts URI.parse('https://USERNAME:PASSWORD@myhost:4430')
140
+
141
+ assert_equal 'https', hosts[0][:scheme]
142
+ assert_equal 'USERNAME', hosts[0][:user]
143
+ assert_equal 'PASSWORD', hosts[0][:password]
144
+ assert_equal 'myhost', hosts[0][:host]
145
+ assert_equal '4430', hosts[0][:port]
93
146
  end
94
147
 
95
148
  should "raise error for incompatible argument" do
@@ -25,6 +25,16 @@ class Elasticsearch::Transport::Transport::Connections::ConnectionTest < Test::U
25
25
  assert_equal 'http://localhost:9200/_search?foo=bar', c.full_url('_search', {:foo => 'bar'})
26
26
  end
27
27
 
28
+ should "return full url with credentials" do
29
+ c = Connection.new :host => { :protocol => 'http', :user => 'U', :password => 'P', :host => 'localhost', :port => '9200' }
30
+ assert_equal 'http://U:P@localhost:9200/_search?foo=bar', c.full_url('_search', {:foo => 'bar'})
31
+ end
32
+
33
+ should "return full url with path" do
34
+ c = Connection.new :host => { :protocol => 'http', :host => 'localhost', :port => '9200', :path => '/foo' }
35
+ assert_equal 'http://localhost:9200/foo/_search?foo=bar', c.full_url('_search', {:foo => 'bar'})
36
+ end
37
+
28
38
  should "have a string representation" do
29
39
  c = Connection.new :host => 'x'
30
40
  assert_match /host: x/, c.to_s
@@ -57,6 +57,25 @@ class Elasticsearch::Transport::Transport::BaseTest < Test::Unit::TestCase
57
57
  transport = DummyTransport.new :options => { :sniffer_class => DummySniffer }
58
58
  assert_instance_of DummySniffer, transport.sniffer
59
59
  end
60
+
61
+ context "when combining the URL" do
62
+ setup do
63
+ @transport = DummyTransport.new
64
+ @basic_parts = { :protocol => 'http', :host => 'myhost', :port => 8080 }
65
+ end
66
+
67
+ should "combine basic parts" do
68
+ assert_equal 'http://myhost:8080', @transport.__full_url(@basic_parts)
69
+ end
70
+
71
+ should "combine path" do
72
+ assert_equal 'http://myhost:8080/api', @transport.__full_url(@basic_parts.merge :path => '/api')
73
+ end
74
+
75
+ should "combine authentication credentials" do
76
+ assert_equal 'http://U:P@myhost:8080', @transport.__full_url(@basic_parts.merge :user => 'U', :password => 'P')
77
+ end
78
+ end
60
79
  end
61
80
 
62
81
  context "getting a connection" do
@@ -260,7 +279,9 @@ class Elasticsearch::Transport::Transport::BaseTest < Test::Unit::TestCase
260
279
  end
261
280
 
262
281
  should "log the request and response" do
263
- @transport.logger.expects(:info). with "POST localhost:9200/_search?size=1 [status:200, request:0.000s, query:n/a]"
282
+ @transport.logger.expects(:info). with do |line|
283
+ line =~ %r|POST localhost\:9200/_search\?size=1 \[status\:200, request:.*s, query:n/a\]|
284
+ end
264
285
  @transport.logger.expects(:debug). with '> {"foo":"bar"}'
265
286
  @transport.logger.expects(:debug). with '< {"foo":"bar"}'
266
287
 
@@ -14,7 +14,7 @@ class Elasticsearch::Transport::Transport::HTTP::FaradayTest < Test::Unit::TestC
14
14
  assert_equal 1, @transport.hosts.size
15
15
  assert_equal 1, @transport.connections.size
16
16
 
17
- assert_instance_of ::Curl::Easy, @transport.connections.first.connection
17
+ assert_instance_of ::Curl::Easy, @transport.connections.first.connection
18
18
  assert_equal 'http://foobar:1234', @transport.connections.first.connection.url
19
19
  end
20
20
 
@@ -23,23 +23,36 @@ class Elasticsearch::Transport::Transport::HTTP::FaradayTest < Test::Unit::TestC
23
23
  @transport.perform_request 'GET', '/'
24
24
  end
25
25
 
26
+ should "set body for GET request" do
27
+ @transport.connections.first.connection.expects(:put_data=).with('{"foo":"bar"}')
28
+ @transport.connections.first.connection.expects(:http).with(:GET).returns(stub_everything)
29
+ @transport.perform_request 'GET', '/', {}, '{"foo":"bar"}'
30
+ end
31
+
32
+ should "set body for PUT request" do
33
+ @transport.connections.first.connection.expects(:put_data=)
34
+ @transport.connections.first.connection.expects(:http).with(:PUT).returns(stub_everything)
35
+ @transport.perform_request 'PUT', '/', {}, {:foo => 'bar'}
36
+ end
37
+
26
38
  should "serialize the request body" do
27
- @transport.connections.first.connection.expects(:http_post).returns(stub_everything)
39
+ @transport.connections.first.connection.expects(:http).with(:POST).returns(stub_everything)
28
40
  @transport.serializer.expects(:dump)
29
41
  @transport.perform_request 'POST', '/', {}, {:foo => 'bar'}
30
42
  end
31
43
 
32
44
  should "not serialize a String request body" do
33
- @transport.connections.first.connection.expects(:http_post).returns(stub_everything)
45
+ @transport.connections.first.connection.expects(:http).with(:POST).returns(stub_everything)
34
46
  @transport.serializer.expects(:dump).never
35
47
  @transport.perform_request 'POST', '/', {}, '{"foo":"bar"}'
36
48
  end
37
49
 
38
50
  should "handle HTTP methods" do
39
- @transport.connections.first.connection.expects(:http).twice.returns(stub_everything)
40
- @transport.connections.first.connection.expects(:http_put).returns(stub_everything)
41
- @transport.connections.first.connection.expects(:http_post).returns(stub_everything)
42
- @transport.connections.first.connection.expects(:http_delete).returns(stub_everything)
51
+ @transport.connections.first.connection.expects(:http).with(:HEAD).returns(stub_everything)
52
+ @transport.connections.first.connection.expects(:http).with(:GET).returns(stub_everything)
53
+ @transport.connections.first.connection.expects(:http).with(:PUT).returns(stub_everything)
54
+ @transport.connections.first.connection.expects(:http).with(:POST).returns(stub_everything)
55
+ @transport.connections.first.connection.expects(:http).with(:DELETE).returns(stub_everything)
43
56
 
44
57
  %w| HEAD GET PUT POST DELETE |.each { |method| @transport.perform_request method, '/' }
45
58
 
@@ -54,6 +67,12 @@ class Elasticsearch::Transport::Transport::HTTP::FaradayTest < Test::Unit::TestC
54
67
  assert_equal( {"Content-Type"=>"application/json", "User-Agent"=>"myapp-0.0"},
55
68
  transport.connections.first.connection.headers )
56
69
  end
70
+
71
+ should "set the credentials if passed" do
72
+ transport = Curb.new :hosts => [ { :host => 'foobar', :port => 1234, :user => 'foo', :password => 'bar' } ]
73
+ assert_equal 'foo', transport.connections.first.connection.username
74
+ assert_equal 'bar', transport.connections.first.connection.password
75
+ end
57
76
  end
58
77
 
59
78
  end
@@ -17,7 +17,7 @@ class Elasticsearch::Transport::Transport::HTTP::FaradayTest < Test::Unit::TestC
17
17
  assert_equal 1, @transport.connections.size
18
18
 
19
19
  assert_instance_of ::Faraday::Connection, @transport.connections.first.connection
20
- assert_equal 'http://foobar:1234/', @transport.connections.first.connection.url_prefix.to_s
20
+ assert_equal 'http://foobar:1234/', @transport.connections.first.connection.url_prefix.to_s
21
21
  end
22
22
 
23
23
  should "perform the request" do
@@ -68,6 +68,11 @@ class Elasticsearch::Transport::Transport::HTTP::FaradayTest < Test::Unit::TestC
68
68
  handlers = transport.connections.first.connection.instance_variable_get(:@builder).instance_variable_get(:@handlers)
69
69
  assert handlers.include?(::Faraday::Response::Logger), "#{handlers.inspect} does not include <::Faraday::Adapter::Typhoeus>"
70
70
  end
71
+
72
+ should "set the credentials if passed" do
73
+ transport = Faraday.new :hosts => [ { :host => 'foobar', :port => 1234, :user => 'foo', :password => 'bar' } ]
74
+ assert_equal 'Basic Zm9vOmJhcg==', transport.connections.first.connection.headers['Authorization']
75
+ end
71
76
  end
72
77
 
73
78
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: elasticsearch-transport
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.4.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-09-24 00:00:00.000000000 Z
12
+ date: 2013-10-23 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: multi_json
@@ -171,6 +171,38 @@ dependencies:
171
171
  - - ! '>='
172
172
  - !ruby/object:Gem::Version
173
173
  version: '0'
174
+ - !ruby/object:Gem::Dependency
175
+ name: pry
176
+ requirement: !ruby/object:Gem::Requirement
177
+ none: false
178
+ requirements:
179
+ - - ! '>='
180
+ - !ruby/object:Gem::Version
181
+ version: '0'
182
+ type: :development
183
+ prerelease: false
184
+ version_requirements: !ruby/object:Gem::Requirement
185
+ none: false
186
+ requirements:
187
+ - - ! '>='
188
+ - !ruby/object:Gem::Version
189
+ version: '0'
190
+ - !ruby/object:Gem::Dependency
191
+ name: ci_reporter
192
+ requirement: !ruby/object:Gem::Requirement
193
+ none: false
194
+ requirements:
195
+ - - ! '>='
196
+ - !ruby/object:Gem::Version
197
+ version: '0'
198
+ type: :development
199
+ prerelease: false
200
+ version_requirements: !ruby/object:Gem::Requirement
201
+ none: false
202
+ requirements:
203
+ - - ! '>='
204
+ - !ruby/object:Gem::Version
205
+ version: '0'
174
206
  - !ruby/object:Gem::Dependency
175
207
  name: curb
176
208
  requirement: !ruby/object:Gem::Requirement
@@ -251,6 +283,22 @@ dependencies:
251
283
  - - ! '>='
252
284
  - !ruby/object:Gem::Version
253
285
  version: '0'
286
+ - !ruby/object:Gem::Dependency
287
+ name: coveralls
288
+ requirement: !ruby/object:Gem::Requirement
289
+ none: false
290
+ requirements:
291
+ - - ! '>='
292
+ - !ruby/object:Gem::Version
293
+ version: '0'
294
+ type: :development
295
+ prerelease: false
296
+ version_requirements: !ruby/object:Gem::Requirement
297
+ none: false
298
+ requirements:
299
+ - - ! '>='
300
+ - !ruby/object:Gem::Version
301
+ version: '0'
254
302
  description: ! 'Ruby client for Elasticsearch. See the `elasticsearch` gem for full
255
303
  integration.
256
304