summaryrefslogtreecommitdiff
path: root/perl/t/schema.t
diff options
context:
space:
mode:
authorJon Robertson <jonrober@stanford.edu>2012-12-02 22:07:16 -0800
committerRuss Allbery <rra@stanford.edu>2013-01-30 18:33:23 -0800
commit593e9b1e100ace54d1d9da7eb16e60f4e37c34ff (patch)
tree6d29f76135fff795f6a15f9b379fc6dee72d14f0 /perl/t/schema.t
parent6530fb472f1c64d3e80c723d3073ca3d256a58ce (diff)
Moved the Perl wallet modules and tests to DBIx::Class
Moved all the Perl code to use DBIx::Class for the database interface. This includes updating all database calls, how the schema is generated and maintained, and the tests in places where some output has changed. We also remove the schema.t test, as the tests for it are more covered in the admin.t tests now. Change-Id: Ie5083432d09a0d9fe364a61c31378b77aa7b3cb7 Reviewed-on: https://gerrit.stanford.edu/598 Reviewed-by: Russ Allbery <rra@stanford.edu> Tested-by: Russ Allbery <rra@stanford.edu>
Diffstat (limited to 'perl/t/schema.t')
-rwxr-xr-xperl/t/schema.t111
1 files changed, 0 insertions, 111 deletions
diff --git a/perl/t/schema.t b/perl/t/schema.t
deleted file mode 100755
index 5dd90d1..0000000
--- a/perl/t/schema.t
+++ /dev/null
@@ -1,111 +0,0 @@
-#!/usr/bin/perl -w
-#
-# Tests for the wallet schema class.
-#
-# Written by Russ Allbery <rra@stanford.edu>
-# Copyright 2007, 2008, 2011
-# The Board of Trustees of the Leland Stanford Junior University
-#
-# See LICENSE for licensing terms.
-
-use Test::More tests => 16;
-
-use DBI ();
-use POSIX qw(strftime);
-use Wallet::Config ();
-use Wallet::Schema ();
-
-use lib 't/lib';
-use Util;
-
-my $schema = Wallet::Schema->new;
-ok (defined $schema, 'Wallet::Schema creation');
-ok ($schema->isa ('Wallet::Schema'), ' and class verification');
-my @sql = $schema->sql;
-ok (@sql > 0, 'sql() returns something');
-is (scalar (@sql), 32, ' and returns the right number of statements');
-
-# Connect to a database and test create.
-db_setup;
-my $connect = "DBI:${Wallet::Config::DB_DRIVER}:${Wallet::Config::DB_INFO}";
-my $user = $Wallet::Config::DB_USER;
-my $password = $Wallet::Config::DB_PASSWORD;
-$dbh = DBI->connect ($connect, $user, $password);
-if (not defined $dbh) {
- die "cannot connect to database $connect: $DBI::errstr\n";
-}
-$dbh->{RaiseError} = 1;
-$dbh->{PrintError} = 0;
-eval { $schema->create ($dbh) };
-is ($@, '', "create() doesn't die");
-
-# Check that the version number is correct.
-my $sql = "select md_version from metadata";
-my $version = $dbh->selectall_arrayref ($sql);
-is (@$version, 1, 'metadata has correct number of rows');
-is (@{ $version->[0] }, 1, ' and correct number of columns');
-is ($version->[0][0], 1, ' and the schema version is correct');
-
-# Test upgrading the database from version 0. SQLite cannot drop table
-# columns, so we have to kill the table and then recreate it.
-$dbh->do ("drop table metadata");
-if (lc ($Wallet::Config::DB_DRIVER) eq 'sqlite') {
- ($sql) = grep { /create table objects/ } $schema->sql;
- $sql =~ s/ob_comment .*,//;
- $dbh->do ("drop table objects")
- or die "cannot drop objects table: $DBI::errstr\n";
- $dbh->do ($sql)
- or die "cannot recreate objects table: $DBI::errstr\n";
-} else {
- $dbh->do ("alter table objects drop column ob_comment")
- or die "cannot drop ob_comment column: $DBI::errstr\n";
-}
-eval { $schema->upgrade ($dbh) };
-is ($@, '', "upgrade() doesn't die");
-$sql = "select md_version from metadata";
-$version = $dbh->selectall_arrayref ($sql);
-is (@$version, 1, ' and metadata has correct number of rows');
-is (@{ $version->[0] }, 1, ' and correct number of columns');
-is ($version->[0][0], 1, ' and the schema version is correct');
-$sql = "insert into objects (ob_type, ob_name, ob_created_by, ob_created_from,
- ob_created_on, ob_comment) values ('file', 'test', 'test',
- 'test.example.org', ?, 'a test comment')";
-$dbh->do ($sql, undef, strftime ('%Y-%m-%d %T', localtime time));
-$sql = "select ob_comment from objects where ob_name = 'test'";
-my ($comment) = $dbh->selectrow_array ($sql);
-is ($comment, 'a test comment', ' and ob_comment was added to objects');
-
-# Test dropping the database.
-eval { $schema->drop ($dbh) };
-is ($@, '', "drop() doesn't die");
-
-# Make sure all the tables are gone.
-SKIP: {
- if (lc ($Wallet::Config::DB_DRIVER) eq 'sqlite') {
- my $sql = "select name from sqlite_master where type = 'table'";
- my $sth = $dbh->prepare ($sql);
- $sth->execute;
- my ($table, @tables);
- while (defined ($table = $sth->fetchrow_array)) {
- push (@tables, $table) unless $table =~ /^sqlite_/;
- }
- is ("@tables", '', ' and there are no tables in the database');
- } elsif (lc ($Wallet::Config::DB_DRIVER) eq 'mysql') {
- my $sql = "show tables";
- my $sth = $dbh->prepare ($sql);
- $sth->execute;
- my ($table, @tables);
- while (defined ($table = $sth->fetchrow_array)) {
- push (@tables, $table);
- }
- is ("@tables", '', ' and there are no tables in the database');
- } else {
- skip 1;
- }
-}
-eval { $schema->create ($dbh) };
-is ($@, '', ' and we can run create again');
-
-# Clean up.
-eval { $schema->drop ($dbh) };
-unlink 'wallet-db';