initial checkin of module files for proper perl installation
[freeside.git] / test / cgi-test
1 #!/usr/bin/perl -Tw
2 #
3 # $Id: cgi-test,v 1.1 1999-04-08 13:05:40 ivan Exp $
4 #
5 # This is the beginning of a test suite for the web interface.
6 # It's also excellent for populating your database with some meaningful test
7 # data.  (a derivative is used by the web demo)
8 # It only works on an empty database (probably need empty counters too, and
9 # no arbirary RADIUS attributes).
10 # Usage: cgi-test http://base.freeside.url/with/path/ username password
11 # (Yes, if you were properly paranoid and are using SSL, you'll need to get
12 #  libwww-perl working with SSL to use this.)
13 #
14 # $Log: cgi-test,v $
15 # Revision 1.1  1999-04-08 13:05:40  ivan
16 # web interface tester / sample data creator
17 #
18
19 use strict;
20 #use diagnostics;
21 use subs qw( big_ugly_data_structure );
22 use CGI;
23 use LWP::UserAgent;
24
25 my ( $base_url, $username, $password ) = ( shift, shift, shift );
26
27 my @data = &big_ugly_data_structure;
28
29 my $ua = new LWP::UserAgent;
30 {
31   local $^W = 0;
32   eval '
33     sub LWP::UserAgent::get_basic_credentials {
34       #my $self = shift;
35       ( $username, $password );
36     }
37   ';
38 }
39
40 my $data;
41 while ( $data = shift @data ) {
42   my $cgi = new CGI ( $data->{'params'} );
43   my $full_url = $base_url. $data->{'url'}. '?'. $cgi->query_string;
44   #my $request = new HTTP::Request( 'POST', $full_url );
45   my $request = new HTTP::Request( 'GET', $full_url );
46   my $response = $ua->request( $request );
47   if ( $response->is_redirect ) {
48     die "Unexpected redirect!\n".
49            "URL: $full_url\n".
50            "To: ". $response->base. "\n"
51     ;
52   } elsif ( $response->is_success ) {
53     my $location = $response->base;
54     my $expected_location = $data->{'location'};
55     #if ( $location =~ /^$base_url$expected_location$/ ) {
56     if ( $location eq $base_url. $expected_location ) {
57       #warn "cool, got expected response $location from $full_url\n";
58     } else {
59       die "Strange, regular response, but unexpected base!\n".
60         "URL: $full_url\n".
61         "Base    : ". $response->base. "\n".
62         "Expected: $base_url$expected_location\n".
63         "Output: ". $response->content. "\n"
64       ;
65     }
66   } elsif ( $response->is_error ) {
67     die "Strange, I got an error\n".
68         "URL: $full_url\n".
69         "Error: ". $response->error_as_HTML. "\n".
70         "Output: ". $response->content. "\n"
71     ;
72   } elsif ( $response->is_info ) {
73     die "Strange, I got an info reponse\n".
74         "URL: $full_url\n".
75         "Output: ". $response->content. "\n"
76     ;
77   } else {
78     die "Really strange, got an unrecognized response from LWP::UserAgent!\n";
79   }
80 }
81
82 #---
83
84 sub big_ugly_data_structure {
85
86   (
87     { 'url'      => 'edit/process/part_svc.cgi',
88       'params'   => {
89                       'svcpart' => '',
90                       'svc'     => 'Shell',
91                       'svcdb'   => 'svc_acct',
92                       'svc_acct__popnum_flag' => '',
93                       'svc_acct__popnum' => '',
94                       'svc_acct__dir_flag' => '',
95                       'svc_acct__dir' => '',
96                       'svc_acct__username_flag' => '',
97                       'svc_acct__username' => '',
98                       'svc_acct__uid_flag' => '',
99                       'svc_acct__uid' => '',
100                       'svc_acct__quota_flag' => 'F',
101                       'svc_acct__quota' => '10',
102                       'svc_acct__slipip_flag' => 'F',
103                       'svc_acct__slipip' => '',
104                       'svc_acct___password_flag' => '',
105                       'svc_acct___password' => '',
106                       'svc_acct__gid_flag' => '',
107                       'svc_acct__gid' => '',
108                       'svc_acct__shell_flag' => 'D',
109                       'svc_acct__shell' => '/bin/sh',
110                       'svc_acct__finger_flag' => '',
111                       'svc_acct__finger' => '',
112                       'svc_domain__domain_flag' => '',
113                       'svc_domain__domain' => '',
114                       'svc_acct_sm__domuser_flag' => '',
115                       'svc_acct_sm__domuser' => '',
116                       'svc_acct_sm__domuid_flag' => '',
117                       'svc_acct_sm__domuid' => '',
118                       'svc_acct_sm__domsvc_flag' => '',
119                       'svc_acct_sm__domsvc' => '',
120                     },
121       'location' => 'browse/part_svc.cgi',
122     },
123     { 'url'      => 'edit/process/part_svc.cgi',
124       'params'   => {
125                       'svcpart' => '',
126                       'svc'     => 'SLIP/PPP',
127                       'svcdb'   => 'svc_acct',
128                       'svc_acct__popnum_flag' => '',
129                       'svc_acct__popnum' => '',
130                       'svc_acct__dir_flag' => '',
131                       'svc_acct__dir' => '',
132                       'svc_acct__username_flag' => '',
133                       'svc_acct__username' => '',
134                       'svc_acct__uid_flag' => '',
135                       'svc_acct__uid' => '',
136                       'svc_acct__quota_flag' => 'F',
137                       'svc_acct__quota' => '10',
138                       'svc_acct__slipip_flag' => 'D',
139                       'svc_acct__slipip' => '0.0.0.0',
140                       'svc_acct___password_flag' => '',
141                       'svc_acct___password' => '',
142                       'svc_acct__gid_flag' => '',
143                       'svc_acct__gid' => '',
144                       'svc_acct__shell_flag' => 'D',
145                       'svc_acct__shell' => '/bin/sh',
146                       'svc_acct__finger_flag' => '',
147                       'svc_acct__finger' => '',
148                       'svc_domain__domain_flag' => '',
149                       'svc_domain__domain' => '',
150                       'svc_acct_sm__domuser_flag' => '',
151                       'svc_acct_sm__domuser' => '',
152                       'svc_acct_sm__domuid_flag' => '',
153                       'svc_acct_sm__domuid' => '',
154                       'svc_acct_sm__domsvc_flag' => '',
155                       'svc_acct_sm__domsvc' => '',
156                     },
157       'location' => 'browse/part_svc.cgi',
158     },
159     { 'url'      => 'edit/process/part_svc.cgi',
160       'params'   => {
161                       'svcpart' => '',
162                       'svc'     => 'POP Mailbox',
163                       'svcdb'   => 'svc_acct',,
164                       'svc_acct__popnum_flag' => 'F',
165                       'svc_acct__popnum' => '',
166                       'svc_acct__dir_flag' => '',
167                       'svc_acct__dir' => '',
168                       'svc_acct__username_flag' => '',
169                       'svc_acct__username' => '',
170                       'svc_acct__uid_flag' => '',
171                       'svc_acct__uid' => '',
172                       'svc_acct__quota_flag' => 'F',
173                       'svc_acct__quota' => '10',
174                       'svc_acct__slipip_flag' => 'F',
175                       'svc_acct__slipip' => '',
176                       'svc_acct___password_flag' => '',
177                       'svc_acct___password' => '',
178                       'svc_acct__gid_flag' => '',
179                       'svc_acct__gid' => '',
180                       'svc_acct__shell_flag' => 'F',
181                       'svc_acct__shell' => '/bin/passwd',
182                       'svc_acct__finger_flag' => '',
183                       'svc_acct__finger' => '',
184                       'svc_domain__domain_flag' => '',
185                       'svc_domain__domain' => '',
186                       'svc_acct_sm__domuser_flag' => '',
187                       'svc_acct_sm__domuser' => '',
188                       'svc_acct_sm__domuid_flag' => '',
189                       'svc_acct_sm__domuid' => '',
190                       'svc_acct_sm__domsvc_flag' => '',
191                       'svc_acct_sm__domsvc' => '',
192                     },
193       'location' => 'browse/part_svc.cgi',
194     },
195     { 'url'      => 'edit/process/part_svc.cgi',
196       'params'   => {
197                       'svcpart' => '',
198                       'svc'     => 'Domain',
199                       'svcdb'   => 'svc_domain',,
200                       'svc_acct__popnum_flag' => '',
201                       'svc_acct__popnum' => '',
202                       'svc_acct__dir_flag' => '',
203                       'svc_acct__dir' => '',
204                       'svc_acct__username_flag' => '',
205                       'svc_acct__username' => '',
206                       'svc_acct__uid_flag' => '',
207                       'svc_acct__uid' => '',
208                       'svc_acct__quota_flag' => '',
209                       'svc_acct__quota' => '',
210                       'svc_acct__slipip_flag' => '',
211                       'svc_acct__slipip' => '',
212                       'svc_acct___password_flag' => '',
213                       'svc_acct___password' => '',
214                       'svc_acct__gid_flag' => '',
215                       'svc_acct__gid' => '',
216                       'svc_acct__shell_flag' => '',
217                       'svc_acct__shell' => '',
218                       'svc_acct__finger_flag' => '',
219                       'svc_acct__finger' => '',
220                       'svc_domain__domain_flag' => '',
221                       'svc_domain__domain' => '',
222                       'svc_acct_sm__domuser_flag' => '',
223                       'svc_acct_sm__domuser' => '',
224                       'svc_acct_sm__domuid_flag' => '',
225                       'svc_acct_sm__domuid' => '',
226                       'svc_acct_sm__domsvc_flag' => '',
227                       'svc_acct_sm__domsvc' => '',
228                     },
229       'location' => 'browse/part_svc.cgi',
230     },
231     { 'url'      => 'edit/process/part_svc.cgi',
232       'params'   => {
233                       'svcpart' => '',
234                       'svc'     => 'Domain email alias',
235                       'svcdb'   => 'svc_acct_sm',,
236                       'svc_acct__popnum_flag' => '',
237                       'svc_acct__popnum' => '',
238                       'svc_acct__dir_flag' => '',
239                       'svc_acct__dir' => '',
240                       'svc_acct__username_flag' => '',
241                       'svc_acct__username' => '',
242                       'svc_acct__uid_flag' => '',
243                       'svc_acct__uid' => '',
244                       'svc_acct__quota_flag' => '',
245                       'svc_acct__quota' => '',
246                       'svc_acct__slipip_flag' => '',
247                       'svc_acct__slipip' => '',
248                       'svc_acct___password_flag' => '',
249                       'svc_acct___password' => '',
250                       'svc_acct__gid_flag' => '',
251                       'svc_acct__gid' => '',
252                       'svc_acct__shell_flag' => '',
253                       'svc_acct__shell' => '',
254                       'svc_acct__finger_flag' => '',
255                       'svc_acct__finger' => '',
256                       'svc_domain__domain_flag' => '',
257                       'svc_domain__domain' => '',
258                       'svc_acct_sm__domuser_flag' => '',
259                       'svc_acct_sm__domuser' => '',
260                       'svc_acct_sm__domuid_flag' => '',
261                       'svc_acct_sm__domuid' => '',
262                       'svc_acct_sm__domsvc_flag' => '',
263                       'svc_acct_sm__domsvc' => '',
264                     },
265       'location' => 'browse/part_svc.cgi',
266     },
267
268     { 'url'      => 'edit/process/part_pkg.cgi',
269       'params'   => {
270                       'pkgpart' => '',
271                       'pkg' => 'Personal SLIP/PPP',
272                       'comment' => '$30/setup, $19.99/month',
273                       'setup' => '30',
274                       'recur' => '19.99',
275                       'freq' => '1',
276                       'pkg_svc1' => '0',
277                       'pkg_svc2' => '1',
278                       'pkg_svc3' => '0',
279                       'pkg_svc4' => '0',
280                       'pkg_svc5' => '0',
281                     },
282       'location' => 'browse/part_pkg.cgi',
283     },
284     { 'url'      => 'edit/process/part_pkg.cgi',
285       'params'   => {
286                       'pkgpart' => '',
287                       'pkg' => 'Personal SLIP/PPP',
288                       'comment' => '$0/setup, $179.88/year',
289                       'setup' => '0',
290                       'recur' => '179.88',
291                       'freq' => '12',
292                       'pkg_svc1' => '0',
293                       'pkg_svc2' => '1',
294                       'pkg_svc3' => '0',
295                       'pkg_svc4' => '0',
296                       'pkg_svc5' => '0',
297                     },
298       'location' => 'browse/part_pkg.cgi',
299     },
300     { 'url'      => 'edit/process/part_pkg.cgi',
301       'params'   => {
302                       'pkgpart' => '',
303                       'pkg' => 'Personal POP mailbox',
304                       'comment' => '$10/setup, $5/month',
305                       'setup' => '10',
306                       'recur' => '5',
307                       'freq' => '1',
308                       'pkg_svc1' => '0',
309                       'pkg_svc2' => '0',
310                       'pkg_svc3' => '1',
311                       'pkg_svc4' => '0',
312                       'pkg_svc5' => '0',
313                     },
314       'location' => 'browse/part_pkg.cgi',
315     },
316     { 'url'      => 'edit/process/part_pkg.cgi',
317       'params'   => {
318                       'pkgpart' => '',
319                       'pkg' => 'Business SLIP/PPP',
320                       'comment' => '$30/setup, $29.99/month',
321                       'setup' => '30',
322                       'recur' => '29.99',
323                       'freq' => '1',
324                       'pkg_svc1' => '0',
325                       'pkg_svc2' => '1',
326                       'pkg_svc3' => '0',
327                       'pkg_svc4' => '1',
328                       'pkg_svc5' => '1',
329                     },
330       'location' => 'browse/part_pkg.cgi',
331     },
332     { 'url'      => 'edit/process/part_pkg.cgi',
333       'params'   => {
334                       'pkgpart' => '',
335                       'pkg' => 'Business SLIP/PPP',
336                       'comment' => '$0/setup, $299.88/year',
337                       'setup' => '0',
338                       'recur' => '299.88',
339                       'freq' => '12',
340                       'pkg_svc1' => '0',
341                       'pkg_svc2' => '1',
342                       'pkg_svc3' => '0',
343                       'pkg_svc4' => '1',
344                       'pkg_svc5' => '1',
345                     },
346       'location' => 'browse/part_pkg.cgi',
347     },
348     { 'url'      => 'edit/process/part_pkg.cgi',
349       'params'   => {
350                       'pkgpart' => '',
351                       'pkg' => 'Business POP mailbox',
352                       'comment' => '$10/setup, $5/month',
353                       'setup' => '10',
354                       'recur' => '5',
355                       'freq' => '1',
356                       'pkg_svc1' => '0',
357                       'pkg_svc2' => '0',
358                       'pkg_svc3' => '1',
359                       'pkg_svc4' => '0',
360                       'pkg_svc5' => '1',
361                     },
362       'location' => 'browse/part_pkg.cgi',
363     },
364     { 'url'      => 'edit/process/part_pkg.cgi',
365       'params'   => {
366                       'pkgpart' => '',
367                       'pkg' => 'UNIX shell',
368                       'comment' => '$20/setup, $9.99/month',
369                       'setup' => '20',
370                       'recur' => '9.99',
371                       'freq' => '1',
372                       'pkg_svc1' => '1',
373                       'pkg_svc2' => '0',
374                       'pkg_svc3' => '0',
375                       'pkg_svc4' => '0',
376                       'pkg_svc5' => '0',
377                     },
378       'location' => 'browse/part_pkg.cgi',
379     },
380     { 'url'      => 'edit/process/part_pkg.cgi',
381       'params'   => {
382                       'pkgpart' => '',
383                       'pkg' => 'Point-to-point T1',
384                       'comment' => '$1000/setup, $1000/month',
385                       'setup' => '1000',
386                       'recur' => '1000',
387                       'freq' => '1',
388                       'pkg_svc1' => '0',
389                       'pkg_svc2' => '0',
390                       'pkg_svc3' => '5',
391                       'pkg_svc4' => '1',
392                       'pkg_svc5' => '5',
393                     },
394       'location' => 'browse/part_pkg.cgi',
395     },
396     { 'url'      => 'edit/process/part_pkg.cgi',
397       'params'   => {
398                       'pkgpart' => '',
399                       'pkg' => 'Cisco 2501 Router',
400                       'comment' => '$2500',
401                       'setup' => '2500',
402                       'recur' => '0',
403                       'freq' => '0',
404                       'pkg_svc1' => '0',
405                       'pkg_svc2' => '0',
406                       'pkg_svc3' => '0',
407                       'pkg_svc4' => '0',
408                       'pkg_svc5' => '0',
409                     },
410       'location' => 'browse/part_pkg.cgi',
411     },
412
413     { 'url'      => 'edit/process/agent_type.cgi',
414       'params'   => {
415                       'typenum' => '',
416                       'atype' => 'Internal Sales',
417                       'pkgpart1' => 'ON',
418                       'pkgpart2' => 'ON',
419                       'pkgpart3' => 'ON',
420                       'pkgpart4' => 'ON',
421                       'pkgpart5' => 'ON',
422                       'pkgpart6' => 'ON',
423                       'pkgpart7' => 'ON',
424                       'pkgpart8' => 'ON',
425                       'pkgpart9' => 'ON',
426                     },
427       'location' => 'browse/agent_type.cgi',
428     },
429
430     { 'url'      => 'edit/process/agent.cgi',
431       'params'   => {
432                       'agentnum' => '',
433                       'agent' => 'Internal Sales',
434                       'typenum' => '1',
435                       'freq' => '',
436                       'prog' => '',
437                     },
438       'location' => 'browse/agent.cgi',
439     },
440
441     { 'url'      => 'edit/process/part_referral.cgi',
442       'params'   => {
443                       'refnum' => '',
444                       'referral' => 'Another customer',
445                     },
446       'location' => 'browse/part_referral.cgi',
447     },
448     { 'url'      => 'edit/process/part_referral.cgi',
449       'params'   => {
450                       'refnum' => '',
451                       'referral' => 'Newspaper ad',
452                     },
453       'location' => 'browse/part_referral.cgi',
454     },
455
456     { 'url'      => 'edit/process/svc_acct_pop.cgi',
457       'params'   => {
458                       'popnum' => '',
459                       'city' => 'Line Lexington',
460                       'state' => 'PA',
461                       'ac' => '215',
462                       'exch' => '996',
463                     },
464       'location' => 'browse/svc_acct_pop.cgi',
465     },
466     { 'url'      => 'edit/process/svc_acct_pop.cgi',
467       'params'   => {
468                       'popnum' => '',
469                       'city' => 'Oakland',
470                       'state' => 'CA',
471                       'ac' => '510',
472                       'exch' => '208',
473                     },
474       'location' => 'browse/svc_acct_pop.cgi',
475     },
476
477     { 'url'      => 'edit/process/cust_main.cgi',
478       'params'   => {
479                       'custnum' => '',
480                       'agentnum' => '1',
481                       'refnum' => '1',
482                       'last' => 'Hogan',
483                       'first' => 'Shawn D.',
484                       'ss' => '',
485                       'company' => 'Digital Point Solutions',
486                       'address1' => '3570 Tony Drive',
487                       'address2' => '',
488                       'city' => 'San Diego',
489                       'state' => 'CA / US',
490                       'zip' => '92122-2307',
491                       'daytime' => '',
492                       'night' => '',
493                       'fax' => '',
494                       'tax' => '',
495                       'invoicing_list_POST' => '',
496                       'invoicing_list' => '',
497                       'payby' => 'BILL',
498                       'CARD_payinfo' => '',
499                       'CARD_month' => '1',
500                       'CARD_year' => '1999',
501                       'CARD_payname' => '',
502                       'BILL_payinfo' => '',
503                       'BILL_month' => '12',
504                       'BILL_year' => '2037',
505                       'BILL_payname' => 'Accounts Payable',
506                       'COMP_payinfo' => '',
507                       'COMP_month' => '1',
508                       'COMP_year' => '1999',
509                       'pkgpart_svcpart' => '1_2',
510                       'username' => 'cyborg',
511                       '_password' => '',
512                       'popnum' => '1',
513                       'otaker' => 'example',
514                     },
515       'location' => 'view/cust_main.cgi?1',
516     },
517     { 'url'      => 'edit/process/cust_main.cgi',
518       'params'   => {
519                       'custnum' => '',
520                       'agentnum' => '1',
521                       'refnum' => '2',
522                       'last' => 'Ford',
523                       'first' => 'Bill',
524                       'ss' => '',
525                       'company' => 'Boardtown Corporation',
526                       'address1' => '116 East Main Street',
527                       'address2' => '',
528                       'city' => 'Starkville',
529                       'state' => 'MS / US',
530                       'zip' => '39759',
531                       'daytime' => '',
532                       'night' => '',
533                       'fax' => '',
534                       'tax' => '',
535                       'invoicing_list_POST' => '',
536                       'invoicing_list' => '',
537                       'payby' => 'BILL',
538                       'CARD_payinfo' => '',
539                       'CARD_month' => '1',
540                       'CARD_year' => '1999',
541                       'CARD_payname' => '',
542                       'BILL_payinfo' => '',
543                       'BILL_month' => '12',
544                       'BILL_year' => '2037',
545                       'BILL_payname' => 'Accounts Payable',
546                       'COMP_payinfo' => '',
547                       'COMP_month' => '1',
548                       'COMP_year' => '1999',
549                       'pkgpart_svcpart' => '3_3',
550                       'username' => 'billf',
551                       '_password' => '',
552                       'popnum' => '',
553                       'otaker' => 'example',
554                     },
555       'location' => 'view/cust_main.cgi?2',
556     },
557
558            
559   );
560 }
561