diff options
Diffstat (limited to 'src/tests')
-rw-r--r-- | src/tests/deps-exe/test-all-fallback | 4 | ||||
-rw-r--r-- | src/tests/deps-exe/test-switch | 4 | ||||
-rw-r--r-- | src/tests/deps-exe/test-unix | 2 | ||||
-rwxr-xr-x | src/tests/test-all-fallback.baseline | 7 | ||||
-rw-r--r-- | src/tests/test-all-fallback.c | 53 | ||||
-rwxr-xr-x | src/tests/test-switch.baseline | 7 | ||||
-rw-r--r-- | src/tests/test-switch.c | 83 | ||||
-rwxr-xr-x | src/tests/test-switch.wrapper | 21 | ||||
-rwxr-xr-x | src/tests/test-unix.baseline | 7 | ||||
-rw-r--r-- | src/tests/test-unix.c | 53 |
10 files changed, 241 insertions, 0 deletions
diff --git a/src/tests/deps-exe/test-all-fallback b/src/tests/deps-exe/test-all-fallback new file mode 100644 index 0000000..704fc90 --- /dev/null +++ b/src/tests/deps-exe/test-all-fallback @@ -0,0 +1,4 @@ +${LIBNSSS} +-lskarnet +${SOCKET_LIB} +${TAINNOW_LIB} diff --git a/src/tests/deps-exe/test-switch b/src/tests/deps-exe/test-switch new file mode 100644 index 0000000..704fc90 --- /dev/null +++ b/src/tests/deps-exe/test-switch @@ -0,0 +1,4 @@ +${LIBNSSS} +-lskarnet +${SOCKET_LIB} +${TAINNOW_LIB} diff --git a/src/tests/deps-exe/test-unix b/src/tests/deps-exe/test-unix new file mode 100644 index 0000000..bbe01a8 --- /dev/null +++ b/src/tests/deps-exe/test-unix @@ -0,0 +1,2 @@ +${LIBNSSS} +-lskarnet diff --git a/src/tests/test-all-fallback.baseline b/src/tests/test-all-fallback.baseline new file mode 100755 index 0000000..31fba7e --- /dev/null +++ b/src/tests/test-all-fallback.baseline @@ -0,0 +1,7 @@ +#!/bin/sh -e + +cat /etc/passwd +echo +id -u root +echo +cat /etc/group diff --git a/src/tests/test-all-fallback.c b/src/tests/test-all-fallback.c new file mode 100644 index 0000000..666d2f7 --- /dev/null +++ b/src/tests/test-all-fallback.c @@ -0,0 +1,53 @@ +/* ISC license. */ + +#include <errno.h> +#include <skalibs/buffer.h> +#include <skalibs/strerr2.h> +#include <skalibs/lolstdio.h> +#include <nsss/pwd-def.h> +#include <nsss/grp-def.h> +#include <nsss/nsss-all.h> + +int main (void) +{ + PROG = "test-all-fallback" ; + for (;;) + { + struct passwd *pw ; + errno = 0 ; + pw = nsss_all_getpwent() ; + if (!pw) break ; + lolprintf("%s:%s:%d:%d:%s:%s:%s\n", pw->pw_name, pw->pw_passwd, (int)pw->pw_uid, (int)pw->pw_gid, pw->pw_gecos, pw->pw_dir, pw->pw_shell) ; + } + if (errno) + strerr_diefu1sys(111, "nsss_all_getpwent") ; + nsss_all_endpwent() ; + lolprintf("\n") ; + + { + struct passwd *pw = nsss_all_getpwnam("root") ; + lolprintf("%u\n\n", (unsigned int)pw->pw_uid) ; + } + + for (;;) + { + struct group *gr ; + char **p ; + errno = 0 ; + gr = nsss_all_getgrent() ; + if (!gr) break ; + p = gr->gr_mem ; + lolprintf("%s:%s:%d:", gr->gr_name, gr->gr_passwd, (int)gr->gr_gid) ; + if (*p) + { + while (*p) lolprintf("%s,", *p++) ; + buffer_unput(buffer_1, 1) ; + } + buffer_put(buffer_1, "\n", 1) ; + } + if (errno) + strerr_diefu1sys(111, "nsss_all_getgrent") ; + nsss_all_endgrent() ; + buffer_flush(buffer_1) ; + return 0 ; +} diff --git a/src/tests/test-switch.baseline b/src/tests/test-switch.baseline new file mode 100755 index 0000000..31fba7e --- /dev/null +++ b/src/tests/test-switch.baseline @@ -0,0 +1,7 @@ +#!/bin/sh -e + +cat /etc/passwd +echo +id -u root +echo +cat /etc/group diff --git a/src/tests/test-switch.c b/src/tests/test-switch.c new file mode 100644 index 0000000..0133777 --- /dev/null +++ b/src/tests/test-switch.c @@ -0,0 +1,83 @@ +/* ISC license. */ + +#include <errno.h> +#include <skalibs/buffer.h> +#include <skalibs/strerr2.h> +#include <skalibs/stralloc.h> +#include <skalibs/genalloc.h> +#include <skalibs/lolstdio.h> +#include <skalibs/tai.h> +#include <nsss/pwd-def.h> +#include <nsss/grp-def.h> +#include <nsss/nsss-switch.h> + +#define S "./.test-switch-socket" + +int main (void) +{ + nsss_switch_t a = NSSS_SWITCH_ZERO ; + stralloc sa = STRALLOC_ZERO ; + genalloc ga = GENALLOC_ZERO ; + tain_t deadline ; + PROG = "test-switch" ; + tain_now_g() ; + tain_from_millisecs(&deadline, 10000) ; + tain_add_g(&deadline, &deadline) ; + + if (!nsss_switch_start_g(&a, NSSS_SWITCH_PWD, S, &deadline)) + strerr_diefu1sys(111, "nsss_switch_start") ; + + for (;;) + { + struct passwd pw ; + errno = 0 ; + if (!nsss_switch_pwd_get_g(&a, &pw, &sa, &deadline)) break ; + lolprintf("%s:%s:%d:%d:%s:%s:%s\n", pw.pw_name, pw.pw_passwd, (int)pw.pw_uid, (int)pw.pw_gid, pw.pw_gecos, pw.pw_dir, pw.pw_shell) ; + sa.len = 0 ; + } + if (errno) + strerr_diefu1sys(111, "nsss_switch_pwd_get") ; + if (!nsss_switch_pwd_end_g(&a, &deadline)) + strerr_diefu1sys(111, "nsss_switch_pwd_end") ; + lolprintf("\n") ; + + { + struct passwd pw ; + if (!nsss_switch_pwd_getbyname_g(&a, &pw, &sa, "root", &deadline)) + strerr_diefu1sys(111, "nsss_switch_pwd_getbyname") ; + lolprintf("%u\n\n", (unsigned int)pw.pw_uid) ; + sa.len = 0 ; + } + + if (!nsss_switch_start_g(&a, NSSS_SWITCH_GRP, S, &deadline)) + strerr_diefu1sys(111, "nsss_switch_start") ; + nsss_switch_end(&a, NSSS_SWITCH_PWD) ; + buffer_flush(buffer_1) ; + + for (;;) + { + struct group gr ; + char **p ; + errno = 0 ; + if (!nsss_switch_grp_get_g(&a, &gr, &sa, &ga, &deadline)) break ; + p = gr.gr_mem ; + lolprintf("%s:%s:%d:", gr.gr_name, gr.gr_passwd, (int)gr.gr_gid) ; + buffer_flush(buffer_1) ; + if (*p) + { + while (*p) lolprintf("%s,", *p++) ; + buffer_unput(buffer_1, 1) ; + } + buffer_put(buffer_1, "\n", 1) ; + sa.len = 0 ; + genalloc_setlen(char *, &ga, 0) ; + } + if (errno) + strerr_diefu1sys(111, "nsss_switch_grp_get") ; + if (!nsss_switch_grp_end_g(&a, &deadline)) + strerr_diefu1sys(111, "nsss_switch_grp_end") ; + nsss_switch_end(&a, NSSS_SWITCH_GRP) ; + + buffer_flush(buffer_1) ; + return 0 ; +} diff --git a/src/tests/test-switch.wrapper b/src/tests/test-switch.wrapper new file mode 100755 index 0000000..5117400 --- /dev/null +++ b/src/tests/test-switch.wrapper @@ -0,0 +1,21 @@ +#!/bin/sh -e + +S=./.test-switch-socket +F=./.test-switch-fifo + +pid=0 + +cleanup () { + kill $pid + rm -f $S +} + +mkfifo $F +head -n 1 < $F >/dev/null & +pid=$! +s6-ipcserver -1 -- $S ./nsssd-unix > $F & +wait $pid +pid=$! +rm -f $F +trap cleanup TERM INT EXIT +./test-switch diff --git a/src/tests/test-unix.baseline b/src/tests/test-unix.baseline new file mode 100755 index 0000000..31fba7e --- /dev/null +++ b/src/tests/test-unix.baseline @@ -0,0 +1,7 @@ +#!/bin/sh -e + +cat /etc/passwd +echo +id -u root +echo +cat /etc/group diff --git a/src/tests/test-unix.c b/src/tests/test-unix.c new file mode 100644 index 0000000..98b6ae8 --- /dev/null +++ b/src/tests/test-unix.c @@ -0,0 +1,53 @@ +/* ISC license. */ + +#include <errno.h> +#include <skalibs/buffer.h> +#include <skalibs/strerr2.h> +#include <skalibs/lolstdio.h> +#include <nsss/pwd-def.h> +#include <nsss/grp-def.h> +#include <nsss/nsss-unix.h> + +int main (void) +{ + PROG = "test-unix" ; + for (;;) + { + struct passwd *pw ; + errno = 0 ; + pw = nsss_unix_getpwent() ; + if (!pw) break ; + lolprintf("%s:%s:%d:%d:%s:%s:%s\n", pw->pw_name, pw->pw_passwd, (int)pw->pw_uid, (int)pw->pw_gid, pw->pw_gecos, pw->pw_dir, pw->pw_shell) ; + } + if (errno) + strerr_diefu1sys(111, "nsss_unix_getpwent") ; + nsss_unix_endpwent() ; + lolprintf("\n") ; + + { + struct passwd *pw = nsss_unix_getpwnam("root") ; + lolprintf("%u\n\n", (unsigned int)pw->pw_uid) ; + } + + for (;;) + { + struct group *gr ; + char **p ; + errno = 0 ; + gr = nsss_unix_getgrent() ; + if (!gr) break ; + p = gr->gr_mem ; + lolprintf("%s:%s:%d:", gr->gr_name, gr->gr_passwd, (int)gr->gr_gid) ; + if (*p) + { + while (*p) lolprintf("%s,", *p++) ; + buffer_unput(buffer_1, 1) ; + } + buffer_put(buffer_1, "\n", 1) ; + } + if (errno) + strerr_diefu1sys(111, "nsss_unix_getgrent") ; + nsss_unix_endgrent() ; + buffer_flush(buffer_1) ; + return 0 ; +} |