Browse code
user token supplier uses delegate
Greg Wiley authored on 21/04/2017 00:26:46
Showing 4 changed files
Showing 4 changed files
... | ... |
@@ -2,15 +2,30 @@ |
2 | 2 |
#define _TOKEN_H |
3 | 3 |
#include <string> |
4 | 4 |
#include <memory> |
5 |
- |
|
5 |
+#include <iostream> |
|
6 | 6 |
#include "user.h" |
7 | 7 |
|
8 |
-class user_token_supplier |
|
8 |
+ |
|
9 |
+ |
|
10 |
+class user_token_supplier_ifc |
|
9 | 11 |
{ |
10 | 12 |
public: |
11 |
- virtual std::string token (user user) = 0; |
|
13 |
+ virtual std::string token (const user &user) { |
|
14 |
+ return ""; |
|
15 |
+ } |
|
12 | 16 |
}; |
13 |
-typedef std::shared_ptr<user_token_supplier> user_token_supplier_p; |
|
17 |
+ |
|
18 |
+class user_token_supplier : public user_token_supplier_ifc { |
|
19 |
+ private: |
|
20 |
+ std::shared_ptr<user_token_supplier_ifc> delegate_; |
|
21 |
+ public: |
|
22 |
+ user_token_supplier(std::shared_ptr<user_token_supplier_ifc> delegate) : delegate_(delegate) {} |
|
23 |
+ user_token_supplier() : user_token_supplier(std::shared_ptr<user_token_supplier_ifc>(new user_token_supplier_ifc)) {} |
|
24 |
+ std::string token(const user &user) { |
|
25 |
+ return delegate_->token(user); |
|
26 |
+ } |
|
27 |
+}; |
|
28 |
+ |
|
14 | 29 |
|
15 | 30 |
#endif |
16 | 31 |
|
... | ... |
@@ -9,10 +9,10 @@ class impl : public validator_ifc |
9 | 9 |
{ |
10 | 10 |
private: |
11 | 11 |
directory directory_; |
12 |
- user_token_supplier_p user_token_supplier_; |
|
12 |
+ user_token_supplier user_token_supplier_; |
|
13 | 13 |
public: |
14 | 14 |
impl (const directory &directory, |
15 |
- const user_token_supplier_p user_token_supplier) : |
|
15 |
+ const user_token_supplier user_token_supplier) : |
|
16 | 16 |
directory_ (directory), |
17 | 17 |
user_token_supplier_ (user_token_supplier) {} |
18 | 18 |
bool validate (const std::string &user_name, |
... | ... |
@@ -24,14 +24,14 @@ public: |
24 | 24 |
return false; |
25 | 25 |
} |
26 | 26 |
|
27 |
- std::string user_token = user_token_supplier_->token (found_user[0]); |
|
27 |
+ std::string user_token = user_token_supplier_.token (found_user[0]); |
|
28 | 28 |
return user_token == token; |
29 | 29 |
} |
30 | 30 |
}; |
31 | 31 |
} |
32 | 32 |
|
33 | 33 |
validator create_validator (const directory &directory, |
34 |
- const user_token_supplier_p &user_token_supplier) |
|
34 |
+ const user_token_supplier &user_token_supplier) |
|
35 | 35 |
{ |
36 | 36 |
std::shared_ptr<validator_ifc> delegate (new impl (directory, |
37 | 37 |
user_token_supplier)); |
... | ... |
@@ -35,7 +35,7 @@ private: |
35 | 35 |
public: |
36 | 36 |
fake_user_token_supplier (const std::string &token) : token_ (token) {} |
37 | 37 |
fake_user_token_supplier() : token_ ("_NOT_A_TOKEN") {} |
38 |
- virtual std::string token (user user) |
|
38 |
+ virtual std::string token (const user &user) |
|
39 | 39 |
{ |
40 | 40 |
return token_; |
41 | 41 |
} |
... | ... |
@@ -52,14 +52,13 @@ bool validator_validates() |
52 | 52 |
|
53 | 53 |
// given |
54 | 54 |
std::string token = "token"; |
55 |
- user_token_supplier_p user_token_supplier (new fake_user_token_supplier ( |
|
56 |
- token)); |
|
55 |
+ user_token_supplier user_token_supplier (share(new fake_user_token_supplier(token))); |
|
57 | 56 |
std::string user_name = "msmith"; |
58 | 57 |
directory directory (share (new fake_directory (user_name))); |
59 | 58 |
validator validator = create_validator (directory, user_token_supplier); |
60 | 59 |
|
61 | 60 |
// when |
62 |
- bool actual = validator.validate (user_name, "token"); |
|
61 |
+ bool actual = validator.validate (user_name, token); |
|
63 | 62 |
|
64 | 63 |
// then |
65 | 64 |
check (actual, "should be valid"); |
... | ... |
@@ -71,8 +70,7 @@ bool validator_fails_unknown_user() |
71 | 70 |
|
72 | 71 |
// given |
73 | 72 |
std::string token = "token"; |
74 |
- user_token_supplier_p user_token_supplier (new fake_user_token_supplier ( |
|
75 |
- token)); |
|
73 |
+ user_token_supplier user_token_supplier (share(new fake_user_token_supplier)); |
|
76 | 74 |
directory directory (share (new fake_directory)); |
77 | 75 |
validator validator = create_validator (directory, user_token_supplier); |
78 | 76 |
|
... | ... |
@@ -88,7 +86,7 @@ bool validator_fails_incorrect_token() |
88 | 86 |
{ |
89 | 87 |
|
90 | 88 |
// given |
91 |
- user_token_supplier_p user_token_supplier (new fake_user_token_supplier); |
|
89 |
+ user_token_supplier user_token_supplier (share(new fake_user_token_supplier)); |
|
92 | 90 |
std::string user_name = "msmith"; |
93 | 91 |
directory directory (share (new fake_directory (user_name))); |
94 | 92 |
validator validator = create_validator (directory, user_token_supplier); |