Skip to content
Snippets Groups Projects
Select Git revision
  • 8ce2f8f28341a14c49e8efd180774c29ddb0f8b6
  • master default protected
2 results

02-realworld.t

Blame
  • user avatar
    Anton Soldatov authored
    * t/RedMiner-API.t renamed to t/02-realworld.t
    * Tests updated
    8ce2f8f2
    History
    02-realworld.t 1.48 KiB
    use strict;
    use warnings;
    
    use Test::More;
    use JSON::XS qw/encode_json/;
    
    if ($ENV{REDMINER_API_DEVEL}) {
        plan tests => 5;
    } else{
    	plan skip_all => 'Tests require RedMine installation';
    }
    
    eval 'use RedMiner::API';
    
    #
    # Read API key from a simple config file in the format 'host;key'
    #
    my $host = '';
    my $key  = '';
    my $key_fname = $ENV{HOME} . '/.redminer/key';
    
    if (!-e $key_fname) {
    	BAIL_OUT('REDMINER_API_DEVEL set, but key file is not accessible');
    }
    
    open my $FH_key, '<', $key_fname;
    my $key_data  = <$FH_key>;
    ($host, $key) = split /\s*;\s*/, $key_data;
    chomp $key_data;
    close $FH_key;
    
    my $redminer = RedMiner::API->new(
    	host => $host,
    	key  => $key,
    );
    
    my $project = $redminer->createProject({
    	identifier => 'redminer-api-test',
    	name       => 'RedMiner API test',
    });
    my $project_id = $project->{project}{id};
    ok(defined $project_id, 'New project created with internal ID ' . $project_id);
    
    ok(!defined $redminer->createProject({
    	identifier => 'redminer-api-test',
    	name       => 'RedMiner API test',
    }), 'Project already exists, error object is ' . JSON::XS::encode_json($redminer->errorDetails));
    
    ok($redminer->updateProject($project_id, { inherit_members => 1 }), 'Project updated');
    
    my $issue = $redminer->createIssue({
    	project_id  => $project_id,
    	subject     => 'Test issue for RedMiner::API',
    	description => 'Test description',
    });
    ok(defined $issue->{issue}{id}, 'Issue created with ID #' . $issue->{issue}{id});
    
    ok($redminer->deleteProject($project_id), 'Project deleted');
    
    exit;