1#!/usr/bin/perl -w 2 3# to run: 4# RT_DBA_USER=root RT_DBA_PASSWORD= prove -lv -I/opt/rt3/lib t/rt-auto-open-conflict.t 5use strict; 6 7use Prophet::Test; 8 9BEGIN { 10 unless (eval 'use RT::Test tests => "no_declare"; 1') { 11 diag $@ if $ENV{'TEST_VERBOSE'}; 12 plan skip_all => 'requires RT 3.8 or newer to run tests.'; 13 } 14} 15 16plan tests => 10; 17use App::SD::Test; 18 19no warnings 'once'; 20 21RT::Handle->InsertData( $RT::EtcPath . '/initialdata' ); 22 23BEGIN { 24 require File::Temp; 25 $ENV{'PROPHET_REPO'} = $ENV{'SD_REPO'} = File::Temp::tempdir( CLEANUP => 1 ) . '/_svb'; 26 diag "export SD_REPO=" . $ENV{'PROPHET_REPO'} . "\n"; 27} 28 29my $IMAGE_FILE = qw|t/data/bplogo.gif|; 30 31$RT::Test::SKIP_REQUEST_WORK_AROUND = 1; 32 33my ( $url, $m ) = RT::Test->started_ok; 34 35use RT::Client::REST; 36use RT::Client::REST::Ticket; 37my $rt = RT::Client::REST->new( server => $url ); 38$rt->login( username => 'root', password => 'password' ); 39 40$url =~ s|http://|http://root:password@|; 41my $sd_rt_url = "rt:$url|General|Status!='resolved'"; 42 43my $ticket = RT::Client::REST::Ticket->new( rt => $rt, queue => 'General', status => 'new', subject => 'helium',)->store( text => "Ticket Comment" ); 44diag("Clone from RT"); 45my ( $ret, $out, $err ) 46 = run_script( 'sd', 47 [ 'clone', '--from', $sd_rt_url, '--non-interactive' ] ); 48ok( $ret, $out ); 49diag($err); 50my $helium_id; 51run_output_matches( 52 'sd', 53 [ 'ticket', 'list', '--regex', 'helium' ], 54 [qr/(.*?)(?{ $helium_id = $1 }) helium new/] 55); 56 57diag("Comment on ticket in sd"); 58( $ret, $out, $err ) = run_script( 'sd', [ 'ticket', 'comment', $helium_id, '--content', 'helium is a noble gas' ] ); 59ok( $ret, $out ); 60like( $out, qr/Created comment/ ); 61diag($out); 62diag($err); 63{ # resolve a ticket 64 65 diag("Resolve a ticket in SD"); 66 ( $ret, $out, $err ) = run_script( 'sd', [ 'ticket', 'resolve', $helium_id ] ); 67 ok( $ret, $out ); 68 like( $out, qr/Ticket .* updated/ ); 69 sleep(1); 70 diag("Push to rt"); 71 ( $ret, $out, $err ) = run_script( 'sd', [ 'push', '--to', $sd_rt_url, '--prefer', 'source' ] ); 72 ok( $ret, $out ); 73 diag($err); 74 sleep(1); 75 ( $ret, $out, $err ) = run_script( 'sd', [ 'pull', '--from', $sd_rt_url, '--prefer', 'source'] ); 76 ok( $ret, $out ); 77 diag($err); 78 my $fetched_ticket = RT::Client::REST::Ticket->new( 79 rt => $rt, 80 id => $ticket->id 81 )->retrieve; 82 83 warn "Ticket id is ".$ticket->id; 84 is( $fetched_ticket->status, "resolved" ); 85} 86