git.fiddlerwoaroof.com
Browse code

adds create_validator functions

Greg Wiley authored on 20/04/2017 23:16:11
Showing 3 changed files
... ...
@@ -3,6 +3,37 @@
3 3
 
4 4
 #include "validator.h"
5 5
 
6
+namespace
7
+{
8
+    class impl : public validator_ifc {
9
+        private:
10
+            directory_p directory_;
11
+            user_token_supplier_p user_token_supplier_;
12
+        public:
13
+        impl(const directory_p &directory, const user_token_supplier_p user_token_supplier) :
14
+            directory_(directory),
15
+            user_token_supplier_(user_token_supplier) {}
16
+        bool validate (const std::string &user_name,
17
+                              const std::string &token)
18
+        {
19
+            user_p found_user = directory_->find_user (user_name);
20
+
21
+            if (!found_user) {
22
+                return false;
23
+            }
24
+
25
+            std::string user_token = user_token_supplier_->token (found_user);
26
+            return user_token == token;
27
+        }
28
+    };
29
+}
30
+
31
+validator create_validator(const directory_p &directory, const user_token_supplier_p &user_token_supplier) {
32
+    std::shared_ptr<validator_ifc> delegate(new impl(directory, user_token_supplier));
33
+    return validator(delegate);
34
+}
35
+
36
+/*
6 37
 bool old_validator::validate (const std::string &user_name,
7 38
                               const std::string &token)
8 39
 {
... ...
@@ -15,4 +46,5 @@ bool old_validator::validate (const std::string &user_name,
15 46
     std::string user_token = user_token_supplier_->token (found_user);
16 47
     return user_token == token;
17 48
 }
49
+*/
18 50
 
... ...
@@ -33,18 +33,7 @@ public:
33 33
     }
34 34
 };
35 35
 
36
-class old_validator
37
-{
38
-private:
39
-    directory_p directory_;
40
-    user_token_supplier_p user_token_supplier_;
41
-public:
42
-    old_validator (const directory_p &directory,
43
-                   const user_token_supplier_p &user_token_supplier):
44
-        directory_ (directory),
45
-        user_token_supplier_ (user_token_supplier) {}
46
-    bool validate (const std::string &user, const std::string &token);
47
-};
36
+validator create_validator(const directory_p &directory, const user_token_supplier_p &token_supplier);
48 37
 
49 38
 #endif
50 39
 
... ...
@@ -45,7 +45,7 @@ bool validator_validates()
45 45
                 token));
46 46
     std::string user_name = "msmith";
47 47
     directory_p directory (new fake_directory (user_name));
48
-    old_validator validator (directory, user_token_supplier);
48
+    validator validator = create_validator (directory, user_token_supplier);
49 49
 
50 50
     // when
51 51
     bool actual = validator.validate (user_name, "token");
... ...
@@ -63,7 +63,7 @@ bool validator_fails_unknown_user()
63 63
     user_token_supplier_p user_token_supplier (new fake_user_token_supplier (
64 64
                 token));
65 65
     directory_p directory (new fake_directory);
66
-    old_validator validator (directory, user_token_supplier);
66
+    validator validator = create_validator (directory, user_token_supplier);
67 67
 
68 68
     // when
69 69
     bool actual = validator.validate ("notuser", token);
... ...
@@ -80,7 +80,7 @@ bool validator_fails_incorrect_token()
80 80
     user_token_supplier_p user_token_supplier (new fake_user_token_supplier);
81 81
     std::string user_name = "msmith";
82 82
     directory_p directory (new fake_directory (user_name));
83
-    old_validator validator (directory, user_token_supplier);
83
+    validator validator = create_validator (directory, user_token_supplier);
84 84
 
85 85
     // when
86 86
     bool actual = validator.validate (user_name, "token");