JIRA-Client-Automated
view release on metacpan or search on metacpan
t/jira-client-automated.t view on Meta::CPAN
#!/usr/bin/env perl
use strict;
use warnings;
use Test::More;
use Test::Exception;
use File::Temp;
use File::Spec;
BEGIN {
use_ok('JIRA::Client::Automated');
}
# Set JIRA access information in ENV vars or pass it to the test.
my $jira_server = $ENV{JIRA_CLIENT_AUTOMATED_URL} || $ARGV[0];
my $jira_project = $ENV{JIRA_CLIENT_AUTOMATED_PROJECT} || $ARGV[1];
my $jira_user = $ENV{JIRA_CLIENT_AUTOMATED_USER} || $ARGV[2];
my $jira_password = $ENV{JIRA_CLIENT_AUTOMATED_PASSWORD} || $ARGV[3];
SKIP: {
my $skip_text = <<END_SKIP_TEXT;
You must provide a URL for a JIRA server, project name, username and password in the appropriate environment variables to run this test.
For example:
setenv JIRA_CLIENT_AUTOMATED_URL 'https://you.atlassian.net/'
setenv JIRA_CLIENT_AUTOMATED_PROJECT TEST
setenv JIRA_CLIENT_AUTOMATED_USER you
setenv JIRA_CLIENT_AUTOMATED_PASSWORD '******'
END_SKIP_TEXT
skip $skip_text, 1 if (!($jira_server && $jira_project && $jira_user && $jira_password));
my $JCA = 'JIRA::Client::Automated';
my ($jira, $issue, $key, @issues, $link_types);
# Create new JCA object
ok($jira = JIRA::Client::Automated->new($jira_server, $jira_user, $jira_password), 'new');
isa_ok($jira, $JCA);
# --- read-only tests first
# check search that returns no matches
@issues = $jira->all_search_results('createdDate = "1971-01-01"', 10);
is @issues, 0, 'all_search_results with no results';
@issues = $jira->all_search_results('KEY = NONESUCH-999999', 10);
is @issues, 0, 'all_search_results with invalid key';
# save link_types for later testing
ok($link_types = $jira->get_link_types(), 'get_link_types');
cmp_ok( (grep { $_->{name} eq 'Blocks' } @$link_types), '>=', 1, 'has blocks link type');
# --- read-only tests first
# Create an issue
$issue = $jira->create_issue(
$jira_project, 'Bug',
"$JCA Test Script",
"Created by $JCA Test Script automatically.",
{ labels => ["Commentary"] });
ok($issue, 'create_issue');
isa_ok($issue, 'HASH');
ok($key = $issue->{key}, 'create_issue key');
ok($issue = $jira->get_issue($key), 'get_issue');
is($issue->{fields}{summary}, "$JCA Test Script", 'create_issue summary');
is($issue->{fields}{description}, "Created by $JCA Test Script automatically.", 'create_issue description');
is($issue->{fields}{labels}[0], "Commentary", 'create_issue labels');
{
my $browse_url = $jira->make_browse_url($key);
ok(($browse_url =~ m{browse/$key$} and $browse_url !~ m{rest/api}),
"make_browse_url");
}
# Comment on an issue
my ($comments);
ok($jira->create_comment($key, "Comment from $JCA Test Script."), 'create_comment');
ok($comments = $jira->get_issue_comments($key), 'get_issue_comments');
is($comments->[0]{body}, "Comment from $JCA Test Script.", 'create_comment worked');
# Update an issue
ok($jira->update_issue($key, { summary => "$JCA updated" }), 'update_issue');
ok($issue = $jira->get_issue($key), 'get_issue to see update');
is($issue->{fields}{summary}, "$JCA updated", 'update_issue summary');
# Label an issue
ok($jira->add_issue_labels($key, 'testing'), 'add_issue_labels');
ok($issue = $jira->get_issue($key), 'get_issue to see add_issue_labels');
is(grep(m/^testing$/, @{$issue->{fields}{labels}}), 1, 'add_issue_labels worked');
( run in 0.503 second using v1.01-cache-2.11-cpan-140bd7fdf52 )