git.fiddlerwoaroof.com
Browse code

refactor dual control create

Greg Wiley authored on 26/04/2017 18:26:11
Showing 4 changed files
... ...
@@ -29,6 +29,7 @@ int dual_control_ifc::setcred ( const pam_request &request)
29 29
     return PAM_SERVICE_ERR;
30 30
 }
31 31
 
32
+namespace {
32 33
 class impl : public dual_control_ifc
33 34
 {
34 35
 private:
... ...
@@ -61,8 +62,8 @@ int impl::authenticate (const pam_request &request)
61 62
     logger_.log (auth_result, input.user_name, input.token);
62 63
     return auth_result;
63 64
 }
64
-
65
-dual_control create_dual_control (const dual_control_configuration
65
+}
66
+dual_control dual_control::create (const dual_control_configuration
66 67
                                   &configuration)
67 68
 {
68 69
     return dual_control (std::shared_ptr<dual_control_ifc> (new impl (
... ...
@@ -56,11 +56,11 @@ public:
56 56
     {
57 57
         return delegate_->setcred (request);
58 58
     }
59
+    static dual_control create (const dual_control_configuration
60
+                                  &configuration);
59 61
 
60 62
 };
61 63
 
62
-dual_control create_dual_control (const dual_control_configuration
63
-                                  &configuration);
64 64
 
65 65
 #endif
66 66
 
... ...
@@ -20,7 +20,14 @@
20 20
 #include "request.h"
21 21
 #include "dual_control.h"
22 22
 
23
-dual_control dc;
23
+namespace {
24
+    dual_control initialize() {
25
+        dual_control_configuration configuration;
26
+        // ....
27
+        return dual_control::create(configuration);
28
+    }
29
+    dual_control dc = initialize();
30
+}
24 31
 
25 32
 PAM_EXTERN int pam_sm_authenticate (pam_handle_t *pamh, int flags, int argc,
26 33
                                     const char **argv)
... ...
@@ -107,7 +107,7 @@ int setcred_returns_success()
107 107
 {
108 108
     //given
109 109
     dual_control_configuration configuration;
110
-    dual_control dc (create_dual_control (configuration));
110
+    dual_control dc (dual_control::create (configuration));
111 111
 
112 112
     //when
113 113
     int result = dc.setcred (req());
... ...
@@ -126,7 +126,7 @@ int authenticate_validates_with_received_token()
126 126
     std::string token ("token");
127 127
     use_validator (configuration, new fake_validator (user, token));
128 128
     use_conversation (configuration, new fake_conversation (user, token));
129
-    dual_control dc (create_dual_control (configuration));
129
+    dual_control dc (dual_control::create (configuration));
130 130
     pam_handle_t *handle (0);
131 131
     std::vector<const std::string> arguments;
132 132
 
... ...
@@ -146,7 +146,7 @@ int authenticate_fails_with_wrong_user()
146 146
     use_validator (configuration, new fake_validator ("user", token));
147 147
     use_conversation (configuration, new fake_conversation ("wrong user",
148 148
                       token));
149
-    dual_control dc (create_dual_control (configuration));
149
+    dual_control dc (dual_control::create (configuration));
150 150
 
151 151
     // when
152 152
     int actual = dc.authenticate (req());
... ...
@@ -164,7 +164,7 @@ int authenticate_fails_with_wrong_token()
164 164
     use_validator (configuration, new fake_validator (user, "token"));
165 165
     use_conversation (configuration, new fake_conversation (user,
166 166
                       "wrong token"));
167
-    dual_control dc (create_dual_control (configuration));
167
+    dual_control dc (dual_control::create (configuration));
168 168
 
169 169
     // when
170 170
     int actual = dc.authenticate (req());
... ...
@@ -184,7 +184,7 @@ int logs_authentication()
184 184
     use_conversation (configuration, new fake_conversation (user, token));
185 185
     mock_logger *test_logger;
186 186
     use_logger (configuration, test_logger = new mock_logger);
187
-    dual_control dc (create_dual_control (configuration));
187
+    dual_control dc (dual_control::create (configuration));
188 188
 
189 189
     //when
190 190
     dc.authenticate (req());
... ...
@@ -210,7 +210,7 @@ int logs_authentication_failure()
210 210
     use_conversation (configuration, new fake_conversation (user, token));
211 211
     mock_logger *test_logger;
212 212
     use_logger (configuration, test_logger = new mock_logger);
213
-    dual_control dc (create_dual_control (configuration));
213
+    dual_control dc (dual_control::create (configuration));
214 214
 
215 215
     //when
216 216
     dc.authenticate (req());