App-MtAws

 view release on metacpan or  search on metacpan

t/unit/cmd_download_inventory.t  view on Meta::CPAN

	}
	);
	# authentic archive
	assert_entry(
	{
		ArchiveId => $data->{archive_id},
		ArchiveDescription => App::MtAws::MetaData::meta_encode($data->{relfilename}, $now - 111),
		CreationDate => strftime("%Y%m%dT%H%M%SZ", gmtime($now)),
		Size => $data->{size},
		SHA256TreeHash => $data->{treehash},
	},
	{
		time => $now,
		type => 'CREATED',
		treehash => $data->{treehash},
		mtime => $now - 111,
		archive_id => $data->{archive_id},
		relfilename => $data->{relfilename},
		size => $data->{size},
	}
	);
	# check that we support datetime past Y2038
	SKIP: {
		skip "not supported under 32bit os", 2 unless is_64bit_time;
		assert_entry(
		{
			ArchiveId => $data->{archive_id},
			ArchiveDescription => App::MtAws::MetaData::meta_encode($data->{relfilename}, 64063267200), # Year 4000!
			CreationDate => strftime("%Y%m%dT%H%M%SZ", gmtime($now)),
			Size => $data->{size},
			SHA256TreeHash => $data->{treehash},
		},
		{
			time => $now,
			type => 'CREATED',
			treehash => $data->{treehash},
			mtime => 64063267200,
			archive_id => $data->{archive_id},
			relfilename => $data->{relfilename},
			size => $data->{size},
		}
		);
	}
}

sub assert_entry
{
	assert_entry_json(@_);
	assert_entry_csv(@_);
}

sub assert_entry_json
{
	my ($inp, $out) = @_;
	unlink $journal;
	my $jdata = {
		"VaultARN" => "arn:aws:glacier:us-east-1:123456:vaults/test",
		"InventoryDate" => strftime("%Y%m%dT%H%M%SZ", gmtime(time)),
		"ArchiveList" => [$inp],
	};
	my $json = JSON::XS->new->allow_nonref->ascii->pretty->encode($jdata);
	my $J = App::MtAws::Journal->new(journal_file=> $journal, root_dir => $rootdir);
	no warnings 'redefine';
	local *App::MtAws::Journal::add_entry = sub {
		my (undef, $e) = @_;
		cmp_deeply $e, $out;
	};
	App::MtAws::Command::DownloadInventory::parse_and_write_journal($J, INVENTORY_TYPE_JSON, \$json);
}

sub assert_entry_csv
{
	my ($inp, $out) = @_;
	unlink $journal;
	my $jdata = {
		"VaultARN" => "arn:aws:glacier:us-east-1:123456:vaults/test",
		"InventoryDate" => strftime("%Y%m%dT%H%M%SZ", gmtime(time)),
		"ArchiveList" => [$inp],
	};
	my $csv = <<"END";
ArchiveId,ArchiveDescription,CreationDate,Size,SHA256TreeHash
$inp->{ArchiveId},"$inp->{ArchiveDescription}",$inp->{CreationDate},$inp->{Size},$inp->{SHA256TreeHash}
END
	my $J = App::MtAws::Journal->new(journal_file=> $journal, root_dir => $rootdir);
	no warnings 'redefine';
	local *App::MtAws::Journal::add_entry = sub {
		my (undef, $e) = @_;
		cmp_deeply $e, $out;
	};
	App::MtAws::Command::DownloadInventory::parse_and_write_journal($J, INVENTORY_TYPE_CSV, \$csv);
}

unlink $journal;
1;



( run in 1.727 second using v1.01-cache-2.11-cpan-0d23b851a93 )