[Rt-commit] rtir branch, 4.0/correspondents-from-makeclicky, created. 4.0.1rc1-90-gec5ee069

Brian Duggan brian at bestpractical.com
Mon Jun 4 17:14:01 EDT 2018


The branch, 4.0/correspondents-from-makeclicky has been created
        at  ec5ee069e85c3b4f38acd01c584ca9747e60b798 (commit)

- Log -----------------------------------------------------------------
commit bcb137513e7b7af952945729ff90af1d2b603785
Author: Brian C. Duggan <brian at bestpractical.com>
Date:   Mon Jun 4 15:05:19 2018 -0400

    Update MakeClicky test text for readability
    
    Some text for MakeClicky tests was not clear. This change updates that
    text to be more readable.

diff --git a/t/015-make-clicky.t b/t/015-make-clicky.t
index c064fa95..9bbef71a 100644
--- a/t/015-make-clicky.t
+++ b/t/015-make-clicky.t
@@ -19,10 +19,10 @@ diag "clicky ip" if $ENV{'TEST_VERBOSE'};
     my @links = $agent->followable_links;
     if ( $clicky{'ip'} ) {
         my ($lookup_link) = grep lc($_->text||'') eq 'lookup ip', @links;
-        ok($lookup_link, "found link");
-        ok($lookup_link->url =~ /(?<!\d)1\.0\.0\.0(?!\d)/, 'url has an ip' );
+        ok($lookup_link, "Found link for IP address");
+        ok($lookup_link->url =~ /(?<!\d)1\.0\.0\.0(?!\d)/, 'Found IP address in URL' );
     } else {
-        ok(!grep( lc $_->text eq 'lookup ip', @links ), "not found link");
+        ok(!grep( lc $_->text eq 'lookup ip', @links ), "Didn't find link for IP address");
     }
 
     $id = $agent->create_ir( { Subject => 'clicky ip', Content => '255.255.255.255' } );
@@ -30,21 +30,21 @@ diag "clicky ip" if $ENV{'TEST_VERBOSE'};
     @links = $agent->followable_links;
     if ( $clicky{'ip'} ) {
         my ($lookup_link) = grep lc($_->text||'') eq 'lookup ip', @links;
-        ok($lookup_link, "found link");
-        ok($lookup_link->url =~ /(?<!\d)255\.255\.255\.255(?!\d)/, 'url has an ip' );
+        ok($lookup_link, "Found link for IP address");
+        ok($lookup_link->url =~ /(?<!\d)255\.255\.255\.255(?!\d)/, 'Found IP address in URL' );
     } else {
-        ok(!grep( lc $_->text eq 'lookup ip', @links ), "not found link");
+        ok(!grep( lc $_->text eq 'lookup ip', @links ), "Didn't find link for IP address");
     }
 
     $id = $agent->create_ir( { Subject => 'clicky ip', Content => '255.255.255.256' } );
     $agent->display_ticket( $id);
     @links = $agent->followable_links;
-    ok(!grep( lc($_->text||'') eq 'lookup ip', @links ), "not found link");
+    ok(!grep( lc($_->text||'') eq 'lookup ip', @links ), "Didn't find link for IP address");
 
     $id = $agent->create_ir( { Subject => 'clicky ip', Content => '355.255.255.255' } );
     $agent->display_ticket( $id);
     @links = $agent->followable_links;
-    ok(!grep( lc($_->text||'') eq 'lookup ip', @links ), "not found link");
+    ok(!grep( lc($_->text||'') eq 'lookup ip', @links ), "Didn't find link for IP address");
 }
 
 diag "clicky email" if $ENV{'TEST_VERBOSE'};
