1 module tests.management.security;
2 
3 import tests.management.setup;
4 
5 
6 /// On security page, it should not render rights section
7 /// if the loged user is not admin
8 unittest {
9   testRouter
10     .request
11     .get("/admin/users/1/security")
12     .header("Cookie", "auth-token=" ~ authToken.name)
13     .end((Response response) => {
14       response.bodyString.should.not.contain("You are");
15       response.bodyString.should.not.contain("not an administrator");
16       response.bodyString.should.not.contain("make admin");
17       response.bodyString.should.not.contain("/1/security/make-admin");
18     });
19 }
20 
21 /// On security page, a loged user should not be able to revoke his own
22 /// admin rights
23 unittest {
24   auto router = testRouter;
25   collection.empower("user@gmail.com", "admin");
26 
27   router
28     .request
29     .get("/admin/users/1/security")
30     .header("Cookie", "auth-token=" ~ authToken.name)
31     .end((Response response) => {
32       response.bodyString.should.contain("can not revoke");
33       response.bodyString.should.contain("Ask another user");
34       response.bodyString.should.not.contain("revoke admin");
35       response.bodyString.should.not.contain("/1/security/revoke-admin");
36     });
37 }
38 
39 /// On security page, a loged admin should be make an user admin
40 unittest {
41   auto router = testRouter;
42   collection.empower("user@gmail.com", "admin");
43 
44   auto otherUser = new User("bravo@gmail.com", "password");
45   otherUser.name = "John Bravo";
46   otherUser.username = "test2";
47   otherUser.id = 2;
48   collection.add(otherUser);
49 
50   router
51     .request
52     .get("/admin/users/2/security")
53     .header("Cookie", "auth-token=" ~ authToken.name)
54     .end((Response response) => {
55       response.bodyString.should.contain("This user is");
56       response.bodyString.should.contain("not an administrator");
57       response.bodyString.should.contain("make admin");
58       response.bodyString.should.contain("/2/security/make-admin");
59       response.bodyString.should.not.contain("revoke admin");
60       response.bodyString.should.not.contain("/2/security/revoke-admin");
61     });
62 }
63 
64 /// On security page, a loged admin should be make an revoke admin rights
65 unittest {
66   auto router = testRouter;
67   collection.empower("user@gmail.com", "admin");
68 
69   auto otherUser = new User("bravo@gmail.com", "password");
70   otherUser.name = "John Bravo";
71   otherUser.username = "test2";
72   otherUser.id = 2;
73   collection.add(otherUser);
74   collection.empower("bravo@gmail.com", "admin");
75 
76   router
77     .request
78     .get("/admin/users/2/security")
79     .header("Cookie", "auth-token=" ~ authToken.name)
80     .end((Response response) => {
81       response.bodyString.should.contain("This user is");
82       response.bodyString.should.not.contain("not an administrator");
83       response.bodyString.should.contain("an administrator");
84       response.bodyString.should.contain("revoke admin");
85       response.bodyString.should.contain("/2/security/revoke-admin");
86       response.bodyString.should.not.contain("make admin");
87       response.bodyString.should.not.contain("/2/security/make-admin");
88     });
89 }