diff options
Diffstat (limited to 'Bugzilla/Test/Util.pm')
-rw-r--r-- | Bugzilla/Test/Util.pm | 39 |
1 files changed, 38 insertions, 1 deletions
diff --git a/Bugzilla/Test/Util.pm b/Bugzilla/Test/Util.pm index 02c842658..9fbc151f7 100644 --- a/Bugzilla/Test/Util.pm +++ b/Bugzilla/Test/Util.pm @@ -12,9 +12,12 @@ use strict; use warnings; use base qw(Exporter); -our @EXPORT = qw(create_user); +our @EXPORT = qw(create_user issue_api_key mock_useragent_tx); use Bugzilla::User; +use Bugzilla::User::APIKey; +use Mojo::Message::Response; +use Test2::Tools::Mock qw(mock); sub create_user { my ($login, $password, %extra) = @_; @@ -29,4 +32,38 @@ sub create_user { }); } +sub issue_api_key { + my ($login, $given_api_key) = @_; + my $user = Bugzilla::User->check({ name => $login }); + + my $params = { + user_id => $user->id, + description => 'Bugzilla::Test::Util::issue_api_key', + api_key => $given_api_key, + }; + + if ($given_api_key) { + return Bugzilla::User::APIKey->create_special($params); + } else { + return Bugzilla::User::APIKey->create($params); + } +} + +sub _json_content_type { $_->headers->content_type('application/json') } + +sub mock_useragent_tx { + my ($body, $modify) = @_; + $modify //= \&_json_content_type; + + my $res = Mojo::Message::Response->new; + $res->code(200); + $res->body($body); + if ($modify) { + local $_ = $res; + $modify->($res); + } + + return mock({result => $res}); +} + 1; |