Browse code
Fix installer_test
fiddlerwoaroof authored on 29/05/2017 00:01:04
Showing 3 changed files
Showing 3 changed files
... | ... |
@@ -28,7 +28,6 @@ |
28 | 28 |
#include "sys_stdlib.h" |
29 | 29 |
#include "sys_time.h" |
30 | 30 |
|
31 |
-using generator = std::function<std::string()>; |
|
32 | 31 |
int ipow (int base, int exp); |
33 | 32 |
time_t time_step (const time_t time, const int step); |
34 | 33 |
|
... | ... |
@@ -54,6 +53,9 @@ public: |
54 | 53 |
return delegate_->generate_token(); |
55 | 54 |
}; |
56 | 55 |
|
56 |
+ totp_generator (delegate delegate_) : |
|
57 |
+ delegate_(delegate_) |
|
58 |
+ {} |
|
57 | 59 |
totp_generator (const sys_time &clock, |
58 | 60 |
const std::string &key_c, |
59 | 61 |
const int code_digits); |
... | ... |
@@ -18,6 +18,7 @@ |
18 | 18 |
#include "user.h" |
19 | 19 |
#include "token.h" |
20 | 20 |
#include "test_util.h" |
21 |
+#include "generator.h" |
|
21 | 22 |
|
22 | 23 |
class mock_tokens : public tokens_ifc |
23 | 24 |
{ |
... | ... |
@@ -50,6 +51,14 @@ public: |
50 | 51 |
} |
51 | 52 |
}; |
52 | 53 |
|
54 |
+class fake_totp_generator : public token_generator_ifc |
|
55 |
+{ |
|
56 |
+ public: |
|
57 |
+ std::string generate_token() { |
|
58 |
+ return "000000"; |
|
59 |
+ } |
|
60 |
+}; |
|
61 |
+ |
|
53 | 62 |
class fake_directory : public directory_ifc |
54 | 63 |
{ |
55 | 64 |
private: |
... | ... |
@@ -81,10 +90,9 @@ int installs_token() |
81 | 90 |
tokens tokens{test_tokens}; |
82 | 91 |
unistd unistd (std::make_shared<fake_unistd> (user_name)); |
83 | 92 |
directory directory (std::make_shared<fake_directory> (user_name)); |
84 |
- generator generator = [&] { return token; }; |
|
93 |
+ totp_generator *generator = new totp_generator(std::make_shared<fake_totp_generator>()); |
|
85 | 94 |
|
86 |
- installer installer = installer::create (tokens, unistd, directory, |
|
87 |
- generator); |
|
95 |
+ installer installer = installer::create (tokens, unistd, directory, std::shared_ptr<totp_generator> (generator)); |
|
88 | 96 |
|
89 | 97 |
//when |
90 | 98 |
std::string result = installer.install_token(); |
... | ... |
@@ -104,10 +112,9 @@ int unistd_does_not_find_user_name_nullptr_case() |
104 | 112 |
tokens tokens{test_tokens}; |
105 | 113 |
unistd unistd (std::make_shared<fail_unistd>()); |
106 | 114 |
directory directory (std::make_shared<fake_directory> (user_name)); |
107 |
- generator generator = [&] { return token; }; |
|
115 |
+ auto generator = std::shared_ptr<totp_generator>(new totp_generator(std::make_shared<fake_totp_generator>())); |
|
108 | 116 |
|
109 |
- installer installer = installer::create (tokens, unistd, directory, |
|
110 |
- generator); |
|
117 |
+ installer installer = installer::create (tokens, unistd, directory, generator); |
|
111 | 118 |
|
112 | 119 |
//when |
113 | 120 |
auto returned = installer.install_token(); |
... | ... |
@@ -128,10 +135,9 @@ int unistd_does_not_find_user_name_empty_string_case() |
128 | 135 |
tokens tokens{test_tokens}; |
129 | 136 |
unistd unistd (std::make_shared<fake_unistd> ("")); |
130 | 137 |
directory directory (std::make_shared<fake_directory> (user_name)); |
131 |
- generator generator = [&] { return token; }; |
|
138 |
+ auto generator = std::shared_ptr<totp_generator>(new totp_generator(std::make_shared<fake_totp_generator>())); |
|
132 | 139 |
|
133 |
- installer installer = installer::create (tokens, unistd, directory, |
|
134 |
- generator); |
|
140 |
+ installer installer = installer::create (tokens, unistd, directory, generator); |
|
135 | 141 |
|
136 | 142 |
//when |
137 | 143 |
auto returned = installer.install_token(); |
... | ... |
@@ -151,10 +157,9 @@ int directory_finds_no_user_info() |
151 | 157 |
tokens tokens{test_tokens}; |
152 | 158 |
unistd unistd (std::make_shared<fake_unistd> (user_name)); |
153 | 159 |
directory directory (std::make_shared<fake_directory> ("not the user")); |
154 |
- generator generator = [&] { return token; }; |
|
160 |
+ auto generator = std::shared_ptr<totp_generator>(new totp_generator(std::make_shared<fake_totp_generator>())); |
|
155 | 161 |
|
156 |
- installer installer = installer::create (tokens, unistd, directory, |
|
157 |
- generator); |
|
162 |
+ installer installer = installer::create (tokens, unistd, directory, generator); |
|
158 | 163 |
|
159 | 164 |
//when |
160 | 165 |
auto returned = installer.install_token(); |