@@ -64,14 +64,14 @@ diag "clicky email" if $ENV{'TEST_VERBOSE'};
         my $domain_link = $agent->find_link( text_regex => qr/^\Qlookup "$domain"\E$/i );
         $agent->save_content('/tmp/x.html');
         if ( $clicky{'email'} ) {
-            ok( $email_link,                                   "found link $email_link" );
-            ok( $email_link->url =~ /(?<!\w)\Qq=$email\E(?!\w)/, 'url '.$email_link->url.' has an email - '.$email );
-            ok( $domain_link,                                    "found link" );
-            ok( $domain_link->url =~ /(?<!\w)\Q$domain\E(?!\w)/, 'url has a domain' );
+            ok( $email_link,                                   "Found link for $email_link" );
+            ok( $email_link->url =~ /(?<!\w)\Qq=$email\E(?!\w)/, 'URL link '.$email_link->url.' has an email address: '.$email );
+            ok( $domain_link,                                    "Found link for URL domain" );
+            ok( $domain_link->url =~ /(?<!\w)\Q$domain\E(?!\w)/, 'URL link has a domain' );
         }
         else {
-            ok( !$email_link, "not found email link" );
-            ok( !$domain_link, "not found domain link" );
+            ok( !$email_link, "Didn't find link for email address" );
+            ok( !$domain_link, "Didn't find link for domain" );
         }
 
     }
@@ -86,9 +86,9 @@ diag "clicky email" if $ENV{'TEST_VERBOSE'};
         my $id = $agent->create_ir( { Subject => 'clicky email', Content => $email } );
         $agent->display_ticket($id);
         my $email_link = $agent->find_link( url_regex => qr/\Qq=$email\E/, text_regex => qr/\Qlookup email\E$/ );
-        ok( !$email_link, "not found email link for $email" );
+        ok( !$email_link, "Didn't find an email link for $email" );
         my $domain_link = $agent->find_link( text_regex => qr/^\Qlookup "$domain"\E$/i );
-        ok( !$domain_link, "not found domain link for $domain" );
+        ok( !$domain_link, "Didn't find a domain link for $domain" );
 
     }
 
@@ -103,9 +103,9 @@ diag "clicky email" if $ENV{'TEST_VERBOSE'};
         my $id = $agent->create_ir( { Subject => 'clicky email', Content => $email } );
         $agent->display_ticket($id);
         my $email_link = $agent->find_link( url_regex => qr/\Qq=$email\E/, text_regex => qr/\Qlookup email\E$/ );
-        ok( !$email_link, "not found email link for $email" );
+        ok( !$email_link, "Didn't find link for $email" );
         my $domain_link = $agent->find_link( text_regex => qr/^\Qlookup "$domain"\E$/i );
-        ok( $domain_link, "still found the bare domain for $domain" );
+        ok( $domain_link, "Found the bare domain for $domain" );
     }
 
 

commit d3de932380cc62bc137a728d0c2c204db8c69765
Author: Brian C. Duggan <brian at bestpractical.com>
Date:   Thu May 24 12:57:09 2018 -0400

    Test for MakeClicky email links on all RTIR ticket types
    
    All RTIR ticket types get 'Lookup email' and 'Lookup email-domain'
    links when MakeClicky email is enabled. This change tests Incident
    Reports, Incidents, Investigations, and Countermeaures for these links
    instead of just Incident Reports.

