File: 902_node_name_from_cgi_obj.t

package info (click to toggle)
openguides 0.84-1.2
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 1,628 kB
  • sloc: perl: 4,812; sh: 56; javascript: 56; makefile: 19
file content (101 lines) | stat: -rw-r--r-- 4,241 bytes parent folder | download | duplicates (6)
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
91
92
93
94
95
96
97
98
99
100
101
use strict;
use OpenGuides;
use OpenGuides::CGI;
use OpenGuides::Test;
use Test::More;

eval { require DBD::SQLite; };
if ( $@ ) {
    my ($error) = $@ =~ /^(.*?)\n/;
    plan skip_all =>
        "DBD::SQLite could not be used - no database to test with. ($error)";
}

plan tests => 18;

# Clear out the database from any previous runs.
OpenGuides::Test::refresh_db();

my $config = OpenGuides::Test->make_basic_config;
my $guide = OpenGuides->new( config => $config );
my $wiki = $guide->wiki;

# Write a node.
OpenGuides::Test->write_data(
                              guide => $guide,
                              node  => "Ship Of Fools",
                              return_output => 1,
                            );

my ( $q, $node, $param );

# Test we get the right name/param with various CGI objects.  Make sure to
# always start with an empty one by passing the empty string as arg.

$q = CGI->new( "" );
$q->param( -name => "id", -value => "Ship_Of_Fools" );
$node = OpenGuides::CGI->extract_node_name( cgi_obj => $q, wiki => $wiki );
is( $node, "Ship Of Fools",
    "extract_node_name gives correct name with id param" );
$param = OpenGuides::CGI->extract_node_param( cgi_obj => $q, wiki => $wiki );
is( $param, "Ship_Of_Fools", "...as does extract_node_param" );

$q = CGI->new( "" );
$q->param( -name => "title", -value => "Ship_Of_Fools" );
$node = OpenGuides::CGI->extract_node_name( cgi_obj => $q, wiki => $wiki );
is( $node, "Ship Of Fools", "title param works for node name" );
$param = OpenGuides::CGI->extract_node_param( cgi_obj => $q, wiki => $wiki );
is( $param, "Ship_Of_Fools", "...and for node param" );

$q = CGI->new( "Ship_Of_Fools" );
$node = OpenGuides::CGI->extract_node_name( cgi_obj => $q, wiki => $wiki );
is( $node, "Ship Of Fools", "whole-string node param works for node name" );
$param = OpenGuides::CGI->extract_node_param( cgi_obj => $q, wiki => $wiki );
is( $param, "Ship_Of_Fools", "...and for node param" );

# Now try it with encoded spaces instead of underscores.
$q = CGI->new( "" );
$q->param( -name => "id", -value => "Ship%20Of%20Fools" );
$node = OpenGuides::CGI->extract_node_name( cgi_obj => $q, wiki => $wiki );
is( $node, "Ship Of Fools",
    "id param works for node name with encoded spaces" );
$param = OpenGuides::CGI->extract_node_param( cgi_obj => $q, wiki => $wiki );
is( $param, "Ship Of Fools", "...as does node param" );

$q = CGI->new( "" );
$q->param( -name => "title", -value => "Ship%20Of%20Fools" );
$node = OpenGuides::CGI->extract_node_name( cgi_obj => $q, wiki => $wiki );
is( $node, "Ship Of Fools",
    "title param works for node name with encoded spaces" );
$param = OpenGuides::CGI->extract_node_param( cgi_obj => $q, wiki => $wiki );
is( $param, "Ship Of Fools", "...as does node param" );

$q = CGI->new( "Ship%20Of%20Fools" );
$node = OpenGuides::CGI->extract_node_name( cgi_obj => $q, wiki => $wiki );
is( $node, "Ship Of Fools",
    "whole-string node param works for node name with encoded spaces" );
$param = OpenGuides::CGI->extract_node_param( cgi_obj => $q, wiki => $wiki );
is( $param, "Ship Of Fools", "...as does node param" );

# Finally try it with plus signs.
$q = CGI->new( "" );
$q->param( -name => "id", -value => "Ship+Of+Fools" );
$node = OpenGuides::CGI->extract_node_name( cgi_obj => $q, wiki => $wiki );
is( $node, "Ship Of Fools", "id param works for node name with plus signs" );
$param = OpenGuides::CGI->extract_node_param( cgi_obj => $q, wiki => $wiki );
is( $param, "Ship Of Fools", "...as does node param" );

$q = CGI->new( "" );
$q->param( -name => "title", -value => "Ship+Of+Fools" );
$node = OpenGuides::CGI->extract_node_name( cgi_obj => $q, wiki => $wiki );
is( $node, "Ship Of Fools",
    "title param works for node name with plus signs" );
$param = OpenGuides::CGI->extract_node_param( cgi_obj => $q, wiki => $wiki );
is( $param, "Ship Of Fools", "...as does node param" );

$q = CGI->new( "Ship+Of+Fools" );
$node = OpenGuides::CGI->extract_node_name( cgi_obj => $q, wiki => $wiki );
is( $node, "Ship Of Fools",
    "whole-string node param works for node name with plus signs" );
$param = OpenGuides::CGI->extract_node_param( cgi_obj => $q, wiki => $wiki );
is( $param, "Ship Of Fools", "...as does node param" );