1 module tests.management.setup;
2 
3 public import std.array;
4 public import std.datetime;
5 public import std.uri;
6 
7 public import fluentasserts.vibe.request;
8 public import fluentasserts.vibe.json;
9 public import fluent.asserts;
10 
11 public import vibeauth.token;
12 public import vibeauth.users;
13 
14 
15 public import vibe.http.router;
16 public import vibe.data.json;
17 
18 import vibeauth.router.management.routes;
19 import vibeauth.mail.base;
20 
21 UserMemmoryCollection collection;
22 User user;
23 TestMailQueue mailQueue;
24 Token activationToken;
25 Token authToken;
26 UserManagementRoutes userManagement;
27 
28 alias MailMessage = vibeauth.mail.base.Message;
29 
30 class TestMailQueue : MailQueue
31 {
32   MailMessage[] messages;
33 
34   this() {
35     super(EmailConfiguration());
36   }
37 
38   override void addMessage(MailMessage message) {
39     messages ~= message;
40   }
41 }
42 
43 auto testRouter() {
44   auto router = new URLRouter();
45   mailQueue = new TestMailQueue;
46 
47   collection = new UserMemmoryCollection(["doStuff", "admin"]);
48   user = new User("user@gmail.com", "password");
49   user.name = "John Doe";
50   user.username = "test";
51   user.id = 1;
52 
53   collection.add(user);
54   activationToken = collection.createToken(user.email, Clock.currTime + 3600.seconds, [], "activation");
55   authToken = collection.createToken(user.email, Clock.currTime + 3600.seconds, [], "webLogin");
56 
57   userManagement = new UserManagementRoutes(collection, mailQueue);
58 
59   router.any("*", &userManagement.handler);
60   return router;
61 }