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 }