summaryrefslogtreecommitdiffstats
path: root/extensions/BMO/t/bug_format_comment.t
blob: 532b8fb8d70e346c781bdcc4c05bc9b6eec261c8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
#!/usr/bin/perl -T
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
# This Source Code Form is "Incompatible With Secondary Licenses", as
# defined by the Mozilla Public License, v. 2.0.
use strict;
use warnings;
use lib qw( . lib );

use Test::More;
use Bugzilla;
use Bugzilla::Extension;

my $class = Bugzilla::Extension->load('extensions/BMO/Extension.pm',
                                      'extensions/BMO/Config.pm');
ok( $class->can('bug_format_comment'), 'the function exists');

my $bmo = $class->new;
ok($bmo, "got a new bmo extension");

my $text = <<'END_OF_LINKS';
# crash stats, a fake one
bp-deadbeef-deaf-beef-beed-cafefeed1337

# CVE/CAN security things
CVE-2014-0160
CVE-2014-0001
CVE-2014-13579
CVE-2014-999999999

# svn
r2424

# bzr commit
Committing to: bzr+ssh://dlawrence%40mozilla.com@bzr.mozilla.org/bmo/4.2
modified extensions/Review/Extension.pm
Committed revision 9257.

# git with scp-style address
To gitolite3@git.mozilla.org:bugzilla/bugzilla.git
   36f56bd..eab44b1  nouri -> nouri

# git with uri (with login)
To ssh://gitolite3@git.mozilla.org/bugzilla/bugzilla.git
   36f56bd..eab44b1  withuri -> withuri

# git with uri (without login)
To ssh://git.mozilla.org/bugzilla/bugzilla.git
   36f56bd..eab44b1  nologin -> nologin
END_OF_LINKS

my @regexes;

$bmo->bug_format_comment({ regexes => \@regexes });

ok(@regexes > 0, "got some regexes to play with");

foreach my $re (@regexes) {
    my ($match, $replace) = @$re{qw(match replace)};
    if (ref($replace) eq 'CODE') {
        $text =~ s/$match/$replace->({matches => [ $1, $2, $3, $4,
                                                   $5, $6, $7, $8,
                                                   $9, $10]})/egx;
    }
    else {
        $text =~ s/$match/$replace/egx;
    }
}

my @links = (
    '<a href="https://crash-stats.mozilla.com/report/index/deadbeef-deaf-beef-beed-cafefeed1337">bp-deadbeef-deaf-beef-beed-cafefeed1337</a>',
    '<a href="https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-0160">CVE-2014-0160</a>',
    '<a href="https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-0001">CVE-2014-0001</a>',
    '<a href="https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-13579">CVE-2014-13579</a>',
    '<a href="https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-999999999">CVE-2014-999999999</a>',
    '<a href="https://viewvc.svn.mozilla.org/vc?view=rev&amp;revision=2424">r2424</a>',
    '<a href="https://git.mozilla.org/?p=bugzilla/bugzilla.git;a=commitdiff;h=eab44b1">36f56bd..eab44b1  withuri -> withuri</a>',
    '<a href="https://git.mozilla.org/?p=bugzilla/bugzilla.git;a=commitdiff;h=eab44b1">36f56bd..eab44b1  nouri -> nouri</a>',
    '<a href="https://git.mozilla.org/?p=bugzilla/bugzilla.git;a=commitdiff;h=eab44b1">36f56bd..eab44b1  nologin -> nologin</a>',
    'https://bzr.mozilla.org/bmo/4.2/revision/9257',
);

foreach my $link (@links) {
    ok(index($text, $link) > -1, "check for $link");
}


done_testing;