github.com/Venafi/vcert/v5@v5.10.2/aruba/features/support/aruba.rb (about)

     1  require 'aruba/cucumber'
     2  require "json_spec/cucumber"
     3  
     4  Aruba.configure do |config|
     5    config.allow_absolute_paths = true
     6  end
     7  
     8  PREFIX_CN = "vcert"
     9  
    10  PLATFORM_TPP = "TPP"
    11  PLATFORM_VAAS = "VaaS" # places already use it as is
    12  PLATFORM_VCP = "VCP"
    13  PLATFORM_FIREFLY = "Firefly"
    14  
    15  PATH_SEPARATOR = "/"
    16  TEMP_PATH = "tmp/aruba"
    17  
    18  KEYSTORE_TYPE_AWS = "AWS"
    19  KEYSTORE_TYPE_AZURE = "AZURE"
    20  KEYSTORE_TYPE_GCP = "GOOGLE"
    21  
    22  GCP_KEYSTORE_ID = ENV["GCP_KEYSTORE_ID"]
    23  GCP_KEYSTORE_NAME = ENV["GCP_KEYSTORE_NAME"]
    24  GCP_PROVIDER_NAME = ENV["GCP_PROVIDER_NAME"]
    25  
    26  AWS_KEYSTORE_ID = ENV["AWS_KEYSTORE_ID"]
    27  AWS_KEYSTORE_NAME = ENV["AWS_KEYSTORE_NAME"]
    28  AWS_PROVIDER_NAME = ENV["AWS_PROVIDER_NAME"]
    29  
    30  AZURE_KEYSTORE_ID = ENV["AZURE_KEYSTORE_ID"]
    31  AZURE_KEYSTORE_NAME = ENV["AZURE_KEYSTORE_NAME"]
    32  AZURE_PROVIDER_NAME = ENV["AZURE_PROVIDER_NAME"]
    33  
    34  DUMMY_PASSWORD = "CyberArkT3stP4ZZC0de%jQX^J=4H"
    35  
    36  def last_json
    37    last_command_started.stdout.to_s
    38  end
    39  
    40  def random_cn
    41    Time.now.to_i.to_s + "-" + (0..4).to_a.map{|a| rand(36).to_s(36)}.join + ".venafi.example.com"
    42  end
    43  
    44  def random_string
    45    Time.now.to_i.to_s + "-" + (0..4).to_a.map{|a| rand(36).to_s(36)}.join
    46  end
    47  
    48  def random_filename
    49    Time.now.to_i.to_s + "-" + (0..6).to_a.map{|a| rand(36).to_s(36)}.join + ".txt"
    50  end
    51  
    52  class Stack
    53    def initialize
    54      @data = []
    55    end
    56  
    57    def push(item)
    58      @data.push(item)
    59    end
    60  
    61    def pop
    62      @data.pop
    63    end
    64  
    65    def peek
    66      @data.last
    67    end
    68  
    69    def empty?
    70      @data.empty?
    71    end
    72  
    73    def size
    74      @data.size
    75    end
    76  end
    77  
    78  def extract_json_from_output(input_string)
    79    stack = Stack.new
    80  
    81    start_index = 0
    82    end_index = 0
    83    popped_item = 0
    84    input_string.each_char.with_index do |char, index|
    85      if char == "{"
    86        stack.push(index)
    87      end
    88      if char == "}"
    89        popped_item = stack.pop
    90      end
    91      if stack.empty?
    92        start_index = popped_item
    93        end_index = index
    94        break
    95      end
    96    end
    97  
    98    if start_index && end_index && start_index < end_index
    99      extracted_substring = input_string[start_index-1 + 1...end_index+1]
   100      return extracted_substring
   101    else
   102      fail(ArgumentError.new("Unabel to get JSON from string: #{input_string}"))
   103    end
   104  end