Browse code
ask for token test
Greg Wiley authored on 06/04/2017 17:23:18
Showing 4 changed files
Showing 4 changed files
... | ... |
@@ -1,13 +1,12 @@ |
1 | 1 |
#include <security/pam_appl.h> |
2 | 2 |
#include <security/pam_modules.h> |
3 |
-#include <stdio.h> |
|
4 | 3 |
#include "logging.h" |
5 | 4 |
#include "token.h" |
5 |
+#include "conversation.h" |
|
6 | 6 |
|
7 | 7 |
PAM_EXTERN int pam_sm_authenticate(pam_handle_t *pamh, int flags, int argc, const char **argv) { |
8 |
- printf("Authentication\n"); |
|
9 |
- |
|
10 |
- int returned_validation = validate_token("str"); |
|
8 |
+ const char *returned_token = ask_for_token(pamh); |
|
9 |
+ int returned_validation = validate_token(returned_token); |
|
11 | 10 |
|
12 | 11 |
if (returned_validation) { |
13 | 12 |
log_success(); |
... | ... |
@@ -18,6 +17,5 @@ PAM_EXTERN int pam_sm_authenticate(pam_handle_t *pamh, int flags, int argc, cons |
18 | 17 |
} |
19 | 18 |
|
20 | 19 |
PAM_EXTERN int pam_sm_setcred(pam_handle_t *pamh, int flags, int argc, const char **argv) { |
21 |
- printf("Set cred\n"); |
|
22 | 20 |
return PAM_SUCCESS; |
23 | 21 |
} |
... | ... |
@@ -6,6 +6,7 @@ |
6 | 6 |
#include "token.h" |
7 | 7 |
#include "testutil.h" |
8 | 8 |
|
9 |
+const char *validated_token = ""; |
|
9 | 10 |
const char *token_to_return = ""; |
10 | 11 |
int validation_to_return = 0; |
11 | 12 |
int log_success_invoked = 1; |
... | ... |
@@ -13,6 +14,7 @@ int at_least_one_failed_test = 0; |
13 | 14 |
pam_handle_t *passed_pam_handle = NULL; |
14 | 15 |
|
15 | 16 |
#define reset_vars() \ |
17 |
+ validated_token = ""; \ |
|
16 | 18 |
validation_to_return = 1; \ |
17 | 19 |
passed_pam_handle = NULL; \ |
18 | 20 |
log_success_invoked = 0 |
... | ... |
@@ -23,6 +25,7 @@ const char *ask_for_token(pam_handle_t *pamh) { |
23 | 25 |
} |
24 | 26 |
|
25 | 27 |
int validate_token(const char *token) { |
28 |
+ validated_token = token; |
|
26 | 29 |
return validation_to_return; |
27 | 30 |
} |
28 | 31 |
|
... | ... |
@@ -37,7 +40,21 @@ int pam_sm_setcred_returns_success() { |
37 | 40 |
int result = pam_sm_setcred(NULL, 0, 0, NULL); |
38 | 41 |
|
39 | 42 |
//then |
40 |
- return result == PAM_SUCCESS; |
|
43 |
+ checkint(PAM_SUCCESS, result, "function return"); |
|
44 |
+ succeed(); |
|
45 |
+ |
|
46 |
+} |
|
47 |
+ |
|
48 |
+int pam_sm_authenticate_validates_with_received_token() { |
|
49 |
+ // given |
|
50 |
+ token_to_return = "mytoken"; |
|
51 |
+ |
|
52 |
+ // when |
|
53 |
+ pam_sm_authenticate(NULL, 0, 0, NULL); |
|
54 |
+ |
|
55 |
+ // then |
|
56 |
+ checkstr("mytoken",validated_token, "validated token"); |
|
57 |
+ succeed(); |
|
41 | 58 |
} |
42 | 59 |
|
43 | 60 |
int pam_sm_authenticate_success_invokes_log_success() { |
... | ... |
@@ -72,6 +89,7 @@ int fails_with_invalid_token() { |
72 | 89 |
} |
73 | 90 |
|
74 | 91 |
int runtests() { |
92 |
+ test(pam_sm_authenticate_validates_with_received_token); |
|
75 | 93 |
test(pam_sm_setcred_returns_success); |
76 | 94 |
test(pam_sm_authenticate_success_invokes_log_success); |
77 | 95 |
test(succeeds_with_valid_token); |
... | ... |
@@ -1,6 +1,8 @@ |
1 | 1 |
#ifndef _TESTUTIL_H |
2 | 2 |
#define _TESTUTIL_H |
3 | 3 |
|
4 |
+#include <string.h> |
|
5 |
+ |
|
4 | 6 |
#define check(assertion, msg) \ |
5 | 7 |
if (!(assertion)) { \ |
6 | 8 |
fprintf(stderr, "assertion failed: %s\n", msg); \ |
... | ... |
@@ -11,7 +13,7 @@ |
11 | 13 |
check(expected == actual, name " should be " #expected) |
12 | 14 |
|
13 | 15 |
#define checkstr(expected, actual, name) \ |
14 |
- check(!strcmp(actual, expected), name " should be '" expected "'") |
|
16 |
+ check(!strcmp(expected, actual), name " should be '" expected "'") |
|
15 | 17 |
|
16 | 18 |
#ifdef reset_vars |
17 | 19 |
#define _reset reset_vars() |