root/trunk/t/75_revert_user.t

Revision 997, 6.4 kB (checked in by nick, 22 months ago)

Add test for revert user stuff

Line 
1use strict;
2use Wiki::Toolkit::Setup::SQLite;
3use OpenGuides;
4use OpenGuides::Test;
5use Test::More;
6
7eval { require DBD::SQLite; };
8
9if ( $@ ) {
10    my ($error) = $@ =~ /^(.*?)\n/;
11    plan skip_all => "DBD::SQLite could not be used - no database to test with ($error)";
12}
13
14plan tests => 23;
15
16Wiki::Toolkit::Setup::SQLite::setup( { dbname => "t/node.db" } );
17my $config = OpenGuides::Test->make_basic_config;
18$config->script_name( "wiki.cgi" );
19$config->script_url( "http://example.com/" );
20my $guide = OpenGuides->new( config => $config );
21isa_ok( $guide, "OpenGuides" );
22my $wiki = $guide->wiki;
23isa_ok( $wiki, "Wiki::Toolkit" );
24
25# Clear out the database from any previous runs.
26foreach my $del_node ( $wiki->list_all_nodes ) {
27    print "# Deleting node $del_node\n";
28    $wiki->delete_node( $del_node ) or die "Can't delete $del_node";
29}
30
31my %details;
32my %vars;
33
34
35# Add a page, user is bob
36my $q = CGI->new;
37$q->param( -name => "content", -value => "foo" );
38$q->param( -name => "categories", -value => "Alpha" );
39$q->param( -name => "locales", -value => "" );
40$q->param( -name => "phone", -value => "" );
41$q->param( -name => "fax", -value => "" );
42$q->param( -name => "website", -value => "" );
43$q->param( -name => "hours_text", -value => "" );
44$q->param( -name => "address", -value => "" );
45$q->param( -name => "postcode", -value => "" );
46$q->param( -name => "map_link", -value => "" );
47$q->param( -name => "os_x", -value => "" );
48$q->param( -name => "os_y", -value => "" );
49$q->param( -name => "username", -value => "bob" );
50$q->param( -name => "comment", -value => "foo" );
51$q->param( -name => "edit_type", -value => "Minor tidying" );
52$ENV{REMOTE_ADDR} = "127.0.0.1";
53
54my $output = $guide->commit_node(
55                                  return_output => 1,
56                                  id => "Wombats",
57                                  cgi_obj => $q,
58                                );
59
60%details = $wiki->retrieve_node("Wombats");
61is( $details{version}, 1 );
62is( $details{metadata}->{username}->[0], "bob" );
63
64
65# Now add a new version, user is jim
66$q->param( -name => "categories", -value => "Alpha\r\nBeta" );
67$q->param( -name => "locales", -value => "Hello" );
68$q->param( -name => "edit_type", -value => "Normal edit" );
69$q->param( -name => "checksum", -value => $details{checksum} );
70$q->param( -name => "username", -value => "jim" );
71$output = $guide->commit_node(
72                                  return_output => 1,
73                                  id => "Wombats",
74                                  cgi_obj => $q,
75                                );
76
77%details = $wiki->retrieve_node("Wombats");
78is( $details{version}, 2 );
79is( $details{metadata}->{username}->[0], "jim" );
80
81
82# And again, another bob one
83$q->param( -name => "checksum", -value => $details{checksum} );
84$q->param( -name => "username", -value => "bob" );
85$output = $guide->commit_node(
86                                  return_output => 1,
87                                  id => "Wombats",
88                                  cgi_obj => $q,
89                                );
90
91%details = $wiki->retrieve_node("Wombats");
92is( $details{version}, 3 );
93is( $details{metadata}->{username}->[0], "bob" );
94
95# Finally, a foo one
96$q->param( -name => "checksum", -value => $details{checksum} );
97$q->param( -name => "username", -value => "foo" );
98$output = $guide->commit_node(
99                                  return_output => 1,
100                                  id => "Wombats",
101                                  cgi_obj => $q,
102                                );
103
104%details = $wiki->retrieve_node("Wombats");
105is( $details{version}, 4 );
106is( $details{metadata}->{username}->[0], "foo" );
107
108
109# Check that there are 2 versions for bob
110$q = CGI->new;
111%vars = $guide->revert_user_interface(
112                            return_tt_vars => 1,
113                            return_output => 0,
114                            username => 'bob'
115);
116my @edits = @{$vars{'edits'}};
117is( scalar @edits, 2 );
118
119# And one for foo
120%vars = $guide->revert_user_interface(
121                            return_tt_vars => 1,
122                            return_output => 0,
123                            username => 'foo'
124);
125@edits = @{$vars{'edits'}};
126is( scalar @edits, 1 );
127
128# And one for jim
129%vars = $guide->revert_user_interface(
130                            return_tt_vars => 1,
131                            return_output => 0,
132                            username => 'jim'
133);
134@edits = @{$vars{'edits'}};
135is( scalar @edits, 1 );
136
137
138# Currently, we're on v4
139%details = $wiki->retrieve_node("Wombats");
140is( $details{'version'}, 4 );
141
142
143# Delete for foo - last one
144%vars = $guide->revert_user_interface(
145                            return_tt_vars => 1,
146                            return_output => 0,
147                            password => $guide->config->admin_pass,
148                            username => 'foo'
149);
150@edits = @{$vars{'edits'}};
151is( scalar @edits, 0 );
152
153%vars = $guide->revert_user_interface(
154                            return_tt_vars => 1,
155                            return_output => 0,
156                            username => 'foo'
157);
158@edits = @{$vars{'edits'}};
159is( scalar @edits, 0 );
160
161
162# Now down to version 3
163%details = $wiki->retrieve_node("Wombats");
164is( $details{'version'}, 3 );
165
166
167# Now for jim - middle one (v2)
168%vars = $guide->revert_user_interface(
169                            return_tt_vars => 1,
170                            return_output => 0,
171                            password => $guide->config->admin_pass,
172                            username => 'jim'
173);
174@edits = @{$vars{'edits'}};
175is( scalar @edits, 0 );
176
177%vars = $guide->revert_user_interface(
178                            return_tt_vars => 1,
179                            return_output => 0,
180                            username => 'jim'
181);
182@edits = @{$vars{'edits'}};
183is( scalar @edits, 0 );
184
185
186# Still on v3
187%details = $wiki->retrieve_node("Wombats");
188is( $details{'version'}, 3 );
189
190
191# Now for bob - first and last
192%vars = $guide->revert_user_interface(
193                            return_tt_vars => 1,
194                            return_output => 0,
195                            password => $guide->config->admin_pass,
196                            username => 'bob'
197);
198@edits = @{$vars{'edits'}};
199is( scalar @edits, 0 );
200
201%vars = $guide->revert_user_interface(
202                            return_tt_vars => 1,
203                            return_output => 0,
204                            username => 'bob'
205);
206@edits = @{$vars{'edits'}};
207is( scalar @edits, 0 );
208
209
210# Page is gone
211%details = $wiki->retrieve_node("Wombats");
212is( $details{'version'}, 0 );
Note: See TracBrowser for help on using the browser.