File: gentest.c

package info (click to toggle)
pwdb 0.54preD-3
  • links: PTS
  • area: main
  • in suites: hamm, slink
  • size: 644 kB
  • ctags: 797
  • sloc: ansic: 8,459; makefile: 346; sh: 204
file content (69 lines) | stat: -rw-r--r-- 2,158 bytes parent folder | download | duplicates (2)
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
/* this is a test for generic interface on pwdb */

#include <stdio.h>
#include <pwdb/pwdb_public.h>

#define USER  "morgan"
#define GECOS "GECOS field for testing"

int main(void)
{
    const struct pwdb * _pwdb = NULL;
    pwdb_flag flags;

    int retval;
    
    retval = pwdb_start();
    printf("pwdb_start call: %s, _pwdb=%p\n", pwdb_strerror(retval),_pwdb);

    retval=pwdb_locate("user", PWDB_DEFAULT, USER, PWDB_ID_UNKNOWN, &_pwdb);
    printf("locate returned: %s\n", pwdb_strerror(retval));
    pwdb_print_pwdb_struct(_pwdb);

    retval = pwdb_request("user", PWDB_DEFAULT, "members", &_pwdb);
    printf("members request returned: %s\n", pwdb_strerror(retval));
    pwdb_print_pwdb_struct(_pwdb);

    retval=pwdb_set_entry(_pwdb,"gecos",GECOS,1+strlen(GECOS)
              ,NULL,NULL,0);
    printf("set_entry returned: %s\n", pwdb_strerror(retval));

    retval=pwdb_flags("user", _pwdb->source, &flags);
    printf("flags(%o) returned: %s\n", flags, pwdb_strerror(retval));

    if ( flags & PWDB_F_NOUPDATE ) {
        printf("insufficient privilege to replace db entry\n");
    } else {
        retval=pwdb_replace("user", _pwdb->source, USER
			    , PWDB_ID_UNKNOWN, &_pwdb);
        printf("replace returned: %s\n", pwdb_strerror(retval));
    }

    /* Test for caching */
    _pwdb = NULL;
    retval=pwdb_locate("user", PWDB_DEFAULT, USER
		       , PWDB_ID_UNKNOWN, &_pwdb);
    printf("2nd locate returned: %s\n", pwdb_strerror(retval));
    pwdb_print_pwdb_struct(_pwdb);

    /* request their groups.. */

    retval=pwdb_request("group", PWDB_DEFAULT, "groups", &_pwdb);
    printf("request returned: %s\n", pwdb_strerror(retval));
    pwdb_print_pwdb_struct(_pwdb);

    retval = pwdb_delete(&_pwdb);
    printf("pwdb delete returned: %s\n", pwdb_strerror(retval));

    /* This one should fail */
    retval = pwdb_support("user", PWDB_DEFAULT, "password__1");
    printf("support for password__1: %s\n", pwdb_strerror(retval));

    /* This one should succeed */
    retval = pwdb_support("user", PWDB_DEFAULT, "passwd");
    printf("support for passwd: %s\n", pwdb_strerror(retval));

    pwdb_end();

    exit(retval);
}