Skip to content

Commit 98caafd

Browse files
committed
[test] revisit integration https outbound tests
1 parent a8e7b26 commit 98caafd

File tree

2 files changed

+73
-23
lines changed

2 files changed

+73
-23
lines changed

src/test/integration/Gemfile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,4 @@ source 'https://rubygems.org'
33
gem 'httpclient', :require => false
44
gem 'trocla', '~> 0.2.3', :require => false
55
gem 'faraday', '< 2.0', :require => false
6+
gem 'manticore', '>= 0.8.0', :require => false

src/test/integration/ssl_test.rb

Lines changed: 72 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -27,56 +27,104 @@ def test_connect_http_client_2
2727
#assert res.code < 400
2828
end
2929

30-
def test_connect_net_http_1
31-
require 'uri'; require 'net/https'
32-
30+
def test_connect_net_http_base; require 'uri'; require 'net/https'
3331
puts "\n"
3432
puts "------------------------------------------------------------"
35-
puts "-- Net::HTTP.new ... 'https://rubygems.org'"
33+
puts "-- Net::HTTP.new '#{url = 'https://rubygems.org'}'"
3634
puts "------------------------------------------------------------"
3735

38-
uri = URI.parse('https://rubygems.org')
39-
36+
uri = URI.parse(url)
4037
http = Net::HTTP.new(uri.host, uri.port)
4138
http.use_ssl = true
4239
res = http.get('/')
43-
assert_equal '200', res.code
40+
#assert_equal '200', res.code
4441
end
4542

46-
def test_connect_net_http_2
47-
require 'uri'; require 'net/https'
48-
43+
def test_connect_net_http_tls12; require 'uri'; require 'net/https'
4944
puts "\n"
5045
puts "------------------------------------------------------------"
51-
puts "-- Net::HTTP.new ... 'https://fancyssl.hboeck.de'"
46+
puts "-- Net::HTTP.new '#{url = 'https://fancyssl.hboeck.de'}'"
5247
puts "------------------------------------------------------------"
5348

54-
uri = URI.parse('https://fancyssl.hboeck.de/')
55-
49+
uri = URI.parse(url)
5650
http = Net::HTTP.new(uri.host, uri.port)
5751
http.use_ssl = true
5852
http.ssl_version = :TLSv1_2
5953
res = http.get('/')
60-
assert_equal Net::HTTPOK, res.class
54+
#assert_equal Net::HTTPOK, res.class
6155
end
6256

63-
def test_faraday_get
64-
require 'faraday'
65-
57+
# TODO https://www.howsmyssl.com/a/check
58+
def test_connect_net_http_tls13; require 'uri'; require 'net/https'
6659
puts "\n"
6760
puts "------------------------------------------------------------"
68-
puts "-- Faraday.get ... 'http://httpbingo.org/ip'"
61+
puts "-- Net::HTTP.new '#{url = 'https://check-tls.akamai.io/v1/tlsinfo.json'}'"
6962
puts "------------------------------------------------------------"
7063

71-
res = Faraday.get('https://httpbingo.org/ip')
72-
assert_equal 200, res.status
64+
uri = URI.parse(url)
65+
http = Net::HTTP.new(uri.host, uri.port)
66+
http.use_ssl = true
67+
http.ssl_version = :TLSv1_3
68+
res = http.get'/', 'Accept' => 'application/json', 'User-Agent' => ''
69+
#assert_equal '200', res.code
7370
puts res.body
7471
end
7572

76-
def test_connect_ssl_minmax_version
77-
require 'openssl'
78-
require 'socket'
73+
# Pure Java TLS client - using HttpClient 4.x
74+
def test_base_line_net_http_tls13; require 'manticore'
75+
url = 'https://check-tls.akamai.io/v1/tlsinfo.json'
76+
ssl_config = {
77+
verify: :strict,
78+
protocols: ['TLSv1.3']
79+
}
80+
client = Manticore::Client.new(ssl: ssl_config)
81+
response = client.get(url, headers: {}).call
82+
assert response.code < 400
83+
puts response.body
84+
# NOTE: ['TLSv1.3'] fails on older Java 8/11 versions, despite supporting
85+
# - TLS_AES_128_GCM_SHA256
86+
# - TLS_AES_128_GCM_SHA256
87+
#
88+
# "tls_sni_status": "present",
89+
# "tls_version": "tls1.3",
90+
# "tls_sni_value": "check-tls.akamai.io",
91+
# "tls_cipher_name": "TLS_AES_256_GCM_SHA384",
92+
# "output_version": "0.1.21",
93+
# "timestamp": 1643716169
94+
#
95+
# "tls_sni_status": "present",
96+
# "tls_version": "tls1.2",
97+
# "tls_sni_value": "check-tls.akamai.io",
98+
# "tls_cipher_name": "ECDHE-RSA-AES256-GCM-SHA384",
99+
# "client_ip": "86.49.15.48",
100+
# "output_version": "0.1.21",
101+
end if defined? JRUBY_VERSION
102+
103+
def test_connect_net_http_other; require 'uri'; require 'net/https'
104+
puts "\n"
105+
puts "------------------------------------------------------------"
106+
puts "-- Net::HTTP.new '#{url = 'https://s3.fr-par.scw.cloud'}'"
107+
puts "------------------------------------------------------------"
79108

109+
uri = URI.parse(url)
110+
http = Net::HTTP.new(uri.host, uri.port)
111+
http.use_ssl = true
112+
res = http.get('/')
113+
#assert_equal Net::HTTPOK, res.class
114+
end
115+
116+
def test_faraday_get; require 'faraday'
117+
puts "\n"
118+
puts "------------------------------------------------------------"
119+
puts "-- Faraday.get '#{url = 'https://httpbingo.org/ip'}'"
120+
puts "------------------------------------------------------------"
121+
122+
res = Faraday.get(url)
123+
#assert_equal 200, res.status
124+
puts res.body
125+
end
126+
127+
def test_connect_ssl_minmax_version; require 'openssl'; require 'socket'
80128
puts "\n"
81129
puts "------------------------------------------------------------"
82130
puts "-- SSL min/max version ... 'https://google.co.uk'"
@@ -95,4 +143,5 @@ def test_connect_ssl_minmax_version
95143
ssl.sysclose
96144
end
97145
end
146+
98147
end

0 commit comments

Comments
 (0)