Sha256: 383ee95333cd633073942c8c3190536d6cb0436470dc380e9b277e0ed335d5ce

Contents?: true

Size: 1.84 KB

Versions: 34

Compression:

Stored size: 1.84 KB

Contents

RSpec.describe Metasploit::Credential::Importer::Multi do

  include_context 'metasploit_credential_importer_zip_file'

  UNSUPPORTED_FILE = 'bad.txt'
  INVALID_CSV_FILE = 'malformed.csv'
  VALID_CSV_FILE   = 'well-formed.csv'

  let(:import_origin){ FactoryBot.create :metasploit_credential_origin_import }
  let(:supported_file){ FactoryBot.generate :metasploit_credential_importer_zip_file }
  let(:unsupported_file){ File.open("#{Dir.tmpdir}/#{UNSUPPORTED_FILE}", 'wb') }

  let(:invalid_csv){ FactoryBot.generate(:malformed_csv)}
  let(:valid_csv){ FactoryBot.generate(:well_formed_csv_compliant_header)}

  let(:valid_csv_file) do
    File.open("#{Dir.tmpdir}/#{VALID_CSV_FILE}", 'w') do |file|
      file << valid_csv.read
    end
  end

  describe "validation" do
    describe "when given a file that is not a zip or a CSV" do
      subject(:multi_importer){ Metasploit::Credential::Importer::Multi.new(input: File.open(unsupported_file), origin: import_origin)}

      it { is_expected.not_to be_valid }
    end

    context "when given zip file" do
      subject(:multi_importer){ Metasploit::Credential::Importer::Multi.new(input: File.open(supported_file), origin: import_origin)}

      it { is_expected.to be_valid }
    end

    describe "#csv?" do
      describe 'when the file can be opened as a CSV' do
        subject(:multi_importer){ Metasploit::Credential::Importer::Multi.new(input: File.open(valid_csv_file), origin: import_origin)}

        it 'should return true' do
          expect(multi_importer.csv?).to eq(true)
        end
      end

      describe 'when the file is not a well-formed CSV' do
        subject(:multi_importer){ Metasploit::Credential::Importer::Multi.new(input: File.open(unsupported_file), origin: import_origin)}

        it 'should return true' do
          expect(multi_importer.csv?).to eq(false)
        end
      end
    end
  end
end

Version data entries

34 entries across 34 versions & 1 rubygems

Version Path
metasploit-credential-6.0.12 spec/lib/metasploit/credential/importer/multi_spec.rb
metasploit-credential-6.0.11 spec/lib/metasploit/credential/importer/multi_spec.rb
metasploit-credential-6.0.10 spec/lib/metasploit/credential/importer/multi_spec.rb
metasploit-credential-6.0.9 spec/lib/metasploit/credential/importer/multi_spec.rb
metasploit-credential-6.0.8 spec/lib/metasploit/credential/importer/multi_spec.rb
metasploit-credential-6.0.7 spec/lib/metasploit/credential/importer/multi_spec.rb
metasploit-credential-6.0.6 spec/lib/metasploit/credential/importer/multi_spec.rb
metasploit-credential-6.0.5 spec/lib/metasploit/credential/importer/multi_spec.rb
metasploit-credential-6.0.4 spec/lib/metasploit/credential/importer/multi_spec.rb
metasploit-credential-6.0.3 spec/lib/metasploit/credential/importer/multi_spec.rb
metasploit-credential-6.0.2 spec/lib/metasploit/credential/importer/multi_spec.rb
metasploit-credential-6.0.1 spec/lib/metasploit/credential/importer/multi_spec.rb
metasploit-credential-6.0.0 spec/lib/metasploit/credential/importer/multi_spec.rb
metasploit-credential-5.0.9 spec/lib/metasploit/credential/importer/multi_spec.rb
metasploit-credential-5.0.8 spec/lib/metasploit/credential/importer/multi_spec.rb
metasploit-credential-5.0.7 spec/lib/metasploit/credential/importer/multi_spec.rb
metasploit-credential-5.0.6 spec/lib/metasploit/credential/importer/multi_spec.rb
metasploit-credential-5.0.5 spec/lib/metasploit/credential/importer/multi_spec.rb
metasploit-credential-5.0.4 spec/lib/metasploit/credential/importer/multi_spec.rb
metasploit-credential-5.0.3 spec/lib/metasploit/credential/importer/multi_spec.rb