summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2011-02-02 23:31:53 -0600
committerJesse Luehrs <doy@tozt.net>2011-02-02 23:31:53 -0600
commit1229e6ee02def382dcd96accb44b23b26209da6a (patch)
tree27f21e61890d4b2fe5d29154784933d1f2dc74a0
parentf07cd4e7a5c7135095380e6626fdd9b6c9689916 (diff)
downloadkiokudb-serializer-crypt-1229e6ee02def382dcd96accb44b23b26209da6a.tar.gz
kiokudb-serializer-crypt-1229e6ee02def382dcd96accb44b23b26209da6a.zip
pass default_typemap through
-rw-r--r--dist.ini1
-rw-r--r--lib/KiokuDB/Serializer/Crypt.pm9
-rw-r--r--t/02-typemap.t40
3 files changed, 50 insertions, 0 deletions
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;