git.fiddlerwoaroof.com
Browse code

ask for token test

Greg Wiley authored on 06/04/2017 17:23:18
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);
78 96
Binary files a/logging_test and b/logging_test differ
... ...
@@ -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()