/**
*
*/
package org.minnal.instrument.entity.metadata;
import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertFalse;
import static org.testng.Assert.assertTrue;
import java.util.Set;
import org.minnal.instrument.entity.Collection;
import org.minnal.instrument.entity.Secure;
import org.minnal.instrument.entity.Secure.Method;
import org.minnal.instrument.entity.SecureMultiple;
import org.testng.annotations.Test;
import com.google.common.collect.Sets;
/**
* @author ganeshs
*
*/
public class CollectionMetaDataTest {
@Test
public void shouldPopulateCrudStatusFromField() {
CollectionMetaData data = new CollectionMetaData(DummyModel.class, "dummyModels", DummyModel.class, Set.class, true);
assertTrue(data.isCreateAllowed());
assertFalse(data.isUpdateAllowed());
}
@Test
public void shouldPopulateCrudStatusFromMethod() {
CollectionMetaData data = new CollectionMetaData(DummyModel.class, "anotherDummyModels", DummyModel.class, Set.class, true);
assertFalse(data.isCreateAllowed());
assertTrue(data.isUpdateAllowed());
}
@Test
public void shouldPopulatePermissionMetaDataFromField() {
CollectionMetaData data = new CollectionMetaData(DummyModel.class, "dummyModels", DummyModel.class, Set.class, true);
assertEquals(data.getPermissionMetaData().size(), 1);
assertEquals(data.getPermissionMetaData().iterator().next(), new PermissionMetaData(Method.POST.getMethod(), Sets.newHashSet("permission1")));
}
@Test
public void shouldPopulatePermissionMetaDataFromMethod() {
CollectionMetaData data = new CollectionMetaData(DummyModel.class, "anotherDummyModels", DummyModel.class, Set.class, true);
assertEquals(data.getPermissionMetaData().size(), 2);
assertEquals(data.getPermissionMetaData(), Sets.newHashSet(new PermissionMetaData(Method.GET.getMethod(), Sets.newHashSet("permission2", "permission3")),
new PermissionMetaData(Method.PUT.getMethod(), Sets.newHashSet("permission2"))));
}
public static class DummyModel {
@Secure(method=Method.POST, permissions="permission1")
@Collection(update=false)
private Set<DummyModel> dummyModels;
private Set<DummyModel> anotherDummyModels;
/**
* @return the dummyModels
*/
public Set<DummyModel> getDummyModels() {
return dummyModels;
}
/**
* @param dummyModels the dummyModels to set
*/
public void setDummyModels(Set<DummyModel> dummyModels) {
this.dummyModels = dummyModels;
}
/**
* @return the anotherDummyModels
*/
@Collection(create=false)
@SecureMultiple({@Secure(method=Method.GET, permissions={"permission2", "permission3"}),
@Secure(method=Method.PUT, permissions={"permission2"})})
public Set<DummyModel> getAnotherDummyModels() {
return anotherDummyModels;
}
/**
* @param anotherDummyModels the anotherDummyModels to set
*/
public void setAnotherDummyModels(Set<DummyModel> anotherDummyModels) {
this.anotherDummyModels = anotherDummyModels;
}
}
}