From 1229e6ee02def382dcd96accb44b23b26209da6a Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Wed, 2 Feb 2011 23:31:53 -0600 Subject: pass default_typemap through --- dist.ini | 1 + lib/KiokuDB/Serializer/Crypt.pm | 9 +++++++++ t/02-typemap.t | 40 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 50 insertions(+) create mode 100644 t/02-typemap.t diff --git a/dist.ini b/dist.ini index 272bd32..3b0103d 100644 --- a/dist.ini +++ b/dist.ini @@ -18,4 +18,5 @@ Test::More = 0.88 [Prereqs / TestRecommends] Crypt::Rijndael = 0 Crypt::CFB = 0 +DateTime = 0 JSON = 0 diff --git a/lib/KiokuDB/Serializer/Crypt.pm b/lib/KiokuDB/Serializer/Crypt.pm index 21a9196..299e24c 100644 --- a/lib/KiokuDB/Serializer/Crypt.pm +++ b/lib/KiokuDB/Serializer/Crypt.pm @@ -138,6 +138,15 @@ around deserialize => sub { return $self->$orig($self->decrypt_string($collapsed), @args); }; +sub default_typemap { + my $self = shift; + + return $self->serializer->default_typemap + if $self->serializer->default_typemap; + + return KiokuDB::Typemap->new; +} + with 'KiokuDB::Backend::Serialize'; =head1 BUGS diff --git a/t/02-typemap.t b/t/02-typemap.t new file mode 100644 index 0000000..4bc0cb8 --- /dev/null +++ b/t/02-typemap.t @@ -0,0 +1,40 @@ +#!/usr/bin/env perl +use strict; +use warnings; +use Test::More; + +use Test::Requires 'Crypt::Rijndael'; +use Test::Requires 'Crypt::CFB'; +use Test::Requires 'DateTime'; + +use KiokuDB; +use KiokuDB::Util; +use KiokuDB::Serializer::Crypt; + +my $backend = KiokuDB::Util::dsn_to_backend( + 'hash', + serializer => KiokuDB::Serializer::Crypt->new( + serializer => 'json', + crypt_cipher => 'Rijndael', + crypt_mode => 'CFB', + crypt_key => 'foo', + ), +); + +my $d = KiokuDB->new(backend => $backend); +my $obj = [DateTime->now]; + +{ + my $s = $d->new_scope; + $d->insert(obj => $obj); +} + +{ + my $s = $d->new_scope; + my $db_obj = $d->lookup('obj'); + is(ref($db_obj), 'ARRAY', "got array back"); + isa_ok($db_obj->[0], 'DateTime'); + is_deeply($db_obj, $obj, "got the right obj"); +} + +done_testing; -- cgit v1.2.3-54-g00ecf