mirror of
https://github.com/lostisland/faraday.git
synced 2025-10-04 00:02:03 -04:00
The HTTP server is now started in a subprocess, not a thread. Running it in a Ruby thread had all sorts of problems on different Rubies, such as random failures on Rubinius. The new script also avoids starting the HTTP server if not needed, e.g. if filtering arguments have been used to select only the non-adapter tests. The script dumps the server log to stdout if any tests failed on Travis. Avoids auto-starting the debugger because it blocks for input in Rubinius https://travis-ci.org/lostisland/faraday/jobs/5956815
43 lines
1.3 KiB
Ruby
Executable File
43 lines
1.3 KiB
Ruby
Executable File
#!/usr/bin/env ruby
|
|
# Usage: generate_certs
|
|
# Generate test certs for testing Faraday with SSL
|
|
|
|
require 'openssl'
|
|
require 'fileutils'
|
|
|
|
$shell = ARGV.include? '-s'
|
|
|
|
# Adapted from WEBrick::Utils. Skips cert extensions so it
|
|
# can be used as a CA bundle
|
|
def create_self_signed_cert(bits, cn, comment)
|
|
rsa = OpenSSL::PKey::RSA.new(bits)
|
|
cert = OpenSSL::X509::Certificate.new
|
|
cert.version = 2
|
|
cert.serial = 1
|
|
name = OpenSSL::X509::Name.new(cn)
|
|
cert.subject = name
|
|
cert.issuer = name
|
|
cert.not_before = Time.now
|
|
cert.not_after = Time.now + (365*24*60*60)
|
|
cert.public_key = rsa.public_key
|
|
cert.sign(rsa, OpenSSL::Digest::SHA1.new)
|
|
return [cert, rsa]
|
|
end
|
|
|
|
def write(file, contents, env_var)
|
|
FileUtils.mkdir_p(File.dirname(file))
|
|
File.open(file, 'w') {|f| f.puts(contents) }
|
|
puts %(export #{env_var}="#{file}") if $shell
|
|
end
|
|
|
|
|
|
# One cert / CA for ease of testing when ignoring verification
|
|
cert, key = create_self_signed_cert(1024, [['CN', 'localhost']], 'Faraday Test CA')
|
|
write 'tmp/faraday-cert.key', key, 'SSL_KEY'
|
|
write 'tmp/faraday-cert.crt', cert, 'SSL_FILE'
|
|
|
|
# And a second CA to prove that verification can fail
|
|
cert, key = create_self_signed_cert(1024, [['CN', 'real-ca.com']], 'A different CA')
|
|
write 'tmp/faraday-different-ca-cert.key', key, 'SSL_KEY_ALT'
|
|
write 'tmp/faraday-different-ca-cert.crt', cert, 'SSL_FILE_ALT'
|