fix ticketing system error on bootstrap of new install
[freeside.git] / rt / t / web / rest-search-user.t
1 use strict;
2 use warnings;
3 use RT::Test tests => undef;
4
5 my $root = RT::Test->load_or_create_user( Name => 'root', );
6 my $user_foo = RT::Test->load_or_create_user(
7     Name     => 'foo',
8     Password => 'password',
9 );
10 my $user_bar = RT::Test->load_or_create_user( Name => 'bar' );
11 my $user_baz = RT::Test->load_or_create_user( Name => 'baz' );
12 $user_baz->SetDisabled(1);
13
14 my ( $baseurl, $m ) = RT::Test->started_ok;
15
16 ok( $m->login, 'logged in' );
17
18 search_users_ok(
19     { query => 'id = ' . $user_foo->id },
20     [ $user_foo->id . ': foo' ],
21     'search by id'
22 );
23
24 search_users_ok(
25     {
26         query  => 'Name = ' . $user_foo->Name,
27         format => 's',
28         fields => 'id,name'
29     },
30     [ "id\tName", $user_foo->id . "\tfoo" ],
31     'search by name with customized fields'
32 );
33
34
35 search_users_ok(
36     { query => 'foo = 3' },
37     ['Invalid field specification: foo'],
38     'invalid field'
39 );
40
41 search_users_ok(
42     { query => 'id foo 3' },
43     ['Invalid operator specification: foo'],
44     'invalid op'
45 );
46
47 search_users_ok(
48     { query => 'password = foo' },
49     ['Invalid field specification: password'],
50     "can't search password"
51 );
52
53 search_users_ok(
54     { query => '', orderby => 'id' },
55     [ $root->id . ': root', $user_foo->id . ': foo', $user_bar->id . ': bar', ],
56     'order by id'
57 );
58
59 search_users_ok(
60     { query => '', orderby => 'name' },
61     [ $user_bar->id . ': bar', $user_foo->id . ': foo', $root->id . ': root' ],
62     'order by name'
63 );
64
65 search_users_ok(
66     { query => '', orderby => '+name' },
67     [ $user_bar->id . ': bar', $user_foo->id . ': foo', $root->id . ': root' ],
68     'order by +name'
69 );
70
71 search_users_ok(
72     { query => '', orderby => '-name' },
73     [ $root->id . ': root', $user_foo->id . ': foo', $user_bar->id . ': bar' ],
74     'order by -name'
75 );
76
77 search_users_ok(
78     { query => 'Disabled = 0', orderby => 'id' },
79     [ $root->id . ': root', $user_foo->id . ': foo', $user_bar->id . ': bar', ],
80     'enabled users'
81 );
82
83 search_users_ok(
84     { query => 'Disabled = 1', orderby => 'id' },
85     [ $user_baz->id . ': baz', ],
86     'disabled users'
87 );
88
89 ok( $m->login( 'foo', 'password', logout => 1 ), 'logged in as foo' );
90 search_users_ok(
91     { query => 'id = ' . $user_foo->id },
92     [ 'Permission denied' ],
93     "can't search without permission"
94 );
95
96 sub search_users_ok {
97     local $Test::Builder::Level = $Test::Builder::Level + 1;
98     my $query    = shift;
99     my $expected = shift;
100     my $name     = shift || 'search users';
101
102     my $uri = URI->new("$baseurl/REST/1.0/search/user");
103     $uri->query_form(%$query);
104     $m->get_ok($uri);
105
106     my @lines = split /\n/, $m->content;
107     shift @lines;    # header
108     shift @lines;    # empty line
109
110     is_deeply( \@lines, $expected, $name );
111
112 }
113
114 undef $m;
115 done_testing();