diff --git a/t/015-make-clicky.t b/t/015-make-clicky.t
index 9bbef71a..63a9c1b1 100644
--- a/t/015-make-clicky.t
+++ b/t/015-make-clicky.t
@@ -50,65 +50,73 @@ diag "clicky ip" if $ENV{'TEST_VERBOSE'};
 diag "clicky email" if $ENV{'TEST_VERBOSE'};
 {
 
-    for my $email (
-        'foo at example.com',  'foo-bar+baz at example.me',
-        'foo at example.mobi', 'foo at localhost.localhost',
+    for my $create_method_ref (
+        sub { $agent->create_ir( $_[0] ) },
+        sub { $agent->create_incident( $_[0] ) },
+        sub { $agent->create_investigation( $_[0] ) },
+        sub {
+            $_[0]{Incident} = $agent->create_incident(@_);
+            $agent->create_countermeasure( $_[0] );
+        },
       )
     {
-        diag "test valid email $email" if $ENV{TEST_VERBOSE};
-        my ( $name, $domain ) = split /@/, $email, 2;
-        my $id =
-          $agent->create_ir( { Subject => 'clicky email', Content => $email } );
-        $agent->display_ticket($id);
-        my $email_link = $agent->find_link( url_regex => qr/\Qq=$email\E/, text_regex => qr/\Qlookup email\E$/ );
-        my $domain_link = $agent->find_link( text_regex => qr/^\Qlookup "$domain"\E$/i );
-        $agent->save_content('/tmp/x.html');
-        if ( $clicky{'email'} ) {
-            ok( $email_link,                                   "Found link for $email_link" );
-            ok( $email_link->url =~ /(?<!\w)\Qq=$email\E(?!\w)/, 'URL link '.$email_link->url.' has an email address: '.$email );
-            ok( $domain_link,                                    "Found link for URL domain" );
-            ok( $domain_link->url =~ /(?<!\w)\Q$domain\E(?!\w)/, 'URL link has a domain' );
-        }
-        else {
-            ok( !$email_link, "Didn't find link for email address" );
-            ok( !$domain_link, "Didn't find link for domain" );
-        }
-
-    }
-
-    for my $email ( 'foo at example') {
-        diag "test invalid email (invalid domain) $email" if $ENV{TEST_VERBOSE};
+        for my $email (
+            'foo at example.com',  'foo-bar+baz at example.me',
+            'foo at example.mobi', 'foo at localhost.localhost',
+            )
+        {
+            diag "test valid email $email" if $ENV{TEST_VERBOSE};
+            my ( $name, $domain ) = split /@/, $email, 2;
+            my $id =
+              $create_method_ref->( { Subject => 'clicky email', Content => $email } );
+            $agent->display_ticket($id);
+            my $email_link = $agent->find_link( url_regex => qr/\Qq=$email\E/, text_regex => qr/\Qlookup email\E$/ );
+            my $domain_link = $agent->find_link( text_regex => qr/^\Qlookup "$domain"\E$/i );
+            $agent->save_content('/tmp/x.html');
+            if ( $clicky{'email'} ) {
+                ok( $email_link,                                   "Found link for $email_link" );
+                ok( $email_link->url =~ /(?<!\w)\Qq=$email\E(?!\w)/, 'URL link '.$email_link->url.' has an email address: '.$email );
+                ok( $domain_link,                                    "Found link for URL domain" );
+                ok( $domain_link->url =~ /(?<!\w)\Q$domain\E(?!\w)/, 'URL link has a domain' );
+            }
+            else {
+                ok( !$email_link, "Didn't find link for email address" );
+                ok( !$domain_link, "Didn't find link for domain" );
+            }
 
-        my ( $name, $domain );
-        if ($email =~ /^(.*)@(.*)$/) {
-            ($name,$domain) = ($1,$2);
         }
-        my $id = $agent->create_ir( { Subject => 'clicky email', Content => $email } );
-        $agent->display_ticket($id);
-        my $email_link = $agent->find_link( url_regex => qr/\Qq=$email\E/, text_regex => qr/\Qlookup email\E$/ );
-        ok( !$email_link, "Didn't find an email link for $email" );
-        my $domain_link = $agent->find_link( text_regex => qr/^\Qlookup "$domain"\E$/i );
-        ok( !$domain_link, "Didn't find a domain link for $domain" );
 
-    }
+        for my $email ( 'foo at example') {
+            diag "test invalid email (invalid domain) $email" if $ENV{TEST_VERBOSE};
 
+            my ( $name, $domain );
+            if ($email =~ /^(.*)@(.*)$/) {
+                ($name,$domain) = ($1,$2);
+            }
+            my $id = $create_method_ref->( { Subject => 'clicky email', Content => $email } );
+            $agent->display_ticket($id);
+            my $email_link = $agent->find_link( url_regex => qr/\Qq=$email\E/, text_regex => qr/\Qlookup email\E$/ );
+            ok( !$email_link, "Didn't find an email link for $email" );
+            my $domain_link = $agent->find_link( text_regex => qr/^\Qlookup "$domain"\E$/i );
+            ok( !$domain_link, "Didn't find a domain link for $domain" );
 
-    for my $email ( '@example.com' ) {
-        diag "test invalid email (no local part) $email" if $ENV{TEST_VERBOSE};
+        }
 
-        my ( $name, $domain );
-        if ($email =~ /^(.*)@(.*)$/) {
-            ($name,$domain) = ($1,$2);
+        for my $email ( '@example.com' ) {
+            diag "test invalid email (no local part) $email" if $ENV{TEST_VERBOSE};
+
+            my ( $name, $domain );
+            if ($email =~ /^(.*)@(.*)$/) {
+                ($name,$domain) = ($1,$2);
+            }
+            my $id = $create_method_ref->( { Subject => 'clicky email', Content => $email } );
+            $agent->display_ticket($id);
+            my $email_link = $agent->find_link( url_regex => qr/\Qq=$email\E/, text_regex => qr/\Qlookup email\E$/ );
+            ok( !$email_link, "Didn't find link for $email" );
+            my $domain_link = $agent->find_link( text_regex => qr/^\Qlookup "$domain"\E$/i );
+            ok( $domain_link, "Found the bare domain for $domain" );
         }
-        my $id = $agent->create_ir( { Subject => 'clicky email', Content => $email } );
-        $agent->display_ticket($id);
-        my $email_link = $agent->find_link( url_regex => qr/\Qq=$email\E/, text_regex => qr/\Qlookup email\E$/ );
-        ok( !$email_link, "Didn't find link for $email" );
-        my $domain_link = $agent->find_link( text_regex => qr/^\Qlookup "$domain"\E$/i );
-        ok( $domain_link, "Found the bare domain for $domain" );
     }
-
-
 }
 
 diag "utf8 caching " if $ENV{'TEST_VERBOSE'};

commit 9139028ab79c0119a2e538b7a022c113cd261e45
Author: Brian C. Duggan <brian at bestpractical.com>
Date:   Thu May 24 14:37:53 2018 -0400

    Test for 'Investigate to' links next to MakeClicky email adddresses
    
    Test for the presence of 'Investigate to' links next to MakeClicky
    email addresses on Incident tickets.

diff --git a/t/015-make-clicky.t b/t/015-make-clicky.t
index 63a9c1b1..8296cc75 100644
--- a/t/015-make-clicky.t
+++ b/t/015-make-clicky.t
@@ -70,18 +70,32 @@ diag "clicky email" if $ENV{'TEST_VERBOSE'};
             my $id =
               $create_method_ref->( { Subject => 'clicky email', Content => $email } );
             $agent->display_ticket($id);
+
+            my $is_incident = $agent->text() =~ qr/Queue: Incidents/;
+
             my $email_link = $agent->find_link( url_regex => qr/\Qq=$email\E/, text_regex => qr/\Qlookup email\E$/ );
             my $domain_link = $agent->find_link( text_regex => qr/^\Qlookup "$domain"\E$/i );
+
+            my $investigate_link = $agent->find_link( url_regex => qr/\QRequestors=$email\E/,
+                                                   text_regex => qr/^\Qinvestigate to\E$/i ) if $is_incident;
+
             $agent->save_content('/tmp/x.html');
             if ( $clicky{'email'} ) {
                 ok( $email_link,                                   "Found link for $email_link" );
                 ok( $email_link->url =~ /(?<!\w)\Qq=$email\E(?!\w)/, 'URL link '.$email_link->url.' has an email address: '.$email );
                 ok( $domain_link,                                    "Found link for URL domain" );
                 ok( $domain_link->url =~ /(?<!\w)\Q$domain\E(?!\w)/, 'URL link has a domain' );
+
+                if ( $is_incident ) {
+                    ok( $investigate_link, "found investigate link" );
+                    ok( $investigate_link->url =~ /(?<!\w)\QRequestors=$email\E(?!\w)/,
+                        'url '.$investigate_link->url.' has Requestors email' );
+                }
             }
             else {
                 ok( !$email_link, "Didn't find link for email address" );
                 ok( !$domain_link, "Didn't find link for domain" );
+                ok( !$investigate_link, "Didn't find 'Investigate to' link") if $is_incident;
             }
 
         }
@@ -95,11 +109,16 @@ diag "clicky email" if $ENV{'TEST_VERBOSE'};
             }
             my $id = $create_method_ref->( { Subject => 'clicky email', Content => $email } );
             $agent->display_ticket($id);
+            my $is_incident = $agent->text() =~ qr/Queue: Incidents/;
             my $email_link = $agent->find_link( url_regex => qr/\Qq=$email\E/, text_regex => qr/\Qlookup email\E$/ );
             ok( !$email_link, "Didn't find an email link for $email" );
             my $domain_link = $agent->find_link( text_regex => qr/^\Qlookup "$domain"\E$/i );
             ok( !$domain_link, "Didn't find a domain link for $domain" );
 
+            my $investigate_link = $agent->find_link( url_regex => qr/\QRequestors=$email\E/,
+                                                      text_regex => qr/^\Qinvestigate to\E$/i )
+                if $is_incident;
+            ok( !$investigate_link, "Didn't find 'Investigate to' link for $email" );
         }
 
         for my $email ( '@example.com' ) {
@@ -111,10 +130,15 @@ diag "clicky email" if $ENV{'TEST_VERBOSE'};
             }
             my $id = $create_method_ref->( { Subject => 'clicky email', Content => $email } );
             $agent->display_ticket($id);
