/**
*
*/
package org.minnal.instrument.entity.metadata.handler;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import org.minnal.instrument.entity.Secure;
import org.minnal.instrument.entity.Secure.Method;
import org.minnal.instrument.entity.SecureMultiple;
import org.minnal.instrument.entity.metadata.PermissionMetaData;
import org.minnal.instrument.entity.metadata.SecurableMetaData;
import org.testng.annotations.Test;
import com.google.common.collect.Sets;
/**
* @author ganeshs
*
*/
public class SecureMultipleAnnotationHandlerTest {
@Test
public void shouldHandleSecureAnnotation() {
SecurableMetaData metaData = mock(SecurableMetaData.class);
SecureMultipleAnnotationHandler handler = new SecureMultipleAnnotationHandler();
SecureMultiple multiple = mock(SecureMultiple.class);
Secure secure1 = mock(Secure.class);
when(secure1.permissions()).thenReturn(new String[] {"permission1", "permission2"});
when(secure1.method()).thenReturn(Method.GET);
Secure secure2 = mock(Secure.class);
when(secure2.permissions()).thenReturn(new String[] {"permission3"});
when(secure2.method()).thenReturn(Method.POST);
when(multiple.value()).thenReturn(new Secure[]{secure1, secure2});
handler.handle(metaData, multiple);
verify(metaData).addPermissionMetaData(new PermissionMetaData(Method.GET.getMethod(), Sets.newHashSet("permission1", "permission2")));
verify(metaData).addPermissionMetaData(new PermissionMetaData(Method.POST.getMethod(), Sets.newHashSet("permission3")));
}
}