summaryrefslogtreecommitdiff
path: root/perl/t/file.t
diff options
context:
space:
mode:
Diffstat (limited to 'perl/t/file.t')
-rwxr-xr-xperl/t/file.t150
1 files changed, 0 insertions, 150 deletions
diff --git a/perl/t/file.t b/perl/t/file.t
deleted file mode 100755
index 0aecd9d..0000000
--- a/perl/t/file.t
+++ /dev/null
@@ -1,150 +0,0 @@
-#!/usr/bin/perl -w
-#
-# Tests for the file object implementation.
-#
-# Written by Russ Allbery <eagle@eyrie.org>
-# Copyright 2008, 2014
-# The Board of Trustees of the Leland Stanford Junior University
-#
-# See LICENSE for licensing terms.
-
-use POSIX qw(strftime);
-use Test::More tests => 56;
-
-use Wallet::Admin;
-use Wallet::Config;
-use Wallet::Object::File;
-
-use lib 't/lib';
-use Util;
-
-# Some global defaults to use.
-my $user = 'admin@EXAMPLE.COM';
-my $host = 'localhost';
-my @trace = ($user, $host, time);
-
-# Flush all output immediately.
-$| = 1;
-
-# Use Wallet::Admin to set up the database.
-system ('rm -rf test-files') == 0 or die "cannot remove test-files\n";
-db_setup;
-my $admin = eval { Wallet::Admin->new };
-is ($@, '', 'Database connection succeeded');
-is ($admin->reinitialize ($user), 1, 'Database initialization succeeded');
-my $schema = $admin->schema;
-
-# Use this to accumulate the history traces so that we can check history.
-my $history = '';
-my $date = strftime ('%Y-%m-%d %H:%M:%S', localtime $trace[2]);
-
-# Test error handling in the absence of configuration.
-$object = eval {
- Wallet::Object::File->create ('file', 'test', $schema, @trace)
- };
-ok (defined ($object), 'Creating a basic file object succeeds');
-ok ($object->isa ('Wallet::Object::File'), ' and is the right class');
-is ($object->get (@trace), undef, ' and get fails');
-is ($object->error, 'file support not configured', ' with the right error');
-is ($object->store (@trace), undef, ' and store fails');
-is ($object->error, 'file support not configured', ' with the right error');
-is ($object->destroy (@trace), 1, ' but destroy succeeds');
-
-# Set up our configuration.
-mkdir 'test-files' or die "cannot create test-files: $!\n";
-$Wallet::Config::FILE_BUCKET = 'test-files';
-
-# Okay, now we can test. First, the basic object without store.
-$object = eval {
- Wallet::Object::File->create ('file', 'test', $schema, @trace)
- };
-ok (defined ($object), 'Creating a basic file object succeeds');
-ok ($object->isa ('Wallet::Object::File'), ' and is the right class');
-is ($object->get (@trace), undef, ' and get fails');
-is ($object->error, 'cannot get file:test: object has not been stored',
- ' with the right error');
-is ($object->destroy (@trace), 1, ' but destroying the object succeeds');
-
-# Now store something and be sure that we get something reasonable.
-$object = eval {
- Wallet::Object::File->create ('file', 'test', $schema, @trace)
- };
-ok (defined ($object), 'Recreating the object succeeds');
-is ($object->store ("foo\n", @trace), 1, ' and storing data in it succeeds');
-ok (-d 'test-files/09', ' and the hash bucket was created');
-ok (-f 'test-files/09/test', ' and the file exists');
-is (contents ('test-files/09/test'), 'foo', ' with the right contents');
-is ($object->get (@trace), "foo\n", ' and get returns correctly');
-unlink 'test-files/09/test';
-is ($object->get (@trace), undef, ' and get fails if we delete it');
-is ($object->error, 'cannot get file:test: object has not been stored',
- ' as if it had not been stored');
-is ($object->store ("bar\n\0baz\n", @trace), 1, ' but storing again works');
-ok (-f 'test-files/09/test', ' and the file exists');
-is (contents ('test-files/09/test'), 'bar', ' with the right contents');
-is ($object->get (@trace), "bar\n\0baz\n", ' and get returns correctly');
-
-# Try exceeding the store size.
-$Wallet::Config::FILE_MAX_SIZE = 1024;
-is ($object->store ('x' x 1024, @trace), 1,
- ' and storing exactly 1024 characters works');
-is ($object->get (@trace), 'x' x 1024, ' and get returns the right thing');
-is ($object->store ('x' x 1025, @trace), undef,
- ' but storing 1025 characters fails');
-is ($object->error, 'data exceeds maximum of 1024 bytes',
- ' with the right error');
-
-# Try storing the empty data object.
-is ($object->store ('', @trace), 1, 'Storing the empty object works');
-is ($object->get (@trace), '', ' and get returns the right thing');
-
-# Test destruction.
-is ($object->destroy (@trace), 1, 'Destroying the object works');
-ok (! -f 'test-files/09/test', ' and the file is gone');
-
-# Now try some aggressive names.
-$object = eval {
- Wallet::Object::File->create ('file', '../foo', $schema, @trace)
- };
-ok (defined ($object), 'Creating ../foo succeeds');
-is ($object->store ("foo\n", @trace), 1, ' and storing data in it succeeds');
-ok (-d 'test-files/39', ' and the hash bucket was created');
-ok (-f 'test-files/39/%2E%2E%2Ffoo', ' and the file exists');
-is (contents ('test-files/39/%2E%2E%2Ffoo'), 'foo',
- ' with the right contents');
-is ($object->get (@trace), "foo\n", ' and get returns correctly');
-is ($object->destroy (@trace), 1, 'Destroying the object works');
-ok (! -f 'test-files/39/%2E%2E%2Ffoo', ' and the file is gone');
-$object = eval {
- Wallet::Object::File->create ('file', "\0", $schema, @trace)
- };
-ok (defined ($object), 'Creating nul succeeds');
-is ($object->store ("foo\n", @trace), 1, ' and storing data in it succeeds');
-ok (-d 'test-files/93', ' and the hash bucket was created');
-ok (-f 'test-files/93/%00', ' and the file exists');
-is (contents ('test-files/93/%00'), 'foo',
- ' with the right contents');
-is ($object->get (@trace), "foo\n", ' and get returns correctly');
-is ($object->destroy (@trace), 1, 'Destroying the object works');
-ok (! -f 'test-files/93/%00', ' and the file is gone');
-
-# Test error handling in the file store.
-system ('rm -r test-files') == 0 or die "cannot remove test-files\n";
-$object = eval {
- Wallet::Object::File->create ('file', 'test', $schema, @trace)
- };
-ok (defined ($object), 'Recreating the object succeeds');
-is ($object->store ("foo\n", @trace), undef,
- ' and storing data in it fails');
-like ($object->error, qr/^cannot create file bucket 09: /,
- ' with the right error');
-is ($object->get (@trace), undef, ' and get fails');
-like ($object->error, qr/^cannot create file bucket 09: /,
- ' with the right error');
-is ($object->destroy (@trace), 1, ' but destroying the object succeeds');
-
-# Clean up.
-$admin->destroy;
-END {
- unlink ('wallet-db');
-}