Sha256: f1c7a3329b8d1167cd3f75bfb30268dbee9809cadfe72eb73ac7b8a7190c4f51

Contents?: true

Size: 1.51 KB

Versions: 125

Compression:

Stored size: 1.51 KB

Contents

module KnapsackPro
  module Crypto
    class Decryptor
      class TooManyEncryptedTestFilesError < StandardError; end

      def self.call(test_files, encrypted_test_files)
        if KnapsackPro::Config::Env.test_files_encrypted?
          new(test_files, encrypted_test_files).call
        else
          # those test files are not encrypted
          encrypted_test_files
        end
      end

      def initialize(test_files, encrypted_test_files)
        @test_files = test_files
        @encrypted_test_files = encrypted_test_files
      end

      def call
        decrypted_test_files = []

        test_files.each do |test_file|
          encrypted_path = Digestor.salt_hexdigest(test_file['path'])
          encrypted_test_file = find_encrypted_test_file(encrypted_path)
          next if encrypted_test_file.nil?

          decrypted_test_file = encrypted_test_file.dup
          decrypted_test_file['path'] = test_file['path']

          decrypted_test_files << decrypted_test_file
        end

        decrypted_test_files
      end

      private

      attr_reader :test_files,
        :encrypted_test_files

      def find_encrypted_test_file(encrypted_path)
        test_files = encrypted_test_files.select do |t|
          t['path'] == encrypted_path
        end

        if test_files.size == 1
          test_files.first
        elsif test_files.size > 1
          raise TooManyEncryptedTestFilesError.new("Found more than one encrypted test file for encrypted path #{encrypted_path}")
        end
      end
    end
  end
end

Version data entries

125 entries across 125 versions & 1 rubygems

Version Path
knapsack_pro-1.11.0 lib/knapsack_pro/crypto/decryptor.rb
knapsack_pro-1.10.1 lib/knapsack_pro/crypto/decryptor.rb
knapsack_pro-1.10.0 lib/knapsack_pro/crypto/decryptor.rb
knapsack_pro-1.9.0 lib/knapsack_pro/crypto/decryptor.rb
knapsack_pro-1.8.0 lib/knapsack_pro/crypto/decryptor.rb
knapsack_pro-1.7.0 lib/knapsack_pro/crypto/decryptor.rb
knapsack_pro-1.6.0 lib/knapsack_pro/crypto/decryptor.rb
knapsack_pro-1.5.0 lib/knapsack_pro/crypto/decryptor.rb
knapsack_pro-1.4.0 lib/knapsack_pro/crypto/decryptor.rb
knapsack_pro-1.3.0 lib/knapsack_pro/crypto/decryptor.rb
knapsack_pro-1.2.1 lib/knapsack_pro/crypto/decryptor.rb
knapsack_pro-1.2.0 lib/knapsack_pro/crypto/decryptor.rb
knapsack_pro-1.1.0 lib/knapsack_pro/crypto/decryptor.rb
knapsack_pro-1.0.2 lib/knapsack_pro/crypto/decryptor.rb
knapsack_pro-1.0.1 lib/knapsack_pro/crypto/decryptor.rb
knapsack_pro-1.0.0 lib/knapsack_pro/crypto/decryptor.rb
knapsack_pro-0.57.0 lib/knapsack_pro/crypto/decryptor.rb
knapsack_pro-0.56.0 lib/knapsack_pro/crypto/decryptor.rb
knapsack_pro-0.55.2 lib/knapsack_pro/crypto/decryptor.rb
knapsack_pro-0.55.1 lib/knapsack_pro/crypto/decryptor.rb