Page MenuHomeSoftware Heritage

spec_helper_acceptance_local.rb
No OneTemporary

spec_helper_acceptance_local.rb

UNSUPPORTED_PLATFORMS = [].freeze
require 'singleton'
class LitmusHelper
include Singleton
include PuppetLitmus
end
def keytool_command(arguments)
# The @keytool global does not exist right now as the function is defined.
# When the tests call the function, RSpec.shared_context below will have run
# by then and the variable will exist.
# os[:family] == 'windows' ? interpolate_powershell("& '#{@keytool_path}keytool'") : "'#{@keytool_path}keytool'"
if os[:family] == 'windows'
interpolate_powershell("& '#{@keytool_path}keytool' #{arguments}")
else
"'#{@keytool_path}keytool' #{arguments}"
end
end
def interpolate_powershell(command)
"powershell.exe -NoProfile -Nologo -Command \"#{command}\""
end
def remote_windows_temp_dir
@remote_windows_temp_dir ||= LitmusHelper.instance.run_shell(interpolate_powershell('echo "$ENV:TEMP"')).stdout.strip.tr('\\', '/') + '/'
@remote_windows_temp_dir
end
def remote_file_exists?(filename)
if os[:family] == 'windows'
LitmusHelper.instance.run_shell(interpolate_powershell("Get-Item -Path '#{filename}' -ErrorAction SilentlyContinue"), expect_failures: true)
else
LitmusHelper.instance.run_shell("test -f '#{filename}'", expect_failures: true)
end
end
def temp_dir
@temp_dir ||= (os[:family] == 'windows') ? remote_windows_temp_dir : '/tmp/'
@temp_dir
end
def create_and_upload_certs
cert_files = ['privkey.pem', 'ca.pem', 'ca.der', 'ca2.pem', 'chain.pem', 'chain2.pem', 'leafkey.pem', 'leaf.pem', 'leafchain.pem', 'leafchain2.pem', 'leaf.p12', 'leaf2.p12']
recreate_certs = false
cert_files.each do |cert_file|
recreate_certs = true unless File.file?("spec/acceptance/certs/#{cert_file}")
end
create_certs if recreate_certs
cert_files.each do |cert_file|
if ENV['TARGET_HOST'].nil? || ENV['TARGET_HOST'] == 'localhost'
command = "cp spec\\acceptance\\certs\\#{cert_file} #{ENV['TEMP']}\\#{cert_file}"
command = interpolate_powershell(command) if os[:family] == 'windows'
Open3.capture3(command)
else
LitmusHelper.instance.bolt_upload_file("spec/acceptance/certs/#{cert_file}", "#{temp_dir}#{cert_file}")
end
end
end
def create_certs
require 'openssl'
key = OpenSSL::PKey::RSA.new 1024
ca = OpenSSL::X509::Certificate.new
ca.serial = 1
ca.public_key = key.public_key
subj = '/CN=Test CA/ST=Denial/L=Springfield/O=Dis/CN=www.example.com'
ca.subject = OpenSSL::X509::Name.parse subj
ca.issuer = ca.subject
ca.not_before = Time.now
ca.not_after = ca.not_before + 360
ca.sign(key, OpenSSL::Digest::SHA256.new)
key2 = OpenSSL::PKey::RSA.new 1024
ca2 = OpenSSL::X509::Certificate.new
ca2.serial = 2
ca2.public_key = key2.public_key
subj2 = '/CN=Test CA/ST=Denial/L=Springfield/O=Dis/CN=www.example.com'
ca2.subject = OpenSSL::X509::Name.parse subj2
ca2.issuer = ca2.subject
ca2.not_before = Time.now
ca2.not_after = ca2.not_before + 360
ca2.sign(key2, OpenSSL::Digest::SHA256.new)
key_chain = OpenSSL::PKey::RSA.new 1024
chain = OpenSSL::X509::Certificate.new
chain.serial = 3
chain.public_key = key_chain.public_key
chain_subj = '/CN=Chain CA/ST=Denial/L=Springfield/O=Dis/CN=www.example.net'
chain.subject = OpenSSL::X509::Name.parse chain_subj
chain.issuer = ca.subject
chain.not_before = Time.now
chain.not_after = chain.not_before + 360
chain.sign(key, OpenSSL::Digest::SHA256.new)
key_chain2 = OpenSSL::PKey::RSA.new 1024
chain2 = OpenSSL::X509::Certificate.new
chain2.serial = 4
chain2.public_key = key_chain2.public_key
chain2_subj = '/CN=Chain CA 2/ST=Denial/L=Springfield/O=Dis/CN=www.example.net'
chain2.subject = OpenSSL::X509::Name.parse chain2_subj
chain2.issuer = chain.subject
chain2.not_before = Time.now
chain2.not_after = chain2.not_before + 360
chain2.sign(key_chain, OpenSSL::Digest::SHA256.new)
key_leaf = OpenSSL::PKey::RSA.new 1024
leaf = OpenSSL::X509::Certificate.new
leaf.serial = 5
leaf.public_key = key_leaf.public_key
leaf_subj = '/CN=Leaf Cert/ST=Denial/L=Springfield/O=Dis/CN=www.example.net'
leaf.subject = OpenSSL::X509::Name.parse leaf_subj
leaf.issuer = chain2.subject
leaf.not_before = Time.now
leaf.not_after = leaf.not_before + 360
leaf.sign(key_chain2, OpenSSL::Digest::SHA256.new)
chain3 = OpenSSL::X509::Certificate.new
chain3.serial = 6
chain3.public_key = key_chain2.public_key
chain3.subject = OpenSSL::X509::Name.parse chain2_subj
chain3.issuer = ca.subject
chain3.not_before = Time.now
chain3.not_after = chain3.not_before + 360
chain3.sign(key, OpenSSL::Digest::SHA256.new)
pkcs12 = OpenSSL::PKCS12.create('pkcs12pass', 'Leaf Cert', key_leaf, leaf, [chain2, chain])
pkcs12_chain3 = OpenSSL::PKCS12.create('pkcs12pass', 'Leaf Cert', key_leaf, leaf, [chain3])
create_cert_file('privkey.pem', key.to_pem)
create_cert_file('ca.pem', ca.to_pem)
create_cert_file('ca.der', ca.to_der)
create_cert_file('ca2.pem', ca2.to_pem)
create_cert_file('chain.pem', chain2.to_pem + chain.to_pem)
create_cert_file('chain2.pem', chain3.to_pem)
create_cert_file('leafkey.pem', key_leaf.to_pem)
create_cert_file('leaf.pem', leaf.to_pem)
create_cert_file('leafchain.pem', leaf.to_pem + chain2.to_pem + chain.to_pem)
create_cert_file('leafchain2.pem', leaf.to_pem + chain3.to_pem)
create_cert_file('leaf.p12', pkcs12.to_der)
create_cert_file('leaf2.p12', pkcs12_chain3.to_der)
end
def create_cert_file(cert_name, contents)
return if File.file?("spec/acceptance/certs/#{cert_name}")
out_file = File.new("spec/acceptance/certs/#{cert_name}", 'w+')
out_file.puts(contents)
out_file.close
end
RSpec.configure do |c|
c.before :suite do
create_and_upload_certs
# install java if windows
if os[:family] == 'windows'
LitmusHelper.instance.run_shell('puppet module install puppetlabs-chocolatey')
pp_one = <<-MANIFEST
include chocolatey
package { 'jdk8':
ensure => '8.0.211',
provider => 'chocolatey'
}
MANIFEST
LitmusHelper.instance.apply_manifest(pp_one)
else
LitmusHelper.instance.run_shell('puppet module install puppetlabs-java')
pp_two = <<-MANIFEST
class { 'java': }
MANIFEST
LitmusHelper.instance.apply_manifest(pp_two)
end
end
end
RSpec.shared_context 'common variables' do
before(:each) do
java_major, java_minor = (ENV['JAVA_VERSION'] || '8u211').split('u')
@ensure_ks = 'latest'
@resource_path = 'undef'
@target_dir = '/etc/'
@temp_dir = temp_dir
case os[:family]
when 'solaris'
@keytool_path = '/usr/java/bin/'
@resource_path = "['/usr/java/bin/','/opt/puppet/bin/']"
when 'aix'
@keytool_path = '/usr/java6/bin/'
@resource_path = "['/usr/java6/bin/','/usr/bin/']"
when 'windows'
@ensure_ks = 'present'
@keytool_path = "C:/Program Files/Java/jdk1.#{java_major}.0_#{java_minor}/bin/"
@resource_path = "['C:/Program Files/Java/jdk1.#{java_major}.0_#{java_minor}/bin/']"
when 'ubuntu'
@ensure_ks = 'present' if os[:release] == '20.04'
end
end
end

File Metadata

Mime Type
text/x-ruby
Expires
Jun 4 2025, 7:08 PM (10 w, 3 h ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3299486

Event Timeline