git.fiddlerwoaroof.com
Browse code

Fix installer_test

fiddlerwoaroof authored on 29/05/2017 00:01:04
Showing 3 changed files
... ...
@@ -7,4 +7,4 @@ notifications:
7 7
   email:
8 8
     on_success: change
9 9
     on_failure: change
10
-script: ./configure && make test
10
+script: ./configure && make -k test
... ...
@@ -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();