summaryrefslogtreecommitdiffstats
path: root/extensions/PhabBugz/lib/User.pm
diff options
context:
space:
mode:
authorDylan William Hardison <dylan@hardison.net>2018-08-17 19:20:02 +0200
committerGitHub <noreply@github.com>2018-08-17 19:20:02 +0200
commit72f78546d35342dcf556322cd702bc32e9ed2811 (patch)
tree5699104095d05d06ab237a0dd51feb092f989eeb /extensions/PhabBugz/lib/User.pm
parent4a154cbf7bb41e707c5950828ca1b2658d436609 (diff)
downloadbugzilla-72f78546d35342dcf556322cd702bc32e9ed2811.tar.gz
bugzilla-72f78546d35342dcf556322cd702bc32e9ed2811.tar.xz
Bug 1482145 - add more type checking to phabbugz code
Diffstat (limited to 'extensions/PhabBugz/lib/User.pm')
-rw-r--r--extensions/PhabBugz/lib/User.pm13
1 files changed, 9 insertions, 4 deletions
diff --git a/extensions/PhabBugz/lib/User.pm b/extensions/PhabBugz/lib/User.pm
index da573be37..209425bdf 100644
--- a/extensions/PhabBugz/lib/User.pm
+++ b/extensions/PhabBugz/lib/User.pm
@@ -11,12 +11,13 @@ use 5.10.1;
use Moo;
use Bugzilla::User;
-
+use Bugzilla::Types qw(:types);
use Bugzilla::Extension::PhabBugz::Util qw(request);
use List::Util qw(first);
use Types::Standard -all;
use Type::Utils;
+use Type::Params qw(compile);
#########################
# Initialization #
@@ -33,7 +34,9 @@ has 'roles' => ( is => 'ro', isa => ArrayRef [Str] );
has 'view_policy' => ( is => 'ro', isa => Str );
has 'edit_policy' => ( is => 'ro', isa => Str );
has 'bugzilla_id' => ( is => 'ro', isa => Maybe [Int] );
-has 'bugzilla_user' => ( is => 'lazy' );
+has 'bugzilla_user' => ( is => 'lazy', isa => Maybe [User] );
+
+my $Invocant = class_type { class => __PACKAGE__ };
sub BUILDARGS {
my ( $class, $params ) = @_;
@@ -113,7 +116,8 @@ sub new_from_query {
}
sub match {
- my ( $class, $params ) = @_;
+ state $check = compile( $Invocant | ClassName, Dict[ ids => ArrayRef[Int] ] | Dict[ phids => ArrayRef[Str] ] );
+ my ( $class, $params ) = $check->(@_);
# BMO id search takes precedence if bugzilla_ids is used.
my $bugzilla_ids = delete $params->{ids};
@@ -158,7 +162,8 @@ sub _build_bugzilla_user {
}
sub get_phab_bugzilla_ids {
- my ( $class, $params ) = @_;
+ state $check = compile($Invocant | ClassName, Dict[ids => ArrayRef[Int]]);
+ my ( $class, $params ) = $check->(@_);
my $memcache = Bugzilla->memcached;