+            my $is_incident = $agent->text() =~ qr/Queue: Incidents/;
             my $email_link = $agent->find_link( url_regex => qr/\Qq=$email\E/, text_regex => qr/\Qlookup email\E$/ );
             ok( !$email_link, "Didn't find link for $email" );
             my $domain_link = $agent->find_link( text_regex => qr/^\Qlookup "$domain"\E$/i );
             ok( $domain_link, "Found the bare domain for $domain" );
+            my $investigate_link = $agent->find_link( url_regex => qr/\QRequestors=$email\E/,
+                                                      text_regex => qr/^\Qinvestigate to\E$/i )
+                if $is_incident;
+            ok( !$investigate_link, "Didn't find 'Investigate to' link for $email" );
         }
     }
 }

commit 8f895fb843213d3c7f74e21c00dafd4966f94774
Author: Brian C. Duggan <brian at bestpractical.com>
Date:   Thu May 24 16:07:34 2018 -0400

    Test Correspondents field on 'Investigate to' investigation creation
    
    MakeClicky 'Investigate to' links should load a queue selection page
    for investigation creation.
    
    That queue selection page form should lead to an investigation
    creation page.
    
    The Correspondents field on that investigation creation page should be
    populated with the MakeClicky 'Investigate to' email address.
    
    This change adds tests that test this workflow.

