Browse code
adds create_validator functions
Greg Wiley authored on 20/04/2017 23:16:11
Showing 3 changed files
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"); |