diff --git a/impl/core/src/test/java/security/interceptor/requiredpermission/CustomAuthorizer.java b/impl/core/src/test/java/security/interceptor/requiredpermission/CustomAuthorizer.java
new file mode 100644
index 0000000..5f38d98
--- /dev/null
+++ b/impl/core/src/test/java/security/interceptor/requiredpermission/CustomAuthorizer.java
@@ -0,0 +1,55 @@
+/*
+ * Demoiselle Framework
+ * Copyright (C) 2010 SERPRO
+ * ----------------------------------------------------------------------------
+ * This file is part of Demoiselle Framework.
+ *
+ * Demoiselle Framework is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License version 3
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License version 3
+ * along with this program; if not, see
+ * or write to the Free Software Foundation, Inc., 51 Franklin Street,
+ * Fifth Floor, Boston, MA 02110-1301, USA.
+ * ----------------------------------------------------------------------------
+ * Este arquivo é parte do Framework Demoiselle.
+ *
+ * O Framework Demoiselle é um software livre; você pode redistribuí-lo e/ou
+ * modificá-lo dentro dos termos da GNU LGPL versão 3 como publicada pela Fundação
+ * do Software Livre (FSF).
+ *
+ * Este programa é distribuído na esperança que possa ser útil, mas SEM NENHUMA
+ * GARANTIA; sem uma garantia implícita de ADEQUAÇÃO a qualquer MERCADO ou
+ * APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral GNU/LGPL em português
+ * para maiores detalhes.
+ *
+ * Você deve ter recebido uma cópia da GNU LGPL versão 3, sob o título
+ * "LICENCA.txt", junto com esse programa. Se não, acesse
+ * ou escreva para a Fundação do Software Livre (FSF) Inc.,
+ * 51 Franklin St, Fifth Floor, Boston, MA 02111-1301, USA.
+ */
+package security.interceptor.requiredpermission;
+
+import br.gov.frameworkdemoiselle.security.Authorizer;
+
+public class CustomAuthorizer implements Authorizer {
+
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public boolean hasRole(String role) {
+ return "role".equals(role);
+ }
+
+ @Override
+ public boolean hasPermission(String resource, String operation) {
+ return "resource".equals(resource) && "operation".equals(operation);
+ }
+
+}
diff --git a/impl/core/src/test/java/security/interceptor/requiredpermission/CustomAuthorizer2.java b/impl/core/src/test/java/security/interceptor/requiredpermission/CustomAuthorizer2.java
new file mode 100644
index 0000000..80601e1
--- /dev/null
+++ b/impl/core/src/test/java/security/interceptor/requiredpermission/CustomAuthorizer2.java
@@ -0,0 +1,57 @@
+/*
+ * Demoiselle Framework
+ * Copyright (C) 2010 SERPRO
+ * ----------------------------------------------------------------------------
+ * This file is part of Demoiselle Framework.
+ *
+ * Demoiselle Framework is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License version 3
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License version 3
+ * along with this program; if not, see
+ * or write to the Free Software Foundation, Inc., 51 Franklin Street,
+ * Fifth Floor, Boston, MA 02110-1301, USA.
+ * ----------------------------------------------------------------------------
+ * Este arquivo é parte do Framework Demoiselle.
+ *
+ * O Framework Demoiselle é um software livre; você pode redistribuí-lo e/ou
+ * modificá-lo dentro dos termos da GNU LGPL versão 3 como publicada pela Fundação
+ * do Software Livre (FSF).
+ *
+ * Este programa é distribuído na esperança que possa ser útil, mas SEM NENHUMA
+ * GARANTIA; sem uma garantia implícita de ADEQUAÇÃO a qualquer MERCADO ou
+ * APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral GNU/LGPL em português
+ * para maiores detalhes.
+ *
+ * Você deve ter recebido uma cópia da GNU LGPL versão 3, sob o título
+ * "LICENCA.txt", junto com esse programa. Se não, acesse
+ * ou escreva para a Fundação do Software Livre (FSF) Inc.,
+ * 51 Franklin St, Fifth Floor, Boston, MA 02111-1301, USA.
+ */
+package security.interceptor.requiredpermission;
+
+import br.gov.frameworkdemoiselle.security.Authorizer;
+
+public class CustomAuthorizer2 implements Authorizer {
+
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public boolean hasRole(String role) {
+ return "role".equals(role);
+ }
+
+ @Override
+ public boolean hasPermission(String resource, String operation) {
+ System.out.println("###" + resource + " " + operation + "###");
+ return "DummyProtectedClassAuthorizedWithoutParams$Proxy$_$$_WeldSubclass".equals(resource)
+ && ("setDummyAttrib".equals(operation) || "getDummyAttrib".equals(operation));
+ }
+
+}
diff --git a/impl/core/src/test/java/security/interceptor/requiredpermission/DummyProtectedClassAndMethod.java b/impl/core/src/test/java/security/interceptor/requiredpermission/DummyProtectedClassAndMethod.java
new file mode 100644
index 0000000..e7b0b22
--- /dev/null
+++ b/impl/core/src/test/java/security/interceptor/requiredpermission/DummyProtectedClassAndMethod.java
@@ -0,0 +1,59 @@
+/*
+ * Demoiselle Framework
+ * Copyright (C) 2010 SERPRO
+ * ----------------------------------------------------------------------------
+ * This file is part of Demoiselle Framework.
+ *
+ * Demoiselle Framework is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License version 3
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License version 3
+ * along with this program; if not, see
+ * or write to the Free Software Foundation, Inc., 51 Franklin Street,
+ * Fifth Floor, Boston, MA 02110-1301, USA.
+ * ----------------------------------------------------------------------------
+ * Este arquivo é parte do Framework Demoiselle.
+ *
+ * O Framework Demoiselle é um software livre; você pode redistribuí-lo e/ou
+ * modificá-lo dentro dos termos da GNU LGPL versão 3 como publicada pela Fundação
+ * do Software Livre (FSF).
+ *
+ * Este programa é distribuído na esperança que possa ser útil, mas SEM NENHUMA
+ * GARANTIA; sem uma garantia implícita de ADEQUAÇÃO a qualquer MERCADO ou
+ * APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral GNU/LGPL em português
+ * para maiores detalhes.
+ *
+ * Você deve ter recebido uma cópia da GNU LGPL versão 3, sob o título
+ * "LICENCA.txt", junto com esse programa. Se não, acesse
+ * ou escreva para a Fundação do Software Livre (FSF) Inc.,
+ * 51 Franklin St, Fifth Floor, Boston, MA 02111-1301, USA.
+ */
+package security.interceptor.requiredpermission;
+
+import br.gov.frameworkdemoiselle.security.RequiredPermission;
+
+@RequiredPermission(resource = "resource false", operation = "operation false")
+public class DummyProtectedClassAndMethod {
+
+ private String dummyAttrib = "Default";
+
+ public String getDummyAttrib() {
+ return dummyAttrib;
+ }
+
+ public void setDummyAttribWithClassAuthorization(String dummyAttrib) {
+ this.dummyAttrib = dummyAttrib;
+ }
+
+ @RequiredPermission(resource = "resource", operation = "operation")
+ public void setDummyAttribWithAuthorization(String dummyAttrib) {
+ this.dummyAttrib = dummyAttrib;
+ }
+
+}
diff --git a/impl/core/src/test/java/security/interceptor/requiredpermission/DummyProtectedClassAuthorized.java b/impl/core/src/test/java/security/interceptor/requiredpermission/DummyProtectedClassAuthorized.java
new file mode 100644
index 0000000..82aa10a
--- /dev/null
+++ b/impl/core/src/test/java/security/interceptor/requiredpermission/DummyProtectedClassAuthorized.java
@@ -0,0 +1,54 @@
+/*
+ * Demoiselle Framework
+ * Copyright (C) 2010 SERPRO
+ * ----------------------------------------------------------------------------
+ * This file is part of Demoiselle Framework.
+ *
+ * Demoiselle Framework is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License version 3
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License version 3
+ * along with this program; if not, see
+ * or write to the Free Software Foundation, Inc., 51 Franklin Street,
+ * Fifth Floor, Boston, MA 02110-1301, USA.
+ * ----------------------------------------------------------------------------
+ * Este arquivo é parte do Framework Demoiselle.
+ *
+ * O Framework Demoiselle é um software livre; você pode redistribuí-lo e/ou
+ * modificá-lo dentro dos termos da GNU LGPL versão 3 como publicada pela Fundação
+ * do Software Livre (FSF).
+ *
+ * Este programa é distribuído na esperança que possa ser útil, mas SEM NENHUMA
+ * GARANTIA; sem uma garantia implícita de ADEQUAÇÃO a qualquer MERCADO ou
+ * APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral GNU/LGPL em português
+ * para maiores detalhes.
+ *
+ * Você deve ter recebido uma cópia da GNU LGPL versão 3, sob o título
+ * "LICENCA.txt", junto com esse programa. Se não, acesse
+ * ou escreva para a Fundação do Software Livre (FSF) Inc.,
+ * 51 Franklin St, Fifth Floor, Boston, MA 02111-1301, USA.
+ */
+package security.interceptor.requiredpermission;
+
+import br.gov.frameworkdemoiselle.security.RequiredPermission;
+
+@RequiredPermission(resource="resource", operation="operation")
+public class DummyProtectedClassAuthorized {
+
+ private String dummyAttrib;
+
+ public String getDummyAttrib() {
+ return dummyAttrib;
+ }
+
+ public void setDummyAttrib(String dummyAttrib) {
+ this.dummyAttrib = dummyAttrib;
+ }
+
+}
diff --git a/impl/core/src/test/java/security/interceptor/requiredpermission/DummyProtectedClassAuthorizedWithoutParams.java b/impl/core/src/test/java/security/interceptor/requiredpermission/DummyProtectedClassAuthorizedWithoutParams.java
new file mode 100644
index 0000000..e1b6626
--- /dev/null
+++ b/impl/core/src/test/java/security/interceptor/requiredpermission/DummyProtectedClassAuthorizedWithoutParams.java
@@ -0,0 +1,54 @@
+/*
+ * Demoiselle Framework
+ * Copyright (C) 2010 SERPRO
+ * ----------------------------------------------------------------------------
+ * This file is part of Demoiselle Framework.
+ *
+ * Demoiselle Framework is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License version 3
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License version 3
+ * along with this program; if not, see
+ * or write to the Free Software Foundation, Inc., 51 Franklin Street,
+ * Fifth Floor, Boston, MA 02110-1301, USA.
+ * ----------------------------------------------------------------------------
+ * Este arquivo é parte do Framework Demoiselle.
+ *
+ * O Framework Demoiselle é um software livre; você pode redistribuí-lo e/ou
+ * modificá-lo dentro dos termos da GNU LGPL versão 3 como publicada pela Fundação
+ * do Software Livre (FSF).
+ *
+ * Este programa é distribuído na esperança que possa ser útil, mas SEM NENHUMA
+ * GARANTIA; sem uma garantia implícita de ADEQUAÇÃO a qualquer MERCADO ou
+ * APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral GNU/LGPL em português
+ * para maiores detalhes.
+ *
+ * Você deve ter recebido uma cópia da GNU LGPL versão 3, sob o título
+ * "LICENCA.txt", junto com esse programa. Se não, acesse
+ * ou escreva para a Fundação do Software Livre (FSF) Inc.,
+ * 51 Franklin St, Fifth Floor, Boston, MA 02111-1301, USA.
+ */
+package security.interceptor.requiredpermission;
+
+import br.gov.frameworkdemoiselle.security.RequiredPermission;
+
+@RequiredPermission
+public class DummyProtectedClassAuthorizedWithoutParams {
+
+ private String dummyAttrib;
+
+ public String getDummyAttrib() {
+ return dummyAttrib;
+ }
+
+ public void setDummyAttrib(String dummyAttrib) {
+ this.dummyAttrib = dummyAttrib;
+ }
+
+}
diff --git a/impl/core/src/test/java/security/interceptor/requiredpermission/DummyProtectedClassUnauthorized.java b/impl/core/src/test/java/security/interceptor/requiredpermission/DummyProtectedClassUnauthorized.java
new file mode 100644
index 0000000..46d476e
--- /dev/null
+++ b/impl/core/src/test/java/security/interceptor/requiredpermission/DummyProtectedClassUnauthorized.java
@@ -0,0 +1,54 @@
+/*
+ * Demoiselle Framework
+ * Copyright (C) 2010 SERPRO
+ * ----------------------------------------------------------------------------
+ * This file is part of Demoiselle Framework.
+ *
+ * Demoiselle Framework is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License version 3
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License version 3
+ * along with this program; if not, see
+ * or write to the Free Software Foundation, Inc., 51 Franklin Street,
+ * Fifth Floor, Boston, MA 02110-1301, USA.
+ * ----------------------------------------------------------------------------
+ * Este arquivo é parte do Framework Demoiselle.
+ *
+ * O Framework Demoiselle é um software livre; você pode redistribuí-lo e/ou
+ * modificá-lo dentro dos termos da GNU LGPL versão 3 como publicada pela Fundação
+ * do Software Livre (FSF).
+ *
+ * Este programa é distribuído na esperança que possa ser útil, mas SEM NENHUMA
+ * GARANTIA; sem uma garantia implícita de ADEQUAÇÃO a qualquer MERCADO ou
+ * APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral GNU/LGPL em português
+ * para maiores detalhes.
+ *
+ * Você deve ter recebido uma cópia da GNU LGPL versão 3, sob o título
+ * "LICENCA.txt", junto com esse programa. Se não, acesse
+ * ou escreva para a Fundação do Software Livre (FSF) Inc.,
+ * 51 Franklin St, Fifth Floor, Boston, MA 02111-1301, USA.
+ */
+package security.interceptor.requiredpermission;
+
+import br.gov.frameworkdemoiselle.security.RequiredPermission;
+
+@RequiredPermission(resource="resource false", operation="operation false")
+public class DummyProtectedClassUnauthorized {
+
+ private String dummyAttrib;
+
+ public String getDummyAttrib() {
+ return dummyAttrib;
+ }
+
+ public void setDummyAttrib(String dummyAttrib) {
+ this.dummyAttrib = dummyAttrib;
+ }
+
+}
diff --git a/impl/core/src/test/java/security/interceptor/requiredpermission/DummyProtectedMethods.java b/impl/core/src/test/java/security/interceptor/requiredpermission/DummyProtectedMethods.java
new file mode 100644
index 0000000..a443f0a
--- /dev/null
+++ b/impl/core/src/test/java/security/interceptor/requiredpermission/DummyProtectedMethods.java
@@ -0,0 +1,60 @@
+/*
+ * Demoiselle Framework
+ * Copyright (C) 2010 SERPRO
+ * ----------------------------------------------------------------------------
+ * This file is part of Demoiselle Framework.
+ *
+ * Demoiselle Framework is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License version 3
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License version 3
+ * along with this program; if not, see
+ * or write to the Free Software Foundation, Inc., 51 Franklin Street,
+ * Fifth Floor, Boston, MA 02110-1301, USA.
+ * ----------------------------------------------------------------------------
+ * Este arquivo é parte do Framework Demoiselle.
+ *
+ * O Framework Demoiselle é um software livre; você pode redistribuí-lo e/ou
+ * modificá-lo dentro dos termos da GNU LGPL versão 3 como publicada pela Fundação
+ * do Software Livre (FSF).
+ *
+ * Este programa é distribuído na esperança que possa ser útil, mas SEM NENHUMA
+ * GARANTIA; sem uma garantia implícita de ADEQUAÇÃO a qualquer MERCADO ou
+ * APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral GNU/LGPL em português
+ * para maiores detalhes.
+ *
+ * Você deve ter recebido uma cópia da GNU LGPL versão 3, sob o título
+ * "LICENCA.txt", junto com esse programa. Se não, acesse
+ * ou escreva para a Fundação do Software Livre (FSF) Inc.,
+ * 51 Franklin St, Fifth Floor, Boston, MA 02111-1301, USA.
+ */
+package security.interceptor.requiredpermission;
+
+import br.gov.frameworkdemoiselle.security.RequiredPermission;
+
+public class DummyProtectedMethods {
+
+ private String dummyAttrib = "Default";
+
+
+ public String getDummyAttrib() {
+ return dummyAttrib;
+ }
+
+ @RequiredPermission(resource="resource", operation="operation")
+ public void setDummyAttribAuthorized(String dummyAttrib) {
+ this.dummyAttrib = dummyAttrib;
+ }
+
+ @RequiredPermission(resource="resource false", operation="operation false")
+ public void setDummyAttribUnauthorized(String dummyAttrib) {
+ this.dummyAttrib = dummyAttrib;
+ }
+
+}
diff --git a/impl/core/src/test/java/security/interceptor/requiredpermission/RequiredPermissionInterceptorTest.java b/impl/core/src/test/java/security/interceptor/requiredpermission/RequiredPermissionInterceptorTest.java
new file mode 100644
index 0000000..47cbfd3
--- /dev/null
+++ b/impl/core/src/test/java/security/interceptor/requiredpermission/RequiredPermissionInterceptorTest.java
@@ -0,0 +1,143 @@
+/*
+ * Demoiselle Framework
+ * Copyright (C) 2010 SERPRO
+ * ----------------------------------------------------------------------------
+ * This file is part of Demoiselle Framework.
+ *
+ * Demoiselle Framework is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License version 3
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License version 3
+ * along with this program; if not, see
+ * or write to the Free Software Foundation, Inc., 51 Franklin Street,
+ * Fifth Floor, Boston, MA 02110-1301, USA.
+ * ----------------------------------------------------------------------------
+ * Este arquivo é parte do Framework Demoiselle.
+ *
+ * O Framework Demoiselle é um software livre; você pode redistribuí-lo e/ou
+ * modificá-lo dentro dos termos da GNU LGPL versão 3 como publicada pela Fundação
+ * do Software Livre (FSF).
+ *
+ * Este programa é distribuído na esperança que possa ser útil, mas SEM NENHUMA
+ * GARANTIA; sem uma garantia implícita de ADEQUAÇÃO a qualquer MERCADO ou
+ * APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral GNU/LGPL em português
+ * para maiores detalhes.
+ *
+ * Você deve ter recebido uma cópia da GNU LGPL versão 3, sob o título
+ * "LICENCA.txt", junto com esse programa. Se não, acesse
+ * ou escreva para a Fundação do Software Livre (FSF) Inc.,
+ * 51 Franklin St, Fifth Floor, Boston, MA 02111-1301, USA.
+ */
+package security.interceptor.requiredpermission;
+
+import static junit.framework.Assert.assertEquals;
+import static org.junit.Assert.fail;
+
+import javax.inject.Inject;
+
+import org.jboss.arquillian.container.test.api.Deployment;
+import org.jboss.arquillian.junit.Arquillian;
+import org.jboss.shrinkwrap.api.spec.JavaArchive;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import security.interceptor.loggedin.CustomAuthenticator;
+import test.Tests;
+import br.gov.frameworkdemoiselle.context.SessionContext;
+import br.gov.frameworkdemoiselle.security.AuthorizationException;
+import br.gov.frameworkdemoiselle.security.SecurityContext;
+import br.gov.frameworkdemoiselle.util.Beans;
+
+@RunWith(Arquillian.class)
+public class RequiredPermissionInterceptorTest {
+
+ @Inject
+ private DummyProtectedClassAuthorized protectedClassAuthorized;
+
+ @Inject
+ private DummyProtectedClassUnauthorized protectedClassUnAuthorized;
+
+ @Inject
+ private DummyProtectedMethods protectedMethods;
+
+ @Inject
+ private DummyProtectedClassAndMethod protectedClassAndMethod;
+
+ @Inject
+ private SecurityContext securityContext;
+
+ @Deployment
+ public static JavaArchive createDeployment() {
+ JavaArchive deployment = Tests.createDeployment();
+ deployment.addClass(DummyProtectedClassAuthorized.class);
+ deployment.addClass(DummyProtectedClassUnauthorized.class);
+ deployment.addClass(DummyProtectedMethods.class);
+ deployment.addClass(DummyProtectedClassAndMethod.class);
+ deployment.addClass(CustomAuthenticator.class);
+ deployment.addClass(CustomAuthorizer.class);
+ return deployment;
+ }
+
+ @Before
+ public void activeContext() {
+ SessionContext sessionContext = Beans.getReference(SessionContext.class);
+ sessionContext.activate();
+
+ securityContext.login();
+ }
+
+ @Test(expected=AuthorizationException.class)
+ public void callProtectedClassAttribNotAuthorized() {
+ protectedClassUnAuthorized.getDummyAttrib();
+ }
+
+ @Test
+ public void callProtectedClassAttribAuthorized() {
+ protectedClassAuthorized.setDummyAttrib("Test");
+ assertEquals("Test", protectedClassAuthorized.getDummyAttrib());
+ }
+
+ @Test(expected=AuthorizationException.class)
+ public void callProtectedMethodNotAuthorized(){
+ protectedMethods.setDummyAttribUnauthorized("Not Authorized");
+ }
+
+ @Test
+ public void callProtectedMethodAuthorized(){
+ protectedMethods.setDummyAttribAuthorized("Authorized");
+ assertEquals("Authorized", protectedMethods.getDummyAttrib());
+ }
+
+ /**
+ * This test aim to verify the priority of method authorization over class authorization
+ */
+ @Test
+ public void callNotAnnotatedMethod(){
+ try{
+ protectedClassAndMethod.setDummyAttribWithClassAuthorization("Class not authorized");
+ fail();
+ }catch(AuthorizationException cause){
+ }
+
+ protectedClassAndMethod.setDummyAttribWithAuthorization("Method authorized");
+ }
+
+
+
+ @After
+ public void deactiveContext() {
+ securityContext.logout();
+
+ SessionContext ctx = Beans.getReference(SessionContext.class);
+ ctx.deactivate();
+ }
+}
diff --git a/impl/core/src/test/java/security/interceptor/requiredpermission/RequiredPermissionInterceptorTest2.java b/impl/core/src/test/java/security/interceptor/requiredpermission/RequiredPermissionInterceptorTest2.java
new file mode 100644
index 0000000..dc5fc17
--- /dev/null
+++ b/impl/core/src/test/java/security/interceptor/requiredpermission/RequiredPermissionInterceptorTest2.java
@@ -0,0 +1,99 @@
+/*
+ * Demoiselle Framework
+ * Copyright (C) 2010 SERPRO
+ * ----------------------------------------------------------------------------
+ * This file is part of Demoiselle Framework.
+ *
+ * Demoiselle Framework is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License version 3
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License version 3
+ * along with this program; if not, see
+ * or write to the Free Software Foundation, Inc., 51 Franklin Street,
+ * Fifth Floor, Boston, MA 02110-1301, USA.
+ * ----------------------------------------------------------------------------
+ * Este arquivo é parte do Framework Demoiselle.
+ *
+ * O Framework Demoiselle é um software livre; você pode redistribuí-lo e/ou
+ * modificá-lo dentro dos termos da GNU LGPL versão 3 como publicada pela Fundação
+ * do Software Livre (FSF).
+ *
+ * Este programa é distribuído na esperança que possa ser útil, mas SEM NENHUMA
+ * GARANTIA; sem uma garantia implícita de ADEQUAÇÃO a qualquer MERCADO ou
+ * APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral GNU/LGPL em português
+ * para maiores detalhes.
+ *
+ * Você deve ter recebido uma cópia da GNU LGPL versão 3, sob o título
+ * "LICENCA.txt", junto com esse programa. Se não, acesse
+ * ou escreva para a Fundação do Software Livre (FSF) Inc.,
+ * 51 Franklin St, Fifth Floor, Boston, MA 02111-1301, USA.
+ */
+package security.interceptor.requiredpermission;
+
+import static junit.framework.Assert.assertEquals;
+import static org.junit.Assert.fail;
+
+import javax.inject.Inject;
+
+import org.jboss.arquillian.container.test.api.Deployment;
+import org.jboss.arquillian.junit.Arquillian;
+import org.jboss.shrinkwrap.api.spec.JavaArchive;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import security.interceptor.loggedin.CustomAuthenticator;
+import test.Tests;
+import br.gov.frameworkdemoiselle.context.SessionContext;
+import br.gov.frameworkdemoiselle.security.AuthorizationException;
+import br.gov.frameworkdemoiselle.security.SecurityContext;
+import br.gov.frameworkdemoiselle.util.Beans;
+
+@RunWith(Arquillian.class)
+public class RequiredPermissionInterceptorTest2 {
+
+ @Inject
+ private DummyProtectedClassAuthorizedWithoutParams protectedClassAuthorizedWithoutParams;
+
+ @Inject
+ private SecurityContext securityContext;
+
+ @Deployment
+ public static JavaArchive createDeployment() {
+ JavaArchive deployment = Tests.createDeployment();
+ deployment.addClass(DummyProtectedClassAuthorizedWithoutParams.class);
+ deployment.addClass(CustomAuthenticator.class);
+ deployment.addClass(CustomAuthorizer2.class);
+ return deployment;
+ }
+
+ @Before
+ public void activeContext() {
+ SessionContext sessionContext = Beans.getReference(SessionContext.class);
+ sessionContext.activate();
+
+ securityContext.login();
+ }
+
+ @Test
+ public void callProtectedClassAttribNotAuthorized() {
+ protectedClassAuthorizedWithoutParams.setDummyAttrib("Test");
+ assertEquals("Test", protectedClassAuthorizedWithoutParams.getDummyAttrib());
+ }
+
+ @After
+ public void deactiveContext() {
+ securityContext.logout();
+
+ SessionContext ctx = Beans.getReference(SessionContext.class);
+ ctx.deactivate();
+ }
+}
--
libgit2 0.21.2