diff --git a/t/015-make-clicky.t b/t/015-make-clicky.t
index 8296cc75..2930001b 100644
--- a/t/015-make-clicky.t
+++ b/t/015-make-clicky.t
@@ -67,6 +67,9 @@ diag "clicky email" if $ENV{'TEST_VERBOSE'};
         {
             diag "test valid email $email" if $ENV{TEST_VERBOSE};
             my ( $name, $domain ) = split /@/, $email, 2;
+            my $uri_escaped_email = $email;
+            RT::Interface::Web::EscapeURI(\$uri_escaped_email);
+
             my $id =
               $create_method_ref->( { Subject => 'clicky email', Content => $email } );
             $agent->display_ticket($id);
@@ -76,7 +79,7 @@ diag "clicky email" if $ENV{'TEST_VERBOSE'};
             my $email_link = $agent->find_link( url_regex => qr/\Qq=$email\E/, text_regex => qr/\Qlookup email\E$/ );
             my $domain_link = $agent->find_link( text_regex => qr/^\Qlookup "$domain"\E$/i );
 
-            my $investigate_link = $agent->find_link( url_regex => qr/\QRequestors=$email\E/,
+            my $investigate_link = $agent->find_link( url_regex => qr/\QRequestors=$uri_escaped_email\E/,
                                                    text_regex => qr/^\Qinvestigate to\E$/i ) if $is_incident;
 
             $agent->save_content('/tmp/x.html');
@@ -86,10 +89,30 @@ diag "clicky email" if $ENV{'TEST_VERBOSE'};
                 ok( $domain_link,                                    "Found link for URL domain" );
                 ok( $domain_link->url =~ /(?<!\w)\Q$domain\E(?!\w)/, 'URL link has a domain' );
 
+                # Test that 'Investigate to' links go to the queue selection page for creating incidents.
+                # Then test that the new investigation form on that page loads the investigation creation page.
+                # Then test taht the Correspondents field is populated with the given email address.
                 if ( $is_incident ) {
                     ok( $investigate_link, "found investigate link" );
-                    ok( $investigate_link->url =~ /(?<!\w)\QRequestors=$email\E(?!\w)/,
+                    ok( $investigate_link->url =~ /(?<!\w)\QRequestors=$uri_escaped_email\E(?!\w)/,
                         'url '.$investigate_link->url.' has Requestors email' );
+                    $agent->follow_link_ok( { url => $investigate_link->url }, 'followed "investigate to" link' );
+                    $agent->title_is( 'Select Queue for New Investigation',
+                                      'selecting queue for new investigation' );
+                    $agent->submit_form_ok(
+                        {
+                            form_id => 'CreateInQueue',
+                        },
+                        'submitted new investigation form',
+                    );
+                    $agent->title_is( 'Launch a new investigation', 'launching a new investigation' );
+                    $agent->form_name( 'TicketCreate' );
+                    my @correspondents = $agent->find_all_inputs(
+                        name => 'Requestors',
+                        type => 'text',
+                        value => $email,
+                    );
+                    is( $#correspondents, 0, "correspondents populated with $email");
                 }
             }
             else {

commit ec5ee069e85c3b4f38acd01c584ca9747e60b798
Author: Brian C. Duggan <brian at bestpractical.com>
Date:   Mon May 21 15:59:59 2018 -0400

    Pass Requestors through queue selection modal if provided
    
    ebe8874d introduced the new queue selection modal which requires some
    values intended for the create page to be written as hidden fields so
    they are passed on when submitted.
    
    This change adds Requestors to support the Investigate to
    link. Previously the "Investigate to" email addresses were being lost
    on the queue modal and not appearing in the Correspondents field.

diff --git a/html/Callbacks/RTIR/Elements/MakeClicky/Default b/html/Callbacks/RTIR/Elements/MakeClicky/Default
index 15cabafd..51b5e295 100644
--- a/html/Callbacks/RTIR/Elements/MakeClicky/Default
+++ b/html/Callbacks/RTIR/Elements/MakeClicky/Default
@@ -153,6 +153,8 @@ my %actions;
 
         my $email = $args{'value'}; $email =~ s/^<|>$//g;
         my $escaped_email = $escaper->($email);
+        my $uri_escaped_email = $escaped_email;
+        RT::Interface::Web::EscapeURI(\$uri_escaped_email);
 
         my $result = qq{<a class="button button-small" href="}.
             RT::IR->HREFTo(qq{Tools/Lookup.html?$args{'lookup_params'}type=email&q=$escaped_email}). qq{">}
@@ -165,7 +167,7 @@ my %actions;
                 RT::IR->HREFTo( "CreateInQueue.html"
                 . qq{?Incident=$args{'incident'}}
                 . qq{&Lifecycle=}.RT::IR->lifecycle_investigation
-                . "&Requestors=$escaped_email")
+                . "&Requestors=$uri_escaped_email")
                 . qq{">}
                 . loc('Investigate to') .qq{</a>};
         }
diff --git a/html/RTIR/Elements/CreateInRTIRQueueModal b/html/RTIR/Elements/CreateInRTIRQueueModal
index f0e643a0..d4128b0c 100644
--- a/html/RTIR/Elements/CreateInRTIRQueueModal
+++ b/html/RTIR/Elements/CreateInRTIRQueueModal
@@ -51,6 +51,9 @@
 % }
 % if ($Child) {
 <input type="hidden" name="Child" value="<%$Child%>"/>
+% }
+% if ($Requestors) {
+<input type="hidden" name="Requestors" value="<%$Requestors%>"/>
 % }
   <&|/l_unsafe, $ticket_type,
       $m->scomp('/RTIR/Elements/SelectRTIRQueue',
@@ -95,5 +98,6 @@ my $ticket_type = lc RT::IR::TicketType( Lifecycle => $Lifecycle );
 $Lifecycle
 $Incident => undef
 $Child => undef
+$Requestors => undef
 </%ARGS>
 

-----------------------------------------------------------------------


More information about the rt-commit mailing list