Browse code
log failure invoked properly
Greg Wiley authored on 06/04/2017 18:06:00
Showing 6 changed files
Showing 6 changed files
... | ... |
@@ -12,6 +12,7 @@ PAM_EXTERN int pam_sm_authenticate(pam_handle_t *pamh, int flags, int argc, cons |
12 | 12 |
log_success(); |
13 | 13 |
return PAM_SUCCESS; |
14 | 14 |
} else { |
15 |
+ log_failure(); |
|
15 | 16 |
return PAM_AUTH_ERR; |
16 | 17 |
} |
17 | 18 |
} |
... | ... |
@@ -19,3 +20,4 @@ PAM_EXTERN int pam_sm_authenticate(pam_handle_t *pamh, int flags, int argc, cons |
19 | 20 |
PAM_EXTERN int pam_sm_setcred(pam_handle_t *pamh, int flags, int argc, const char **argv) { |
20 | 21 |
return PAM_SUCCESS; |
21 | 22 |
} |
23 |
+ |
... | ... |
@@ -9,15 +9,18 @@ |
9 | 9 |
const char *validated_token = ""; |
10 | 10 |
const char *token_to_return = ""; |
11 | 11 |
int validation_to_return = 0; |
12 |
-int log_success_invoked = 1; |
|
12 |
+int log_success_invoked = 0; |
|
13 |
+int log_failure_invoked = 0; |
|
13 | 14 |
int at_least_one_failed_test = 0; |
14 | 15 |
pam_handle_t *passed_pam_handle = NULL; |
15 | 16 |
|
16 |
-#define reset_vars() \ |
|
17 |
- validated_token = ""; \ |
|
18 |
- validation_to_return = 1; \ |
|
19 |
- passed_pam_handle = NULL; \ |
|
20 |
- log_success_invoked = 0 |
|
17 |
+RESET_VARS_START |
|
18 |
+validated_token = ""; |
|
19 |
+validation_to_return = 1; |
|
20 |
+passed_pam_handle = NULL; |
|
21 |
+log_success_invoked = 0; |
|
22 |
+log_failure_invoked = 0; |
|
23 |
+RESET_VARS_END |
|
21 | 24 |
|
22 | 25 |
const char *ask_for_token(pam_handle_t *pamh) { |
23 | 26 |
passed_pam_handle = pamh; |
... | ... |
@@ -33,6 +36,10 @@ void log_success() { |
33 | 36 |
log_success_invoked = 1; |
34 | 37 |
} |
35 | 38 |
|
39 |
+void log_failure() { |
|
40 |
+ log_failure_invoked = 1; |
|
41 |
+} |
|
42 |
+ |
|
36 | 43 |
int pam_sm_setcred_returns_success() { |
37 | 44 |
//given |
38 | 45 |
|
... | ... |
@@ -62,15 +69,25 @@ int pam_sm_authenticate_validates_with_received_token() { |
62 | 69 |
int pam_sm_authenticate_success_invokes_log_success() { |
63 | 70 |
// given |
64 | 71 |
validation_to_return = 1; |
65 |
- log_success_invoked = 0; |
|
66 | 72 |
|
67 | 73 |
//when |
68 | 74 |
pam_sm_authenticate(NULL, 0, 0, NULL); |
69 | 75 |
return log_success_invoked; |
70 | 76 |
} |
71 | 77 |
|
78 |
+int pam_sm_authenticate_fail_invokes_log_failure() { |
|
79 |
+ // given |
|
80 |
+ validation_to_return = 0; |
|
81 |
+ |
|
82 |
+ //when |
|
83 |
+ pam_sm_authenticate(NULL, 0, 0, NULL); |
|
84 |
+ check(log_failure_invoked, "log failure should be invoked"); |
|
85 |
+ succeed(); |
|
86 |
+} |
|
87 |
+ |
|
72 | 88 |
int succeeds_with_valid_token() { |
73 | 89 |
//given |
90 |
+ validation_to_return = 1; |
|
74 | 91 |
|
75 | 92 |
//when |
76 | 93 |
int result = pam_sm_authenticate(NULL, 0, 0, NULL); |
... | ... |
@@ -94,6 +111,7 @@ int runtests() { |
94 | 111 |
test(pam_sm_authenticate_validates_with_received_token); |
95 | 112 |
test(pam_sm_setcred_returns_success); |
96 | 113 |
test(pam_sm_authenticate_success_invokes_log_success); |
114 |
+ test(pam_sm_authenticate_fail_invokes_log_failure); |
|
97 | 115 |
test(succeeds_with_valid_token); |
98 | 116 |
test(fails_with_invalid_token); |
99 | 117 |
succeed(); |
... | ... |
@@ -6,13 +6,6 @@ |
6 | 6 |
|
7 | 7 |
#include "testutil.h" |
8 | 8 |
|
9 |
-#define reset_vars() \ |
|
10 |
- logged_priority = -1000; \ |
|
11 |
- close_log_invoked = 0; \ |
|
12 |
- opened_facility = -1000; \ |
|
13 |
- const char *opened_program_name = ""; \ |
|
14 |
- int opened_logopt = -1000; \ |
|
15 |
- |
|
16 | 9 |
int logged_priority = -1000; |
17 | 10 |
const char *logged_message = ""; |
18 | 11 |
void dc_syslog(int priority, const char *message, ...) { |
... | ... |
@@ -34,6 +27,14 @@ void dc_openlog(const char *ident, int logopt, int facility) { |
34 | 27 |
opened_logopt = logopt; |
35 | 28 |
} |
36 | 29 |
|
30 |
+RESET_VARS_START |
|
31 |
+logged_priority = -1000; |
|
32 |
+close_log_invoked = 0; |
|
33 |
+opened_facility = -1000; |
|
34 |
+const char *opened_program_name = ""; |
|
35 |
+int opened_logopt = -1000; |
|
36 |
+RESET_VARS_END |
|
37 |
+ |
|
37 | 38 |
int test_log_success() { |
38 | 39 |
// given |
39 | 40 |
|
... | ... |
@@ -58,3 +59,4 @@ int test_runner() { |
58 | 59 |
int main(int numargs, char **args) { |
59 | 60 |
return !test_runner(); |
60 | 61 |
} |
62 |
+ |
... | ... |
@@ -2,7 +2,7 @@ |
2 | 2 |
#define _TESTUTIL_H |
3 | 3 |
|
4 | 4 |
#include <string.h> |
5 |
- |
|
5 |
+#include <stdio.h> |
|
6 | 6 |
#define check(assertion, msg) \ |
7 | 7 |
if (!(assertion)) { \ |
8 | 8 |
fprintf(stderr, "assertion failed: %s\n", msg); \ |
... | ... |
@@ -15,15 +15,13 @@ |
15 | 15 |
#define checkstr(expected, actual, name) \ |
16 | 16 |
check(!strcmp(expected, actual), name " should be '" expected "'") |
17 | 17 |
|
18 |
-#ifdef reset_vars |
|
19 |
-#define _reset reset_vars() |
|
20 |
-#else |
|
21 |
-#define _reset |
|
22 |
-#endif |
|
18 |
+#define RESET_VARS_START void __reset_vars() { |
|
19 |
+ |
|
20 |
+#define RESET_VARS_END } |
|
23 | 21 |
|
24 | 22 |
#define test(NAME) \ |
25 | 23 |
{ \ |
26 |
- _reset \ |
|
24 |
+ __reset_vars(); \ |
|
27 | 25 |
int result = NAME (); \ |
28 | 26 |
if (!result) { \ |
29 | 27 |
fprintf(stderr, "test failed: %s\n", #NAME); \ |