Lookup openid users to convert via Email if OpenID lookup fails
[scpubgit/stemmaweb.git] / t / lib / stemmaweb / Test / DB.pm
1 package stemmaweb::Test::DB;
2
3 use warnings;
4 use strict;
5
6 use FindBin;
7
8 sub new_db {
9     my $DBDIR = "$FindBin::Bin/../db";
10     my $DBNAME = 'traditions.db';
11     my $DBEXT = 'test';
12
13     # Make the directory on the filesystem if necessary
14     unless( -d $DBDIR ) {
15         mkdir $DBDIR
16             or die "Could not make database director $DBDIR";
17     }
18     # Delete the old db if it exists
19     if( -f "$DBDIR/$DBNAME.$DBEXT" ) {
20         unlink( "$DBDIR/$DBNAME.$DBEXT" );
21     }
22     if( -l "$DBDIR/$DBNAME" ) {
23         unlink( "$DBDIR/$DBNAME" );
24     } elsif( -e "$DBDIR/$DBNAME" ) {
25         unlink( "$DBDIR/$DBNAME.bak" ) if -f "$DBDIR/$DBNAME.bak";
26         rename( "$DBDIR/$DBNAME", "$DBDIR/$DBNAME.bak" ) 
27             or die "Could not rename existing $DBNAME";
28     }
29
30     # Set up the test directory
31     symlink( "$DBNAME.$DBEXT", "$DBDIR/$DBNAME" ) or die "Could not set up testing db symlink";
32
33     my $dir = Text::Tradition::Directory->new(
34         dsn => "dbi:SQLite:dbname=$DBDIR/$DBNAME",
35         extra_args => { create => 1 } 
36         );
37     my $scope = $dir->new_scope();
38
39     # Create users
40     my $user = $dir->add_user({ username => 'user@example.org', password => 'UserPass' });
41     my $openid_user = $dir->create_user({
42         url      => 'https://www.google.com/accounts/o8/id?id=AItOawlFTlpuHGcI67tqahtw7xOod9VNWffB-Qg',
43         extensions => {'http://openid.net/srv/ax/1.0' => { 'value.email' =>'openid@example.org' } },
44     });
45
46     my $t1 = Text::Tradition->new( input => 'Self', file => 't/data/besoin.xml' );
47     $t1->add_stemma( dotfile => 't/data/besoin_stemweb.dot' );
48     $openid_user->add_tradition($t1);
49     $dir->store( $openid_user );
50
51     my $t2 = Text::Tradition->new( input => 'Tabular', sep_char => ',', 
52     file => 't/data/florilegium.csv' );
53     $t2->add_stemma( dotfile => 't/data/florilegium.dot' );
54     $user->add_tradition($t2);
55     $dir->store( $user );
56
57     return $dir;
58 }
59
60 1;