package org.swellrt.beta.model;
import junit.framework.TestCase;
/*
* @author pablojan@gmail.com
*
*/
public class SNodeAccessControlTest extends TestCase {
/**
* Checks that serialization/deseralization works
* and return the access control object
* @return
*/
protected SNodeAccessControl deserializeWithAssert(String token) {
SNodeAccessControl nac = SNodeAccessControl.deserialize(token);
String tokenBis = nac.serialize();
SNodeAccessControl nacBis = SNodeAccessControl.deserialize(tokenBis);
assertTrue(nac.equals(nacBis));
return nac;
}
public void testEmptyToken() {
String t = "";
SNodeAccessControl nac = deserializeWithAssert(t);
assertTrue(nac.canRead("ann@acme.com"));
assertTrue(nac.canRead("ann@acme.com"));
}
public void testReadersToken() {
String t = "r[ann@acme.com,bob@acme.com]";
SNodeAccessControl nac = deserializeWithAssert(t);
assertTrue(nac.canRead("ann@acme.com"));
assertTrue(nac.canRead("bob@acme.com"));
assertFalse(nac.canRead("chris@acme.com"));
assertTrue(nac.canWrite("xxx@acme.com"));
}
public void testOnlyWriteForbiddenToken() {
String t = "!w";
SNodeAccessControl nac = deserializeWithAssert(t);
assertTrue(nac.canRead("ann@acme.com"));
assertTrue(nac.canRead("bob@acme.com"));
assertTrue(nac.canRead("chris@acme.com"));
assertFalse(nac.canWrite("xxx@acme.com"));
}
public void testReadersWriteForbiddenToken() {
String t = "r[ann@acme.com,bob@acme.com]!w";
SNodeAccessControl nac = deserializeWithAssert(t);
assertTrue(nac.canRead("ann@acme.com"));
assertTrue(nac.canRead("bob@acme.com"));
assertFalse(nac.canRead("chris@acme.com"));
assertFalse(nac.canWrite("xxx@acme.com"));
}
public void testReadersWritersToken() {
String t = "r[ann@acme.com,bob@acme.com]w[chris@acme.com,dany@acme.com]";
SNodeAccessControl nac = deserializeWithAssert(t);
assertTrue(nac.canRead("ann@acme.com"));
assertTrue(nac.canRead("bob@acme.com"));
assertFalse(nac.canRead("chris@acme.com"));
assertFalse(nac.canRead("dany@acme.com"));
assertFalse(nac.canRead("xxx@acme.com"));
assertFalse(nac.canWrite("ann@acme.com"));
assertFalse(nac.canWrite("bob@acme.com"));
assertTrue(nac.canWrite("chris@acme.com"));
assertTrue(nac.canWrite("dany@acme.com"));
assertFalse(nac.canWrite("xxx@acme.com"));
}
}