Lines Matching +full:test +full:- +full:config

2  * PAM option parsing test suite.
4 * The canonical version of this file is maintained in the rra-c-util package,
5 * which can be found at <https://www.eyrie.org/~eagle/software/rra-c-util/>.
9 * Copyright 2010-2014
30 * SPDX-License-Identifier: MIT
33 #include <config.h>
39 #include <pam-util/args.h>
40 #include <pam-util/options.h>
41 #include <pam-util/vector.h>
64 /* clang-format off */
71 /* clang-format on */
79 * config option is set to the expected value.
91 * A macro used to test error reporting from putil_args_parse(). This reuses
105 is_int((p), seen->lines[0].priority, "...priority for %s", (a)); \
106 is_string((e), seen->lines[0].line, "...error for %s", (a)); \
113 * Allocate and initialize a new struct config.
123 * Free a struct config and all of its members.
126 config_free(struct pam_config *config) in config_free() argument
128 if (config == NULL) in config_free()
130 vector_free(config->cells); in config_free()
131 free(config->program); in config_free()
132 free(config); in config_free()
166 if (pam_start("test", NULL, &conv, &pamh) != PAM_SUCCESS) in main()
175 args->config = config_new(); in main()
178 ok(args->config->cells == NULL, "...cells default"); in main()
179 is_int(false, args->config->debug, "...debug default"); in main()
180 is_int(10, args->config->expires, "...expires default"); in main()
181 is_int(true, args->config->ignore_root, "...ignore_root default"); in main()
182 is_int(0, args->config->minimum_uid, "...minimum_uid default"); in main()
183 ok(args->config->program == NULL, "...program default"); in main()
188 ok(args->config->cells == NULL, "...cells still default"); in main()
189 is_int(false, args->config->debug, "...debug still default"); in main()
190 is_int(10, args->config->expires, "...expires default"); in main()
191 is_int(true, args->config->ignore_root, "...ignore_root still default"); in main()
192 is_int(0, args->config->minimum_uid, "...minimum_uid still default"); in main()
193 ok(args->config->program == NULL, "...program still default"); in main()
198 if (args->config->cells == NULL) in main()
201 ok(args->config->cells != NULL, "...cells is set"); in main()
202 is_int(2, args->config->cells->count, "...with two cells"); in main()
203 is_string("stanford.edu", args->config->cells->strings[0], in main()
205 is_string("ir.stanford.edu", args->config->cells->strings[1], in main()
208 is_int(true, args->config->debug, "...debug is set"); in main()
209 is_int(86400, args->config->expires, "...expires is set"); in main()
210 is_int(true, args->config->ignore_root, "...ignore_root is set"); in main()
211 is_int(1000, args->config->minimum_uid, "...minimum_uid is set"); in main()
212 is_string("/bin/true", args->config->program, "...program is set"); in main()
213 config_free(args->config); in main()
214 args->config = NULL; in main()
216 /* Test deep copying of defaults. */ in main()
227 args->config = config_new(); in main()
230 if (args->config->cells == NULL) in main()
233 ok(args->config->cells != NULL, "...cells is set"); in main()
234 is_int(2, args->config->cells->count, "...with two cells"); in main()
235 is_string("foo.com", args->config->cells->strings[0], in main()
237 is_string("bar.com", args->config->cells->strings[1], in main()
240 is_string("/bin/false", args->config->program, "...program is /bin/false"); in main()
243 if (args->config->cells == NULL) in main()
246 ok(args->config->cells != NULL, "...cells is set"); in main()
247 is_int(2, args->config->cells->count, "...with two cells"); in main()
248 is_string("stanford.edu", args->config->cells->strings[0], in main()
250 is_string("ir.stanford.edu", args->config->cells->strings[1], in main()
253 is_int(true, args->config->debug, "...debug is set"); in main()
254 is_int(86400, args->config->expires, "...expires is set"); in main()
255 is_int(true, args->config->ignore_root, "...ignore_root is set"); in main()
256 is_int(1000, args->config->minimum_uid, "...minimum_uid is set"); in main()
257 is_string("/bin/true", args->config->program, "...program is set"); in main()
258 is_string("foo.com", cells->strings[0], "...first cell after parse"); in main()
259 is_string("bar.com", cells->strings[1], "...second cell after parse"); in main()
261 config_free(args->config); in main()
262 args->config = NULL; in main()
263 is_string("foo.com", cells->strings[0], "...first cell after free"); in main()
264 is_string("bar.com", cells->strings[1], "...second cell after free"); in main()
271 /* Test specifying the default for a vector parameter as a string. */ in main()
274 args->config = config_new(); in main()
277 if (args->config->cells == NULL) in main()
280 ok(args->config->cells != NULL, "...cells is set"); in main()
281 is_int(2, args->config->cells->count, "...with two cells"); in main()
282 is_string("foo.com", args->config->cells->strings[0], in main()
284 is_string("bar.com", args->config->cells->strings[1], in main()
287 config_free(args->config); in main()
288 args->config = NULL; in main()
295 /* Test various ways of spelling booleans. */ in main()
296 args->config = config_new(); in main()
297 TEST_BOOL("debug", args->config->debug, true); in main()
298 TEST_BOOL("debug=false", args->config->debug, false); in main()
299 TEST_BOOL("debug=true", args->config->debug, true); in main()
300 TEST_BOOL("debug=no", args->config->debug, false); in main()
301 TEST_BOOL("debug=yes", args->config->debug, true); in main()
302 TEST_BOOL("debug=off", args->config->debug, false); in main()
303 TEST_BOOL("debug=on", args->config->debug, true); in main()
304 TEST_BOOL("debug=0", args->config->debug, false); in main()
305 TEST_BOOL("debug=1", args->config->debug, true); in main()
306 TEST_BOOL("debug=False", args->config->debug, false); in main()
307 TEST_BOOL("debug=trUe", args->config->debug, true); in main()
308 TEST_BOOL("debug=No", args->config->debug, false); in main()
309 TEST_BOOL("debug=Yes", args->config->debug, true); in main()
310 TEST_BOOL("debug=OFF", args->config->debug, false); in main()
311 TEST_BOOL("debug=ON", args->config->debug, true); in main()
312 config_free(args->config); in main()
313 args->config = NULL; in main()
315 /* Test for various parsing errors. */ in main()
316 args->config = config_new(); in main()
329 config_free(args->config); in main()
330 args->config = NULL; in main()
334 /* Test for Kerberos krb5.conf option parsing. */ in main()
335 krb5conf = test_file_path("data/krb5-pam.conf"); in main()
337 bail("cannot find data/krb5-pam.conf"); in main()
340 krb5_free_context(args->ctx); in main()
341 status = krb5_init_context(&args->ctx); in main()
343 bail("cannot parse test krb5.conf file"); in main()
344 args->config = config_new(); in main()
349 ok(args->config->cells == NULL, "...cells default"); in main()
350 is_int(true, args->config->debug, "...debug set from krb5.conf"); in main()
351 is_int(1800, args->config->expires, "...expires set from krb5.conf"); in main()
352 is_int(true, args->config->ignore_root, "...ignore_root default"); in main()
353 is_int(1000, args->config->minimum_uid, in main()
355 ok(args->config->program == NULL, "...program default"); in main()
356 status = putil_args_krb5(args, "other-test", options, optlen); in main()
357 ok(status, "Options from krb5.conf (other-test)"); in main()
358 is_int(-1000, args->config->minimum_uid, in main()
359 "...minimum_uid set from krb5.conf other-test"); in main()
361 /* Test with a realm set, which should expose more settings. */ in main()
362 krb5_free_context(args->ctx); in main()
363 status = krb5_init_context(&args->ctx); in main()
365 bail("cannot parse test krb5.conf file"); in main()
366 args->realm = strdup("FOO.COM"); in main()
367 if (args->realm == NULL) in main()
371 is_int(2, args->config->cells->count, "...cells count from krb5.conf"); in main()
372 is_string("foo.com", args->config->cells->strings[0], in main()
374 is_string("bar.com", args->config->cells->strings[1], in main()
376 is_int(true, args->config->debug, "...debug set from krb5.conf"); in main()
377 is_int(1800, args->config->expires, "...expires set from krb5.conf"); in main()
378 is_int(true, args->config->ignore_root, "...ignore_root default"); in main()
379 is_int(1000, args->config->minimum_uid, in main()
381 is_string("/bin/false", args->config->program, in main()
384 /* Test with a different realm. */ in main()
385 free(args->realm); in main()
386 args->realm = strdup("BAR.COM"); in main()
387 if (args->realm == NULL) in main()
391 is_int(2, args->config->cells->count, "...cells count from krb5.conf"); in main()
392 is_string("bar.com", args->config->cells->strings[0], in main()
394 is_string("foo.com", args->config->cells->strings[1], in main()
396 is_int(true, args->config->debug, "...debug set from krb5.conf"); in main()
397 is_int(1800, args->config->expires, "...expires set from krb5.conf"); in main()
398 is_int(true, args->config->ignore_root, "...ignore_root default"); in main()
399 is_int(1000, args->config->minimum_uid, in main()
401 is_string("echo /bin/true", args->config->program, in main()
403 config_free(args->config); in main()
404 args->config = config_new(); in main()
405 status = putil_args_krb5(args, "other-test", options, optlen); in main()
406 ok(status, "Options from krb5.conf (other-test with realm)"); in main()
407 ok(args->config->cells == NULL, "...cells is NULL"); in main()
408 is_string("echo /bin/true", args->config->program, in main()
410 config_free(args->config); in main()
411 args->config = NULL; in main()
413 /* Test for time parsing errors. */ in main()
414 args->config = config_new(); in main()
417 config_free(args->config); in main()
419 /* Test error reporting from the krb5.conf parser. */ in main()
420 args->config = config_new(); in main()
421 status = putil_args_krb5(args, "bad-number", options, optlen); in main()
422 ok(status, "Options from krb5.conf (bad-number)"); in main()
425 seen->lines[0].line, "...and correct error reported"); in main()
426 is_int(LOG_ERR, seen->lines[0].priority, "...with correct priority"); in main()
428 config_free(args->config); in main()
429 args->config = NULL; in main()
431 /* Test error reporting on times from the krb5.conf parser. */ in main()
432 args->config = config_new(); in main()
433 status = putil_args_krb5(args, "bad-time", options, optlen); in main()
434 ok(status, "Options from krb5.conf (bad-time)"); in main()
440 seen->lines[0].line, "...and correct error reported"); in main()
441 is_int(LOG_ERR, seen->lines[0].priority, "...with correct priority"); in main()
444 config_free(args->config); in main()
445 args->config = NULL; in main()