IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 5490


Ignore:
Timestamp:
Nov 8, 2005, 3:31:07 PM (21 years ago)
Author:
jhoblitt
Message:

change create_object to verify that it's class param is valid

Location:
trunk
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/Nebulous-Server/lib/Nebulous/Server.pm

    r5487 r5490  
    11# Copyright (c) 2004  Joshua Hoblitt
    22#
    3 # $Id: Server.pm,v 1.12 2005-11-09 00:48:24 jhoblitt Exp $
     3# $Id: Server.pm,v 1.13 2005-11-09 01:31:07 jhoblitt Exp $
    44
    55package Nebulous::Server;
     
    1717use Log::Log4perl;
    1818use Params::Validate qw( validate_pos SCALAR );
    19 
    20 my %class = (
    21     raw => 1,
    22 );
    2319
    2420my $log;
     
    9995
    10096    # check that the comment isn't too long
     97    # check that the volume requested is valid
     98
    10199    # check that the class requested is valid
    102     # check that the volume requested is valid
     100    if ( $class ) {
     101        my $class_id;
     102        eval {
     103            my $query = $db->prepare_cached( $sql->get_class );
     104            $query->execute( $class );
     105            ( $class_id ) = $query->fetchrow_array;
     106
     107            $query->finish;
     108        };
     109        if ( $@ ) {
     110            $db->rollback;
     111            $log->logdie( "database error: $@" );
     112        }
     113
     114        unless ( $class_id ) {
     115            $log->logdie( "Invalid class ID: $class" );
     116        }
     117    }
    103118
    104119    my $uri;
  • trunk/Nebulous-Server/lib/Nebulous/Server/SQL.pm

    r5489 r5490  
    11# Copyright (c) 2004  Joshua Hoblitt
    22#
    3 # $Id: SQL.pm,v 1.13 2005-11-09 00:59:20 jhoblitt Exp $
     3# $Id: SQL.pm,v 1.14 2005-11-09 01:31:07 jhoblitt Exp $
    44
    55package Nebulous::Server::SQL;
     
    123123        INSERT INTO volume (name, uri)
    124124        VALUES (?, ?)
     125    },
     126    get_class => qq{
     127        SELECT class_id, priority, comment
     128        FROM class
     129        WHERE class_id = ?
    125130    },
    126131);
  • trunk/Nebulous-Server/t/03_server_create_object.t

    r4873 r5490  
    33# Copryight (C) 2004-2005  Joshua Hoblitt
    44#
    5 # $Id: 03_server_create_object.t,v 1.5 2005-08-25 01:40:04 jhoblitt Exp $
     5# $Id: 03_server_create_object.t,v 1.6 2005-11-09 01:31:07 jhoblitt Exp $
    66
    77use strict;
    88use warnings FATAL => qw( all );
    99
    10 use Test::More tests => 11;
     10use Test::More tests => 13;
    1111
    1212use lib qw( ./t ./lib );
     
    7474Test::Nebulous->setup;
    7575
     76{
     77    my $uri = $neb->create_object( "foo", 1 );
     78
     79    ok( -e _get_file_path( $uri ), "class exists" );
     80}
     81
     82Test::Nebulous->setup;
     83
     84eval {
     85    $neb->create_object( "foo", 99 );
     86};
     87like( $@, qr/Invalid class/, "class doesn't exists" );
     88
     89Test::Nebulous->setup;
     90
    7691eval {
    7792    $neb->create_object();
  • trunk/Nebulous/lib/Nebulous/Server.pm

    r5487 r5490  
    11# Copyright (c) 2004  Joshua Hoblitt
    22#
    3 # $Id: Server.pm,v 1.12 2005-11-09 00:48:24 jhoblitt Exp $
     3# $Id: Server.pm,v 1.13 2005-11-09 01:31:07 jhoblitt Exp $
    44
    55package Nebulous::Server;
     
    1717use Log::Log4perl;
    1818use Params::Validate qw( validate_pos SCALAR );
    19 
    20 my %class = (
    21     raw => 1,
    22 );
    2319
    2420my $log;
     
    9995
    10096    # check that the comment isn't too long
     97    # check that the volume requested is valid
     98
    10199    # check that the class requested is valid
    102     # check that the volume requested is valid
     100    if ( $class ) {
     101        my $class_id;
     102        eval {
     103            my $query = $db->prepare_cached( $sql->get_class );
     104            $query->execute( $class );
     105            ( $class_id ) = $query->fetchrow_array;
     106
     107            $query->finish;
     108        };
     109        if ( $@ ) {
     110            $db->rollback;
     111            $log->logdie( "database error: $@" );
     112        }
     113
     114        unless ( $class_id ) {
     115            $log->logdie( "Invalid class ID: $class" );
     116        }
     117    }
    103118
    104119    my $uri;
  • trunk/Nebulous/lib/Nebulous/Server/SQL.pm

    r5489 r5490  
    11# Copyright (c) 2004  Joshua Hoblitt
    22#
    3 # $Id: SQL.pm,v 1.13 2005-11-09 00:59:20 jhoblitt Exp $
     3# $Id: SQL.pm,v 1.14 2005-11-09 01:31:07 jhoblitt Exp $
    44
    55package Nebulous::Server::SQL;
     
    123123        INSERT INTO volume (name, uri)
    124124        VALUES (?, ?)
     125    },
     126    get_class => qq{
     127        SELECT class_id, priority, comment
     128        FROM class
     129        WHERE class_id = ?
    125130    },
    126131);
  • trunk/Nebulous/t/03_server_create_object.t

    r4873 r5490  
    33# Copryight (C) 2004-2005  Joshua Hoblitt
    44#
    5 # $Id: 03_server_create_object.t,v 1.5 2005-08-25 01:40:04 jhoblitt Exp $
     5# $Id: 03_server_create_object.t,v 1.6 2005-11-09 01:31:07 jhoblitt Exp $
    66
    77use strict;
    88use warnings FATAL => qw( all );
    99
    10 use Test::More tests => 11;
     10use Test::More tests => 13;
    1111
    1212use lib qw( ./t ./lib );
     
    7474Test::Nebulous->setup;
    7575
     76{
     77    my $uri = $neb->create_object( "foo", 1 );
     78
     79    ok( -e _get_file_path( $uri ), "class exists" );
     80}
     81
     82Test::Nebulous->setup;
     83
     84eval {
     85    $neb->create_object( "foo", 99 );
     86};
     87like( $@, qr/Invalid class/, "class doesn't exists" );
     88
     89Test::Nebulous->setup;
     90
    7691eval {
    7792    $neb->create_object();
  • trunk/Nebulous/t/Test/Nebulous.pm

    r4893 r5490  
    11# Copyright (C) 2004  Joshua Hoblitt
    22#
    3 # $Id: Nebulous.pm,v 1.6 2005-08-27 03:39:06 jhoblitt Exp $
     3# $Id: Nebulous.pm,v 1.7 2005-11-09 01:31:07 jhoblitt Exp $
    44
    55package Test::Nebulous;
     
    3939    $dbh->do( qq{ INSERT INTO volume VALUES (1,'node01',?) }, undef, 'file:' . $dir1 );
    4040    $dbh->do( qq{ INSERT INTO volume VALUES (2,'node02',?) }, undef, 'file:' . $dir2 );
     41
     42    $dbh->do( qq{ INSERT INTO class VALUES (1, 0, "regular data") } );
     43    $dbh->do( qq{ INSERT INTO class VALUES (2, 1, "special data") } );
    4144}
    4245
Note: See TracChangeset for help on using the changeset viewer.