git.fiddlerwoaroof.com
logging_test.c
6f45b32f
 #include <stdio.h>
b9244c44
 #include <string.h>
6f45b32f
 
 #include "dc_syslog.h"
 #include "logging.h"
 
9fe53359
 int logged_priority = -1000;
a4c373a6
 const char *logged_message = "";
6f45b32f
 void dc_syslog(int priority, const char *message, ...) {
9fe53359
     logged_priority = priority;
a4c373a6
     logged_message = message;
6f45b32f
 }
 
4a5fbc12
 int close_log_invoked = 0;
6f45b32f
 void dc_closelog(void) {
4a5fbc12
     close_log_invoked = 1;
6f45b32f
 }
 
 int opened_facility = -1000;
b9244c44
 const char *opened_program_name = "";
08aca5aa
 int opened_logopt = -1000;
b9244c44
 void dc_openlog(const char *ident, int logopt, int facility) {
6f45b32f
     opened_facility = facility;
b9244c44
     opened_program_name = ident;
08aca5aa
     opened_logopt = logopt;
6f45b32f
 }
 
 
f2d9dbb5
 #define check(assertion, msg) \
     if (!(assertion)) { \
9fe53359
       fprintf(stderr, "assertion failed: %s\n", msg); \
f2d9dbb5
       return 0; \
     }
 
9fe53359
 #define checkint(expected, actual, name) \
     check(expected == actual, name " should be " #expected)
 
 #define checkstr(expected, actual, name) \
     check(!strcmp(actual, expected), name " should be '" expected "'")
 
f2d9dbb5
 #define succeed() return 1
 
b9244c44
 int test_log_success() {
6f45b32f
     // given
     opened_facility = -1000;
b9244c44
     opened_program_name = "";
08aca5aa
     opened_logopt = -1000;
9fe53359
     logged_priority = -1000;
a4c373a6
     logged_message = "";
4a5fbc12
     close_log_invoked = 0;
6f45b32f
 
     // when
     log_success();
 
     // then
9fe53359
     checkint(LOG_AUTHPRIV, opened_facility, "facility");
     checkint(LOG_NOTICE, logged_priority, "priority");
     checkint(0, opened_logopt, "logopt");
4a5fbc12
     check(close_log_invoked, "log closed");
9fe53359
     checkstr("pam_dual_control", opened_program_name, "program name");
     checkstr("dual control succeeded", logged_message, "logged message");
f2d9dbb5
 
     succeed();
6f45b32f
 }
 
 
 int main(int numargs, char **args) {
b9244c44
     if(test_log_success()) {
8c02415f
         fprintf(stderr, "logging_test: success!\n");
6f45b32f
         return 0;
     } else {
         return 1;
     }
 }