Several DBIC classes in our application have been customized with a method

  user_can_modify($c)

that takes a Catalyst context and checks if the user is logged in, and can
modify the record.  This seems to work fine when manually testing various
things.

But we want to write tests for this that use Test::WWW::Mechanize::Catalyst
to log a user in (and possibly run some actions that may change the user's
access), and then manually fetch a record from DBIC and test whether the
currently logged-in user can indeed modify the record.

I want the Catalyst context from a Test::WWW::Mechanize::Catalyst object,
which I assume can be gotten using

  $c = $m->catalyst_app

although this isn't documented as far as I can tell. It seems to work find
for some functions, e.g.

  $data = $c->model($TABLE)->find(...)

So my test script fetches some pages and logs a user in. But $c->user_exists
fails:

You must pass a package name and it cannot be blessed at
/usr/local/lib/perl/5.10.1/Class/MOP/Class.pm line 43
        Class::MOP::Class::initialize('Class::MOP::Class', '') called at
/usr/local/lib/perl/5.10.1/Class/MOP/Attribute.pm line 297
        
Class::MOP::Attribute::get_raw_value('Moose::Meta::Class::__ANON__::SERIAL::12=HASH(0x5291f60)',
 'MyApp') called at /usr/local/lib/perl/5.10.1/Class/MOP/Attribute.pm line 291
        
Class::MOP::Attribute::get_value('Moose::Meta::Class::__ANON__::SERIAL::12=HASH(0x5291f60)',
 'MyApp') called at /usr/local/lib/perl/5.10.1/Moose/Meta/Attribute.pm line 841
        
Moose::Meta::Attribute::get_value('Moose::Meta::Class::__ANON__::SERIAL::12=HASH(0x5291f60)',
 'MyApp') called at 
/usr/local/share/perl/5.10.1/MooseX/Emulate/Class/Accessor/Fast/Meta/Accessor.pm
 line 13
        Catalyst::Plugin::Authentication::_user('MyApp') called at
/usr/local/share/perl/5.10.1/Catalyst/Plugin/Authentication.pm line 56
        Catalyst::Plugin::Authentication::user_exists('MyApp') called at 
t/test.t
line 37

Is this a bug in Moose or just a side effect due to my getting the Catalyst
context in an unorthodox way.

I'd rather not use Catalyst::Test, since it means having to replicate a lot
of the functionality of Test::WWW::Mechanize::Catalyst (not to mention that
we have various helper functions for testing our application that already
use TWMC.)





_______________________________________________
List: [email protected]
Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst
Searchable archive: http://www.mail-archive.com/[email protected]/
Dev site: http://dev.catalyst.perl.org/

Reply via email to