Commit eedb5dbb85407c78f9c2dab61181b9e5e037f0cd

Authored by Dancovich
2 parents fd4ec7ad 892df7e6
Exists in master

Merge remote-tracking branch 'origin/2.4.0' into 2.4.0

Showing 32 changed files with 806 additions and 226 deletions   Show diff stats
impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/DefaultAuthenticator.java
... ... @@ -72,7 +72,7 @@ public class DefaultAuthenticator implements Authenticator {
72 72 * @see br.gov.frameworkdemoiselle.security.Authenticator#unAuthenticate()
73 73 */
74 74 @Override
75   - public void unAuthenticate() {
  75 + public void unauthenticate() {
76 76 throw getException();
77 77 }
78 78  
... ...
impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/SecurityContextImpl.java
... ... @@ -38,11 +38,13 @@ package br.gov.frameworkdemoiselle.internal.implementation;
38 38  
39 39 import javax.inject.Named;
40 40  
  41 +import br.gov.frameworkdemoiselle.DemoiselleException;
41 42 import br.gov.frameworkdemoiselle.internal.configuration.SecurityConfig;
42 43 import br.gov.frameworkdemoiselle.security.AfterLoginSuccessful;
43 44 import br.gov.frameworkdemoiselle.security.AfterLogoutSuccessful;
44 45 import br.gov.frameworkdemoiselle.security.AuthenticationException;
45 46 import br.gov.frameworkdemoiselle.security.Authenticator;
  47 +import br.gov.frameworkdemoiselle.security.AuthorizationException;
46 48 import br.gov.frameworkdemoiselle.security.Authorizer;
47 49 import br.gov.frameworkdemoiselle.security.NotLoggedInException;
48 50 import br.gov.frameworkdemoiselle.security.SecurityContext;
... ... @@ -61,7 +63,7 @@ public class SecurityContextImpl implements SecurityContext {
61 63  
62 64 private static final long serialVersionUID = 1L;
63 65  
64   - private transient ResourceBundle bundle;
  66 + private transient ResourceBundle bundle;
65 67  
66 68 private Authenticator authenticator;
67 69  
... ... @@ -99,26 +101,45 @@ public class SecurityContextImpl implements SecurityContext {
99 101 * @see br.gov.frameworkdemoiselle.security.SecurityContext#hasPermission(java.lang.String, java.lang.String)
100 102 */
101 103 @Override
102   - public boolean hasPermission(String resource, String operation) throws NotLoggedInException {
  104 + public boolean hasPermission(String resource, String operation) {
  105 + boolean result = true;
  106 +
103 107 if (getConfig().isEnabled()) {
104 108 checkLoggedIn();
105   - return getAuthorizer().hasPermission(resource, operation);
106 109  
107   - } else {
108   - return true;
  110 + try {
  111 + result = getAuthorizer().hasPermission(resource, operation);
  112 +
  113 + } catch (DemoiselleException cause) {
  114 + throw cause;
  115 +
  116 + } catch (Exception cause) {
  117 + throw new AuthorizationException(cause);
  118 + }
109 119 }
  120 +
  121 + return result;
110 122 }
111 123  
112 124 /**
113 125 * @see br.gov.frameworkdemoiselle.security.SecurityContext#hasRole(java.lang.String)
114 126 */
115 127 @Override
116   - public boolean hasRole(String role) throws NotLoggedInException {
  128 + public boolean hasRole(String role) {
117 129 boolean result = true;
118 130  
119 131 if (getConfig().isEnabled()) {
120 132 checkLoggedIn();
121   - result = getAuthorizer().hasRole(role);
  133 +
  134 + try {
  135 + result = getAuthorizer().hasRole(role);
  136 +
  137 + } catch (DemoiselleException cause) {
  138 + throw cause;
  139 +
  140 + } catch (Exception cause) {
  141 + throw new AuthorizationException(cause);
  142 + }
122 143 }
123 144  
124 145 return result;
... ... @@ -142,9 +163,18 @@ public class SecurityContextImpl implements SecurityContext {
142 163 * @see br.gov.frameworkdemoiselle.security.SecurityContext#login()
143 164 */
144 165 @Override
145   - public void login() throws AuthenticationException {
  166 + public void login() {
146 167 if (getConfig().isEnabled()) {
147   - getAuthenticator().authenticate();
  168 +
  169 + try {
  170 + getAuthenticator().authenticate();
  171 +
  172 + } catch (DemoiselleException cause) {
  173 + throw cause;
  174 +
  175 + } catch (Exception cause) {
  176 + throw new AuthenticationException(cause);
  177 + }
148 178  
149 179 Beans.getBeanManager().fireEvent(new AfterLoginSuccessful() {
150 180  
... ... @@ -161,7 +191,16 @@ public class SecurityContextImpl implements SecurityContext {
161 191 public void logout() throws NotLoggedInException {
162 192 if (getConfig().isEnabled()) {
163 193 checkLoggedIn();
164   - getAuthenticator().unAuthenticate();
  194 +
  195 + try {
  196 + getAuthenticator().unauthenticate();
  197 +
  198 + } catch (DemoiselleException cause) {
  199 + throw cause;
  200 +
  201 + } catch (Exception cause) {
  202 + throw new AuthenticationException(cause);
  203 + }
165 204  
166 205 Beans.getBeanManager().fireEvent(new AfterLogoutSuccessful() {
167 206  
... ... @@ -194,7 +233,7 @@ public class SecurityContextImpl implements SecurityContext {
194 233 }
195 234 }
196 235  
197   - private ResourceBundle getBundle() {
  236 + private ResourceBundle getBundle() {
198 237 if (bundle == null) {
199 238 bundle = Beans.getReference(ResourceBundle.class, new NameQualifier("demoiselle-core-bundle"));
200 239 }
... ... @@ -202,7 +241,7 @@ public class SecurityContextImpl implements SecurityContext {
202 241 return bundle;
203 242 }
204 243  
205   - private static class EmptyUser implements User{
  244 + private static class EmptyUser implements User {
206 245  
207 246 private static final long serialVersionUID = 1L;
208 247  
... ...
impl/core/src/main/java/br/gov/frameworkdemoiselle/security/AuthorizationException.java
... ... @@ -54,4 +54,14 @@ public class AuthorizationException extends SecurityException {
54 54 public AuthorizationException(String message) {
55 55 super(message);
56 56 }
  57 +
  58 + /**
  59 + * Constructor with the cause.
  60 + *
  61 + * @param cause
  62 + * exception cause
  63 + */
  64 + public AuthorizationException(Throwable cause) {
  65 + super(cause);
  66 + }
57 67 }
... ...
impl/core/src/test/java/configuration/field/beanvalidation/ConfigurationBeanValidationFieldTest.java
... ... @@ -51,7 +51,6 @@ import org.junit.Test;
51 51 import org.junit.runner.RunWith;
52 52  
53 53 import test.Tests;
54   -
55 54 import br.gov.frameworkdemoiselle.configuration.ConfigurationException;
56 55  
57 56 @RunWith(Arquillian.class)
... ...
impl/core/src/test/java/management/testclasses/DummyManagementExtension.java
... ... @@ -40,7 +40,6 @@ import java.util.List;
40 40  
41 41 import javax.inject.Inject;
42 42  
43   -
44 43 import br.gov.frameworkdemoiselle.internal.implementation.ManagedType;
45 44 import br.gov.frameworkdemoiselle.management.ManagementExtension;
46 45  
... ...
impl/core/src/test/java/security/athentication/ambiguity/DuplicatedCustomAuthenticator.java
... ... @@ -36,7 +36,6 @@
36 36 */
37 37 package security.athentication.ambiguity;
38 38  
39   -import br.gov.frameworkdemoiselle.security.AuthenticationException;
40 39 import br.gov.frameworkdemoiselle.security.Authenticator;
41 40 import br.gov.frameworkdemoiselle.security.User;
42 41  
... ... @@ -45,11 +44,11 @@ public class DuplicatedCustomAuthenticator implements Authenticator {
45 44 private static final long serialVersionUID = 1L;
46 45  
47 46 @Override
48   - public void authenticate() throws AuthenticationException {
  47 + public void authenticate() {
49 48 }
50 49  
51 50 @Override
52   - public void unAuthenticate() {
  51 + public void unauthenticate() {
53 52 }
54 53  
55 54 @Override
... ...
impl/core/src/test/java/security/athentication/credentials/StrictAuthenticator.java
... ... @@ -48,7 +48,7 @@ public class StrictAuthenticator implements Authenticator {
48 48 private User currentUser;
49 49  
50 50 @Override
51   - public void authenticate() throws AuthenticationException {
  51 + public void authenticate() {
52 52  
53 53 Credentials c = Beans.getReference(Credentials.class);
54 54 if ("demoiselle".equals(c.getLogin())) {
... ... @@ -75,7 +75,7 @@ public class StrictAuthenticator implements Authenticator {
75 75 }
76 76  
77 77 @Override
78   - public void unAuthenticate() {
  78 + public void unauthenticate() {
79 79 this.currentUser = null;
80 80 }
81 81  
... ...
impl/core/src/test/java/security/athentication/custom/CustomAuthenticator.java
... ... @@ -36,7 +36,6 @@
36 36 */
37 37 package security.athentication.custom;
38 38  
39   -import br.gov.frameworkdemoiselle.security.AuthenticationException;
40 39 import br.gov.frameworkdemoiselle.security.Authenticator;
41 40 import br.gov.frameworkdemoiselle.security.User;
42 41  
... ... @@ -47,7 +46,7 @@ public class CustomAuthenticator implements Authenticator {
47 46 private User currentUser;
48 47  
49 48 @Override
50   - public void authenticate() throws AuthenticationException {
  49 + public void authenticate() {
51 50 this.currentUser = new User() {
52 51  
53 52 private static final long serialVersionUID = 1L;
... ... @@ -68,7 +67,7 @@ public class CustomAuthenticator implements Authenticator {
68 67 }
69 68  
70 69 @Override
71   - public void unAuthenticate() {
  70 + public void unauthenticate() {
72 71 this.currentUser = null;
73 72 }
74 73  
... ...
impl/core/src/test/java/security/athentication/disabled/DisabledAuthenticationTest.java
... ... @@ -93,12 +93,11 @@ public class DisabledAuthenticationTest {
93 93 assertEquals("demoiselle", context.getUser().getId());
94 94 }
95 95  
96   - //
97   - // @Test
98   - // public void logoutProcess() {
99   - // context.login();
100   - // context.logout();
101   - // assertFalse(context.isLoggedIn());
102   - // assertNull(context.getCurrentUser());
103   - // }
  96 + @Test
  97 + public void logoutProcess() {
  98 + context.login();
  99 + context.logout();
  100 + assertTrue(context.isLoggedIn());
  101 + assertEquals("demoiselle", context.getUser().getId());
  102 + }
104 103 }
... ...
impl/core/src/test/java/security/athentication/error/ErrorAuthenticator.java
... ... @@ -1,61 +0,0 @@
1   -/*
2   - * Demoiselle Framework
3   - * Copyright (C) 2010 SERPRO
4   - * ----------------------------------------------------------------------------
5   - * This file is part of Demoiselle Framework.
6   - *
7   - * Demoiselle Framework is free software; you can redistribute it and/or
8   - * modify it under the terms of the GNU Lesser General Public License version 3
9   - * as published by the Free Software Foundation.
10   - *
11   - * This program is distributed in the hope that it will be useful,
12   - * but WITHOUT ANY WARRANTY; without even the implied warranty of
13   - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14   - * GNU General Public License for more details.
15   - *
16   - * You should have received a copy of the GNU Lesser General Public License version 3
17   - * along with this program; if not, see <http://www.gnu.org/licenses/>
18   - * or write to the Free Software Foundation, Inc., 51 Franklin Street,
19   - * Fifth Floor, Boston, MA 02110-1301, USA.
20   - * ----------------------------------------------------------------------------
21   - * Este arquivo é parte do Framework Demoiselle.
22   - *
23   - * O Framework Demoiselle é um software livre; você pode redistribuí-lo e/ou
24   - * modificá-lo dentro dos termos da GNU LGPL versão 3 como publicada pela Fundação
25   - * do Software Livre (FSF).
26   - *
27   - * Este programa é distribuído na esperança que possa ser útil, mas SEM NENHUMA
28   - * GARANTIA; sem uma garantia implícita de ADEQUAÇÃO a qualquer MERCADO ou
29   - * APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral GNU/LGPL em português
30   - * para maiores detalhes.
31   - *
32   - * Você deve ter recebido uma cópia da GNU LGPL versão 3, sob o título
33   - * "LICENCA.txt", junto com esse programa. Se não, acesse <http://www.gnu.org/licenses/>
34   - * ou escreva para a Fundação do Software Livre (FSF) Inc.,
35   - * 51 Franklin St, Fifth Floor, Boston, MA 02111-1301, USA.
36   - */
37   -package security.athentication.error;
38   -
39   -import br.gov.frameworkdemoiselle.security.AuthenticationException;
40   -import br.gov.frameworkdemoiselle.security.Authenticator;
41   -import br.gov.frameworkdemoiselle.security.User;
42   -
43   -public class ErrorAuthenticator implements Authenticator {
44   -
45   - private static final long serialVersionUID = 1L;
46   -
47   - @Override
48   - public void authenticate() throws AuthenticationException {
49   - throw new RuntimeException();
50   - }
51   -
52   - @Override
53   - public void unAuthenticate() {
54   - throw new RuntimeException();
55   - }
56   -
57   - @Override
58   - public User getUser() {
59   - return null;
60   - }
61   -}
impl/core/src/test/java/security/athentication/error/ErrorAuthenticatorTest.java
... ... @@ -1,95 +0,0 @@
1   -/*
2   - * Demoiselle Framework
3   - * Copyright (C) 2010 SERPRO
4   - * ----------------------------------------------------------------------------
5   - * This file is part of Demoiselle Framework.
6   - *
7   - * Demoiselle Framework is free software; you can redistribute it and/or
8   - * modify it under the terms of the GNU Lesser General Public License version 3
9   - * as published by the Free Software Foundation.
10   - *
11   - * This program is distributed in the hope that it will be useful,
12   - * but WITHOUT ANY WARRANTY; without even the implied warranty of
13   - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14   - * GNU General Public License for more details.
15   - *
16   - * You should have received a copy of the GNU Lesser General Public License version 3
17   - * along with this program; if not, see <http://www.gnu.org/licenses/>
18   - * or write to the Free Software Foundation, Inc., 51 Franklin Street,
19   - * Fifth Floor, Boston, MA 02110-1301, USA.
20   - * ----------------------------------------------------------------------------
21   - * Este arquivo é parte do Framework Demoiselle.
22   - *
23   - * O Framework Demoiselle é um software livre; você pode redistribuí-lo e/ou
24   - * modificá-lo dentro dos termos da GNU LGPL versão 3 como publicada pela Fundação
25   - * do Software Livre (FSF).
26   - *
27   - * Este programa é distribuído na esperança que possa ser útil, mas SEM NENHUMA
28   - * GARANTIA; sem uma garantia implícita de ADEQUAÇÃO a qualquer MERCADO ou
29   - * APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral GNU/LGPL em português
30   - * para maiores detalhes.
31   - *
32   - * Você deve ter recebido uma cópia da GNU LGPL versão 3, sob o título
33   - * "LICENCA.txt", junto com esse programa. Se não, acesse <http://www.gnu.org/licenses/>
34   - * ou escreva para a Fundação do Software Livre (FSF) Inc.,
35   - * 51 Franklin St, Fifth Floor, Boston, MA 02111-1301, USA.
36   - */
37   -package security.athentication.error;
38   -
39   -import javax.inject.Inject;
40   -
41   -import junit.framework.Assert;
42   -
43   -import org.jboss.arquillian.container.test.api.Deployment;
44   -import org.jboss.arquillian.junit.Arquillian;
45   -import org.jboss.shrinkwrap.api.spec.JavaArchive;
46   -import org.junit.Test;
47   -import org.junit.runner.RunWith;
48   -
49   -import test.Tests;
50   -import br.gov.frameworkdemoiselle.security.AuthenticationException;
51   -import br.gov.frameworkdemoiselle.security.SecurityContext;
52   -import configuration.resource.ConfigurationResourceTest;
53   -
54   -@RunWith(Arquillian.class)
55   -public class ErrorAuthenticatorTest {
56   -
57   - @Inject
58   - private SecurityContext context;
59   -
60   - @Deployment
61   - public static JavaArchive createDeployment() {
62   - JavaArchive deployment = Tests.createDeployment(ConfigurationResourceTest.class);
63   - deployment.addClass(ErrorAuthenticator.class);
64   - return deployment;
65   - }
66   -
67   - @Test
68   - public void errorDuringLogin(){
69   - try{
70   - context.login();
71   - Assert.fail("Login deveria disparar exceção de runtime");
72   - }
73   - catch(AuthenticationException ae){
74   - Assert.fail("A exceção disparada não foi a esperada");
75   - }
76   - catch(RuntimeException e){
77   - //PASS
78   - }
79   - }
80   -
81   - @Test
82   - public void errorDuringLogout(){
83   - try{
84   - context.login();
85   - Assert.fail("Logout deveria disparar exceção de runtime");
86   - }
87   - catch(AuthenticationException ae){
88   - Assert.fail("A exceção disparada não foi a esperada");
89   - }
90   - catch(RuntimeException e){
91   - //PASS
92   - }
93   - }
94   -
95   -}
impl/core/src/test/java/security/athentication/error/LoginErrorAuthenticator.java 0 → 100644
... ... @@ -0,0 +1,60 @@
  1 +/*
  2 + * Demoiselle Framework
  3 + * Copyright (C) 2010 SERPRO
  4 + * ----------------------------------------------------------------------------
  5 + * This file is part of Demoiselle Framework.
  6 + *
  7 + * Demoiselle Framework is free software; you can redistribute it and/or
  8 + * modify it under the terms of the GNU Lesser General Public License version 3
  9 + * as published by the Free Software Foundation.
  10 + *
  11 + * This program is distributed in the hope that it will be useful,
  12 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  14 + * GNU General Public License for more details.
  15 + *
  16 + * You should have received a copy of the GNU Lesser General Public License version 3
  17 + * along with this program; if not, see <http://www.gnu.org/licenses/>
  18 + * or write to the Free Software Foundation, Inc., 51 Franklin Street,
  19 + * Fifth Floor, Boston, MA 02110-1301, USA.
  20 + * ----------------------------------------------------------------------------
  21 + * Este arquivo é parte do Framework Demoiselle.
  22 + *
  23 + * O Framework Demoiselle é um software livre; você pode redistribuí-lo e/ou
  24 + * modificá-lo dentro dos termos da GNU LGPL versão 3 como publicada pela Fundação
  25 + * do Software Livre (FSF).
  26 + *
  27 + * Este programa é distribuído na esperança que possa ser útil, mas SEM NENHUMA
  28 + * GARANTIA; sem uma garantia implícita de ADEQUAÇÃO a qualquer MERCADO ou
  29 + * APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral GNU/LGPL em português
  30 + * para maiores detalhes.
  31 + *
  32 + * Você deve ter recebido uma cópia da GNU LGPL versão 3, sob o título
  33 + * "LICENCA.txt", junto com esse programa. Se não, acesse <http://www.gnu.org/licenses/>
  34 + * ou escreva para a Fundação do Software Livre (FSF) Inc.,
  35 + * 51 Franklin St, Fifth Floor, Boston, MA 02111-1301, USA.
  36 + */
  37 +package security.athentication.error;
  38 +
  39 +import br.gov.frameworkdemoiselle.security.Authenticator;
  40 +import br.gov.frameworkdemoiselle.security.User;
  41 +
  42 +public class LoginErrorAuthenticator implements Authenticator {
  43 +
  44 + private static final long serialVersionUID = 1L;
  45 +
  46 + @Override
  47 + public void authenticate() {
  48 + throw new RuntimeException();
  49 + }
  50 +
  51 + @Override
  52 + public void unauthenticate() {
  53 + throw new RuntimeException();
  54 + }
  55 +
  56 + @Override
  57 + public User getUser() {
  58 + return null;
  59 + }
  60 +}
... ...
impl/core/src/test/java/security/athentication/error/LoginErrorAuthenticatorTest.java 0 → 100644
... ... @@ -0,0 +1,94 @@
  1 +/*
  2 + * Demoiselle Framework
  3 + * Copyright (C) 2010 SERPRO
  4 + * ----------------------------------------------------------------------------
  5 + * This file is part of Demoiselle Framework.
  6 + *
  7 + * Demoiselle Framework is free software; you can redistribute it and/or
  8 + * modify it under the terms of the GNU Lesser General Public License version 3
  9 + * as published by the Free Software Foundation.
  10 + *
  11 + * This program is distributed in the hope that it will be useful,
  12 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  14 + * GNU General Public License for more details.
  15 + *
  16 + * You should have received a copy of the GNU Lesser General Public License version 3
  17 + * along with this program; if not, see <http://www.gnu.org/licenses/>
  18 + * or write to the Free Software Foundation, Inc., 51 Franklin Street,
  19 + * Fifth Floor, Boston, MA 02110-1301, USA.
  20 + * ----------------------------------------------------------------------------
  21 + * Este arquivo é parte do Framework Demoiselle.
  22 + *
  23 + * O Framework Demoiselle é um software livre; você pode redistribuí-lo e/ou
  24 + * modificá-lo dentro dos termos da GNU LGPL versão 3 como publicada pela Fundação
  25 + * do Software Livre (FSF).
  26 + *
  27 + * Este programa é distribuído na esperança que possa ser útil, mas SEM NENHUMA
  28 + * GARANTIA; sem uma garantia implícita de ADEQUAÇÃO a qualquer MERCADO ou
  29 + * APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral GNU/LGPL em português
  30 + * para maiores detalhes.
  31 + *
  32 + * Você deve ter recebido uma cópia da GNU LGPL versão 3, sob o título
  33 + * "LICENCA.txt", junto com esse programa. Se não, acesse <http://www.gnu.org/licenses/>
  34 + * ou escreva para a Fundação do Software Livre (FSF) Inc.,
  35 + * 51 Franklin St, Fifth Floor, Boston, MA 02111-1301, USA.
  36 + */
  37 +package security.athentication.error;
  38 +
  39 +import static junit.framework.Assert.assertEquals;
  40 +import static junit.framework.Assert.fail;
  41 +
  42 +import javax.inject.Inject;
  43 +
  44 +import org.jboss.arquillian.container.test.api.Deployment;
  45 +import org.jboss.arquillian.junit.Arquillian;
  46 +import org.jboss.shrinkwrap.api.spec.JavaArchive;
  47 +import org.junit.Test;
  48 +import org.junit.runner.RunWith;
  49 +
  50 +import test.Tests;
  51 +import br.gov.frameworkdemoiselle.security.AuthenticationException;
  52 +import br.gov.frameworkdemoiselle.security.NotLoggedInException;
  53 +import br.gov.frameworkdemoiselle.security.SecurityContext;
  54 +import br.gov.frameworkdemoiselle.util.Beans;
  55 +import br.gov.frameworkdemoiselle.util.NameQualifier;
  56 +import br.gov.frameworkdemoiselle.util.ResourceBundle;
  57 +import configuration.resource.ConfigurationResourceTest;
  58 +
  59 +@RunWith(Arquillian.class)
  60 +public class LoginErrorAuthenticatorTest {
  61 +
  62 + @Inject
  63 + private SecurityContext context;
  64 +
  65 + @Deployment
  66 + public static JavaArchive createDeployment() {
  67 + JavaArchive deployment = Tests.createDeployment(ConfigurationResourceTest.class);
  68 + deployment.addClass(LoginErrorAuthenticator.class);
  69 + return deployment;
  70 + }
  71 +
  72 + @Test
  73 + public void errorDuringLogin() {
  74 + try {
  75 + context.login();
  76 + fail("Login deveria disparar exceção de runtime");
  77 +
  78 + } catch (AuthenticationException cause) {
  79 + assertEquals(RuntimeException.class, cause.getCause().getClass());
  80 + }
  81 + }
  82 +
  83 + @Test
  84 + public void errorDurindCheckLoggedIn() {
  85 + try {
  86 + context.checkLoggedIn();
  87 + fail("checkLoggedIn deveria disparar exceção de NotLoggedIn");
  88 + } catch (NotLoggedInException cause) {
  89 + assertEquals(Beans.getReference(ResourceBundle.class, new NameQualifier("demoiselle-core-bundle"))
  90 + .getString("user-not-authenticated"), cause.getMessage());
  91 + }
  92 + }
  93 +
  94 +}
... ...
impl/core/src/test/java/security/athentication/error/LogoutErrorAuthenticator.java 0 → 100644
... ... @@ -0,0 +1,78 @@
  1 +/*
  2 + * Demoiselle Framework
  3 + * Copyright (C) 2010 SERPRO
  4 + * ----------------------------------------------------------------------------
  5 + * This file is part of Demoiselle Framework.
  6 + *
  7 + * Demoiselle Framework is free software; you can redistribute it and/or
  8 + * modify it under the terms of the GNU Lesser General Public License version 3
  9 + * as published by the Free Software Foundation.
  10 + *
  11 + * This program is distributed in the hope that it will be useful,
  12 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  14 + * GNU General Public License for more details.
  15 + *
  16 + * You should have received a copy of the GNU Lesser General Public License version 3
  17 + * along with this program; if not, see <http://www.gnu.org/licenses/>
  18 + * or write to the Free Software Foundation, Inc., 51 Franklin Street,
  19 + * Fifth Floor, Boston, MA 02110-1301, USA.
  20 + * ----------------------------------------------------------------------------
  21 + * Este arquivo é parte do Framework Demoiselle.
  22 + *
  23 + * O Framework Demoiselle é um software livre; você pode redistribuí-lo e/ou
  24 + * modificá-lo dentro dos termos da GNU LGPL versão 3 como publicada pela Fundação
  25 + * do Software Livre (FSF).
  26 + *
  27 + * Este programa é distribuído na esperança que possa ser útil, mas SEM NENHUMA
  28 + * GARANTIA; sem uma garantia implícita de ADEQUAÇÃO a qualquer MERCADO ou
  29 + * APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral GNU/LGPL em português
  30 + * para maiores detalhes.
  31 + *
  32 + * Você deve ter recebido uma cópia da GNU LGPL versão 3, sob o título
  33 + * "LICENCA.txt", junto com esse programa. Se não, acesse <http://www.gnu.org/licenses/>
  34 + * ou escreva para a Fundação do Software Livre (FSF) Inc.,
  35 + * 51 Franklin St, Fifth Floor, Boston, MA 02111-1301, USA.
  36 + */
  37 +package security.athentication.error;
  38 +
  39 +import br.gov.frameworkdemoiselle.security.Authenticator;
  40 +import br.gov.frameworkdemoiselle.security.User;
  41 +
  42 +public class LogoutErrorAuthenticator implements Authenticator {
  43 +
  44 + private static final long serialVersionUID = 1L;
  45 +
  46 + private User currentUser;
  47 +
  48 + @Override
  49 + public void authenticate() {
  50 + this.currentUser = new User() {
  51 +
  52 + private static final long serialVersionUID = 1L;
  53 +
  54 + public String getId() {
  55 + return "demoiselle";
  56 + }
  57 +
  58 + @Override
  59 + public Object getAttribute(Object key) {
  60 + return null;
  61 + }
  62 +
  63 + @Override
  64 + public void setAttribute(Object key, Object value) {
  65 + }
  66 + };
  67 + }
  68 +
  69 + @Override
  70 + public void unauthenticate() {
  71 + throw new RuntimeException();
  72 + }
  73 +
  74 + @Override
  75 + public User getUser() {
  76 + return currentUser;
  77 + }
  78 +}
... ...
impl/core/src/test/java/security/athentication/error/LogoutErrorAuthenticatorTest.java 0 → 100644
... ... @@ -0,0 +1,82 @@
  1 +/*
  2 + * Demoiselle Framework
  3 + * Copyright (C) 2010 SERPRO
  4 + * ----------------------------------------------------------------------------
  5 + * This file is part of Demoiselle Framework.
  6 + *
  7 + * Demoiselle Framework is free software; you can redistribute it and/or
  8 + * modify it under the terms of the GNU Lesser General Public License version 3
  9 + * as published by the Free Software Foundation.
  10 + *
  11 + * This program is distributed in the hope that it will be useful,
  12 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  14 + * GNU General Public License for more details.
  15 + *
  16 + * You should have received a copy of the GNU Lesser General Public License version 3
  17 + * along with this program; if not, see <http://www.gnu.org/licenses/>
  18 + * or write to the Free Software Foundation, Inc., 51 Franklin Street,
  19 + * Fifth Floor, Boston, MA 02110-1301, USA.
  20 + * ----------------------------------------------------------------------------
  21 + * Este arquivo é parte do Framework Demoiselle.
  22 + *
  23 + * O Framework Demoiselle é um software livre; você pode redistribuí-lo e/ou
  24 + * modificá-lo dentro dos termos da GNU LGPL versão 3 como publicada pela Fundação
  25 + * do Software Livre (FSF).
  26 + *
  27 + * Este programa é distribuído na esperança que possa ser útil, mas SEM NENHUMA
  28 + * GARANTIA; sem uma garantia implícita de ADEQUAÇÃO a qualquer MERCADO ou
  29 + * APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral GNU/LGPL em português
  30 + * para maiores detalhes.
  31 + *
  32 + * Você deve ter recebido uma cópia da GNU LGPL versão 3, sob o título
  33 + * "LICENCA.txt", junto com esse programa. Se não, acesse <http://www.gnu.org/licenses/>
  34 + * ou escreva para a Fundação do Software Livre (FSF) Inc.,
  35 + * 51 Franklin St, Fifth Floor, Boston, MA 02111-1301, USA.
  36 + */
  37 +package security.athentication.error;
  38 +
  39 +import static junit.framework.Assert.assertEquals;
  40 +import static junit.framework.Assert.assertTrue;
  41 +import static junit.framework.Assert.fail;
  42 +
  43 +import javax.inject.Inject;
  44 +
  45 +import org.jboss.arquillian.container.test.api.Deployment;
  46 +import org.jboss.arquillian.junit.Arquillian;
  47 +import org.jboss.shrinkwrap.api.spec.JavaArchive;
  48 +import org.junit.Test;
  49 +import org.junit.runner.RunWith;
  50 +
  51 +import test.Tests;
  52 +import br.gov.frameworkdemoiselle.security.AuthenticationException;
  53 +import br.gov.frameworkdemoiselle.security.SecurityContext;
  54 +import configuration.resource.ConfigurationResourceTest;
  55 +
  56 +@RunWith(Arquillian.class)
  57 +public class LogoutErrorAuthenticatorTest {
  58 +
  59 + @Inject
  60 + private SecurityContext context;
  61 +
  62 + @Deployment
  63 + public static JavaArchive createDeployment() {
  64 + JavaArchive deployment = Tests.createDeployment(ConfigurationResourceTest.class);
  65 + deployment.addClass(LogoutErrorAuthenticator.class);
  66 + return deployment;
  67 + }
  68 +
  69 + @Test
  70 + public void errorDuringLogout() {
  71 + try {
  72 + context.login();
  73 + assertTrue(context.isLoggedIn());
  74 + context.logout();
  75 + fail("Logout deveria disparar exceção de runtime");
  76 +
  77 + } catch (AuthenticationException cause) {
  78 + assertEquals(RuntimeException.class, cause.getCause().getClass());
  79 + }
  80 + }
  81 +
  82 +}
... ...
impl/core/src/test/java/security/authorization/custom/CustomAuthorizer.java
... ... @@ -49,7 +49,7 @@ public class CustomAuthorizer implements Authorizer {
49 49  
50 50 @Override
51 51 public boolean hasPermission(String resource, String operation) {
52   - return "resource".equals(resource);
  52 + return "resource".equals(resource) && "operation".equals(operation);
53 53 }
54 54  
55 55  
... ...
impl/core/src/test/java/security/authorization/custom/CustomAuthorizerTest.java
... ... @@ -82,6 +82,15 @@ public class CustomAuthorizerTest {
82 82 Assert.assertTrue(context.hasRole("role"));
83 83 }
84 84  
  85 + /**
  86 + * Verify if when already exist an authorizer, the things keeps working fine.
  87 + */
  88 + @Test
  89 + public void hasPermitionAndHasRole(){
  90 + Assert.assertTrue(context.hasPermission("resource", "operation"));
  91 + Assert.assertTrue(context.hasRole("role"));
  92 + }
  93 +
85 94 @Test
86 95 public void denyPermission(){
87 96 Assert.assertFalse(context.hasPermission("falseresource", "falseoperation"));
... ...
impl/core/src/test/java/security/authorization/disable/DisabledAuthorizationTest.java 0 → 100644
... ... @@ -0,0 +1,98 @@
  1 +/*
  2 + * Demoiselle Framework
  3 + * Copyright (C) 2010 SERPRO
  4 + * ----------------------------------------------------------------------------
  5 + * This file is part of Demoiselle Framework.
  6 + *
  7 + * Demoiselle Framework is free software; you can redistribute it and/or
  8 + * modify it under the terms of the GNU Lesser General Public License version 3
  9 + * as published by the Free Software Foundation.
  10 + *
  11 + * This program is distributed in the hope that it will be useful,
  12 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  14 + * GNU General Public License for more details.
  15 + *
  16 + * You should have received a copy of the GNU Lesser General Public License version 3
  17 + * along with this program; if not, see <http://www.gnu.org/licenses/>
  18 + * or write to the Free Software Foundation, Inc., 51 Franklin Street,
  19 + * Fifth Floor, Boston, MA 02110-1301, USA.
  20 + * ----------------------------------------------------------------------------
  21 + * Este arquivo é parte do Framework Demoiselle.
  22 + *
  23 + * O Framework Demoiselle é um software livre; você pode redistribuí-lo e/ou
  24 + * modificá-lo dentro dos termos da GNU LGPL versão 3 como publicada pela Fundação
  25 + * do Software Livre (FSF).
  26 + *
  27 + * Este programa é distribuído na esperança que possa ser útil, mas SEM NENHUMA
  28 + * GARANTIA; sem uma garantia implícita de ADEQUAÇÃO a qualquer MERCADO ou
  29 + * APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral GNU/LGPL em português
  30 + * para maiores detalhes.
  31 + *
  32 + * Você deve ter recebido uma cópia da GNU LGPL versão 3, sob o título
  33 + * "LICENCA.txt", junto com esse programa. Se não, acesse <http://www.gnu.org/licenses/>
  34 + * ou escreva para a Fundação do Software Livre (FSF) Inc.,
  35 + * 51 Franklin St, Fifth Floor, Boston, MA 02111-1301, USA.
  36 + */
  37 +package security.authorization.disable;
  38 +
  39 +import static org.junit.Assert.assertEquals;
  40 +import static org.junit.Assert.assertNull;
  41 +import static org.junit.Assert.assertTrue;
  42 +
  43 +import javax.enterprise.context.RequestScoped;
  44 +import javax.enterprise.event.Observes;
  45 +import javax.inject.Inject;
  46 +
  47 +import junit.framework.Assert;
  48 +
  49 +import org.jboss.arquillian.container.test.api.Deployment;
  50 +import org.jboss.arquillian.junit.Arquillian;
  51 +import org.jboss.shrinkwrap.api.spec.JavaArchive;
  52 +import org.junit.Test;
  53 +import org.junit.runner.RunWith;
  54 +
  55 +import security.athentication.custom.CustomAuthenticator;
  56 +import security.authorization.custom.CustomAuthorizer;
  57 +import test.Tests;
  58 +import br.gov.frameworkdemoiselle.security.AfterLoginSuccessful;
  59 +import br.gov.frameworkdemoiselle.security.SecurityContext;
  60 +import configuration.resource.ConfigurationResourceTest;
  61 +
  62 +@RequestScoped
  63 +@RunWith(Arquillian.class)
  64 +public class DisabledAuthorizationTest {
  65 +
  66 + private static final String PATH = "src/test/resources/security/authorization/disabled";
  67 +
  68 + @Inject
  69 + private SecurityContext context;
  70 +
  71 + private AfterLoginSuccessful event;
  72 +
  73 + @Deployment
  74 + public static JavaArchive createDeployment() {
  75 + JavaArchive deployment = Tests.createDeployment(ConfigurationResourceTest.class);
  76 + deployment.addClass(CustomAuthorizer.class);
  77 + deployment.addAsResource(Tests.createFileAsset(PATH + "/demoiselle.properties"), "demoiselle.properties");
  78 + return deployment;
  79 + }
  80 +
  81 + public void observer(@Observes AfterLoginSuccessful event) {
  82 + this.event = event;
  83 + }
  84 +
  85 + @Test
  86 + public void hasPermissionProcess() {
  87 + Assert.assertTrue(context.hasPermission("resource", "operation"));
  88 + Assert.assertTrue(context.hasPermission("falseresource", "falseoperation"));
  89 + assertNull(event);
  90 + }
  91 +
  92 + @Test
  93 + public void hasRoleProcess(){
  94 + Assert.assertTrue(context.hasRole("role"));
  95 + Assert.assertTrue(context.hasRole("falserole"));
  96 + assertNull(event);
  97 + }
  98 +}
... ...
impl/core/src/test/java/security/authorization/error/ErrorAuthorizer.java
... ... @@ -52,6 +52,4 @@ public class ErrorAuthorizer implements Authorizer {
52 52 throw new RuntimeException("Erro desconhecido ao obter permissões");
53 53 }
54 54  
55   -
56   -
57 55 }
... ...
impl/core/src/test/java/security/authorization/error/ErrorAuthorizerTest.java
... ... @@ -36,9 +36,10 @@
36 36 */
37 37 package security.authorization.error;
38 38  
39   -import javax.inject.Inject;
  39 +import static junit.framework.Assert.assertEquals;
  40 +import static junit.framework.Assert.fail;
40 41  
41   -import junit.framework.Assert;
  42 +import javax.inject.Inject;
42 43  
43 44 import org.jboss.arquillian.container.test.api.Deployment;
44 45 import org.jboss.arquillian.junit.Arquillian;
... ... @@ -51,7 +52,6 @@ import org.junit.runner.RunWith;
51 52 import security.athentication.custom.CustomAuthenticator;
52 53 import test.Tests;
53 54 import br.gov.frameworkdemoiselle.security.AuthorizationException;
54   -import br.gov.frameworkdemoiselle.security.NotLoggedInException;
55 55 import br.gov.frameworkdemoiselle.security.SecurityContext;
56 56 import configuration.resource.ConfigurationResourceTest;
57 57  
... ... @@ -68,43 +68,37 @@ public class ErrorAuthorizerTest {
68 68 deployment.addClass(ErrorAuthorizer.class);
69 69 return deployment;
70 70 }
71   -
  71 +
72 72 @Before
73   - public void loginToTest(){
  73 + public void loginToTest() {
74 74 context.login();
75 75 }
76 76  
77 77 @Test
78   - public void errorDuringCheckPermission(){
79   - try{
  78 + public void errorDuringCheckPermission() {
  79 + try {
80 80 context.hasPermission("resource", "operation");
81   - Assert.fail("Verificar permissão deveria disparar exceção de runtime");
82   - }
83   - catch(NotLoggedInException ae){
84   - Assert.fail("A exceção disparada não foi a esperada");
85   - }
86   - catch(RuntimeException e){
87   - //PASS
  81 + fail("Verificar permissão deveria disparar exceção de runtime");
  82 +
  83 + } catch (AuthorizationException cause) {
  84 + assertEquals(RuntimeException.class, cause.getCause().getClass());
88 85 }
89 86 }
90   -
  87 +
91 88 @Test
92   - public void errorDuringCheckRole(){
93   - try{
  89 + public void errorDuringCheckRole() {
  90 + try {
94 91 context.hasRole("role");
95   - Assert.fail("Verificar papel deveria disparar exceção de runtime");
96   - }
97   - catch(AuthorizationException ae){
98   - Assert.fail("A exceção disparada não foi a esperada");
99   - }
100   - catch(RuntimeException e){
101   - //PASS
  92 + fail("Verificar papel deveria disparar exceção de runtime");
  93 +
  94 + } catch (AuthorizationException cause) {
  95 + assertEquals(RuntimeException.class, cause.getCause().getClass());
102 96 }
103 97 }
104   -
  98 +
105 99 @After
106   - public void logoutAfterTest(){
  100 + public void logoutAfterTest() {
107 101 context.logout();
108 102 }
109   -
  103 +
110 104 }
... ...
impl/core/src/test/java/security/authorization/selection/SelectedAuthorizerTest.java
... ... @@ -79,7 +79,6 @@ public class SelectedAuthorizerTest {
79 79  
80 80 @Test
81 81 public void selectedAuthorizerStrategy() {
82   - context.login();
83 82 Assert.assertTrue(context.hasRole("role"));
84 83 }
85 84  
... ...
impl/core/src/test/java/security/interceptor/loggedin/CustomAuthenticator.java 0 → 100644
... ... @@ -0,0 +1,81 @@
  1 +/*
  2 + * Demoiselle Framework
  3 + * Copyright (C) 2010 SERPRO
  4 + * ----------------------------------------------------------------------------
  5 + * This file is part of Demoiselle Framework.
  6 + *
  7 + * Demoiselle Framework is free software; you can redistribute it and/or
  8 + * modify it under the terms of the GNU Lesser General Public License version 3
  9 + * as published by the Free Software Foundation.
  10 + *
  11 + * This program is distributed in the hope that it will be useful,
  12 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  14 + * GNU General Public License for more details.
  15 + *
  16 + * You should have received a copy of the GNU Lesser General Public License version 3
  17 + * along with this program; if not, see <http://www.gnu.org/licenses/>
  18 + * or write to the Free Software Foundation, Inc., 51 Franklin Street,
  19 + * Fifth Floor, Boston, MA 02110-1301, USA.
  20 + * ----------------------------------------------------------------------------
  21 + * Este arquivo é parte do Framework Demoiselle.
  22 + *
  23 + * O Framework Demoiselle é um software livre; você pode redistribuí-lo e/ou
  24 + * modificá-lo dentro dos termos da GNU LGPL versão 3 como publicada pela Fundação
  25 + * do Software Livre (FSF).
  26 + *
  27 + * Este programa é distribuído na esperança que possa ser útil, mas SEM NENHUMA
  28 + * GARANTIA; sem uma garantia implícita de ADEQUAÇÃO a qualquer MERCADO ou
  29 + * APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral GNU/LGPL em português
  30 + * para maiores detalhes.
  31 + *
  32 + * Você deve ter recebido uma cópia da GNU LGPL versão 3, sob o título
  33 + * "LICENCA.txt", junto com esse programa. Se não, acesse <http://www.gnu.org/licenses/>
  34 + * ou escreva para a Fundação do Software Livre (FSF) Inc.,
  35 + * 51 Franklin St, Fifth Floor, Boston, MA 02111-1301, USA.
  36 + */
  37 +package security.interceptor.loggedin;
  38 +
  39 +import javax.enterprise.context.SessionScoped;
  40 +
  41 +import br.gov.frameworkdemoiselle.security.Authenticator;
  42 +import br.gov.frameworkdemoiselle.security.User;
  43 +
  44 +@SessionScoped
  45 +public class CustomAuthenticator implements Authenticator {
  46 +
  47 + private static final long serialVersionUID = 1L;
  48 +
  49 + private User currentUser;
  50 +
  51 + @Override
  52 + public void authenticate() {
  53 + this.currentUser = new User() {
  54 +
  55 + private static final long serialVersionUID = 1L;
  56 +
  57 + public String getId() {
  58 + return "demoiselle";
  59 + }
  60 +
  61 + @Override
  62 + public Object getAttribute(Object key) {
  63 + return null;
  64 + }
  65 +
  66 + @Override
  67 + public void setAttribute(Object key, Object value) {
  68 + }
  69 + };
  70 + }
  71 +
  72 + @Override
  73 + public void unauthenticate() {
  74 + this.currentUser = null;
  75 + }
  76 +
  77 + @Override
  78 + public User getUser() {
  79 + return this.currentUser;
  80 + }
  81 +}
... ...
impl/core/src/test/java/security/interceptor/loggedin/DummyProtectedClass.java 0 → 100644
... ... @@ -0,0 +1,54 @@
  1 +/*
  2 + * Demoiselle Framework
  3 + * Copyright (C) 2010 SERPRO
  4 + * ----------------------------------------------------------------------------
  5 + * This file is part of Demoiselle Framework.
  6 + *
  7 + * Demoiselle Framework is free software; you can redistribute it and/or
  8 + * modify it under the terms of the GNU Lesser General Public License version 3
  9 + * as published by the Free Software Foundation.
  10 + *
  11 + * This program is distributed in the hope that it will be useful,
  12 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  14 + * GNU General Public License for more details.
  15 + *
  16 + * You should have received a copy of the GNU Lesser General Public License version 3
  17 + * along with this program; if not, see <http://www.gnu.org/licenses/>
  18 + * or write to the Free Software Foundation, Inc., 51 Franklin Street,
  19 + * Fifth Floor, Boston, MA 02110-1301, USA.
  20 + * ----------------------------------------------------------------------------
  21 + * Este arquivo é parte do Framework Demoiselle.
  22 + *
  23 + * O Framework Demoiselle é um software livre; você pode redistribuí-lo e/ou
  24 + * modificá-lo dentro dos termos da GNU LGPL versão 3 como publicada pela Fundação
  25 + * do Software Livre (FSF).
  26 + *
  27 + * Este programa é distribuído na esperança que possa ser útil, mas SEM NENHUMA
  28 + * GARANTIA; sem uma garantia implícita de ADEQUAÇÃO a qualquer MERCADO ou
  29 + * APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral GNU/LGPL em português
  30 + * para maiores detalhes.
  31 + *
  32 + * Você deve ter recebido uma cópia da GNU LGPL versão 3, sob o título
  33 + * "LICENCA.txt", junto com esse programa. Se não, acesse <http://www.gnu.org/licenses/>
  34 + * ou escreva para a Fundação do Software Livre (FSF) Inc.,
  35 + * 51 Franklin St, Fifth Floor, Boston, MA 02111-1301, USA.
  36 + */
  37 +package security.interceptor.loggedin;
  38 +
  39 +import br.gov.frameworkdemoiselle.security.LoggedIn;
  40 +
  41 +@LoggedIn
  42 +public class DummyProtectedClass {
  43 +
  44 + private String dummyAttrib;
  45 +
  46 + public String getDummyAttrib() {
  47 + return dummyAttrib;
  48 + }
  49 +
  50 + public void setDummyAttrib(String dummyAttrib) {
  51 + this.dummyAttrib = dummyAttrib;
  52 + }
  53 +
  54 +}
... ...
impl/core/src/test/java/security/interceptor/loggedin/LoggedInInterceptorTest.java 0 → 100644
... ... @@ -0,0 +1,109 @@
  1 +/*
  2 + * Demoiselle Framework
  3 + * Copyright (C) 2010 SERPRO
  4 + * ----------------------------------------------------------------------------
  5 + * This file is part of Demoiselle Framework.
  6 + *
  7 + * Demoiselle Framework is free software; you can redistribute it and/or
  8 + * modify it under the terms of the GNU Lesser General Public License version 3
  9 + * as published by the Free Software Foundation.
  10 + *
  11 + * This program is distributed in the hope that it will be useful,
  12 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  14 + * GNU General Public License for more details.
  15 + *
  16 + * You should have received a copy of the GNU Lesser General Public License version 3
  17 + * along with this program; if not, see <http://www.gnu.org/licenses/>
  18 + * or write to the Free Software Foundation, Inc., 51 Franklin Street,
  19 + * Fifth Floor, Boston, MA 02110-1301, USA.
  20 + * ----------------------------------------------------------------------------
  21 + * Este arquivo é parte do Framework Demoiselle.
  22 + *
  23 + * O Framework Demoiselle é um software livre; você pode redistribuí-lo e/ou
  24 + * modificá-lo dentro dos termos da GNU LGPL versão 3 como publicada pela Fundação
  25 + * do Software Livre (FSF).
  26 + *
  27 + * Este programa é distribuído na esperança que possa ser útil, mas SEM NENHUMA
  28 + * GARANTIA; sem uma garantia implícita de ADEQUAÇÃO a qualquer MERCADO ou
  29 + * APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral GNU/LGPL em português
  30 + * para maiores detalhes.
  31 + *
  32 + * Você deve ter recebido uma cópia da GNU LGPL versão 3, sob o título
  33 + * "LICENCA.txt", junto com esse programa. Se não, acesse <http://www.gnu.org/licenses/>
  34 + * ou escreva para a Fundação do Software Livre (FSF) Inc.,
  35 + * 51 Franklin St, Fifth Floor, Boston, MA 02111-1301, USA.
  36 + */
  37 +package security.interceptor.loggedin;
  38 +
  39 +import static junit.framework.Assert.assertEquals;
  40 +import static org.junit.Assert.assertEquals;
  41 +import static org.junit.Assert.assertNotNull;
  42 +import static org.junit.Assert.assertTrue;
  43 +
  44 +import javax.inject.Inject;
  45 +
  46 +import org.jboss.arquillian.container.test.api.Deployment;
  47 +import org.jboss.arquillian.junit.Arquillian;
  48 +import org.jboss.shrinkwrap.api.spec.JavaArchive;
  49 +import org.junit.After;
  50 +import org.junit.Before;
  51 +import org.junit.Test;
  52 +import org.junit.runner.RunWith;
  53 +
  54 +import br.gov.frameworkdemoiselle.context.RequestContext;
  55 +import br.gov.frameworkdemoiselle.context.SessionContext;
  56 +import br.gov.frameworkdemoiselle.security.AuthenticationException;
  57 +import br.gov.frameworkdemoiselle.security.NotLoggedInException;
  58 +import br.gov.frameworkdemoiselle.security.SecurityContext;
  59 +import br.gov.frameworkdemoiselle.util.Beans;
  60 +import br.gov.frameworkdemoiselle.util.NameQualifier;
  61 +import br.gov.frameworkdemoiselle.util.ResourceBundle;
  62 +
  63 +import test.Tests;
  64 +
  65 +@RunWith(Arquillian.class)
  66 +public class LoggedInInterceptorTest {
  67 +
  68 + @Inject
  69 + private DummyProtectedClass protectedClass;
  70 +
  71 + @Inject
  72 + private SecurityContext context;
  73 +
  74 + @Deployment
  75 + public static JavaArchive createDeployment() {
  76 + JavaArchive deployment = Tests.createDeployment();
  77 + deployment.addClass(DummyProtectedClass.class);
  78 + deployment.addClass(CustomAuthenticator.class);
  79 + return deployment;
  80 + }
  81 +
  82 + @Before
  83 + public void activeContext(){
  84 + SessionContext ctx = Beans.getReference(SessionContext.class);
  85 + ctx.activate();
  86 + }
  87 +
  88 + @Test
  89 + public void callProtectedClassAttribNotLogged() {
  90 + try {
  91 + protectedClass.getDummyAttrib();
  92 + } catch (NotLoggedInException cause) {
  93 + assertEquals(Beans.getReference(ResourceBundle.class, new NameQualifier("demoiselle-core-bundle"))
  94 + .getString("user-not-authenticated"), cause.getMessage());
  95 + }
  96 + }
  97 +
  98 + @Test
  99 + public void callProtectedClassAttribLogged() {
  100 + context.login();
  101 + protectedClass.getDummyAttrib();
  102 + }
  103 +
  104 + @After
  105 + public void deactiveContext(){
  106 + SessionContext ctx = Beans.getReference(SessionContext.class);
  107 + ctx.deactivate();
  108 + }
  109 +}
... ...
impl/core/src/test/java/transaction/createdstrategy/TransactionWithCreatedStrategyTest.java
... ... @@ -47,11 +47,10 @@ import org.junit.Before;
47 47 import org.junit.Test;
48 48 import org.junit.runner.RunWith;
49 49  
  50 +import test.Tests;
50 51 import br.gov.frameworkdemoiselle.transaction.Transaction;
51 52 import br.gov.frameworkdemoiselle.transaction.TransactionContext;
52 53  
53   -import test.Tests;
54   -
55 54 @RunWith(Arquillian.class)
56 55 public class TransactionWithCreatedStrategyTest {
57 56  
... ...
impl/core/src/test/java/transaction/defaultstrategy/TransactionDefaultTest.java
... ... @@ -45,12 +45,11 @@ import org.junit.Before;
45 45 import org.junit.Test;
46 46 import org.junit.runner.RunWith;
47 47  
  48 +import test.Tests;
48 49 import br.gov.frameworkdemoiselle.DemoiselleException;
49 50 import br.gov.frameworkdemoiselle.transaction.Transaction;
50 51 import br.gov.frameworkdemoiselle.transaction.TransactionContext;
51 52  
52   -import test.Tests;
53   -
54 53 @RunWith(Arquillian.class)
55 54 public class TransactionDefaultTest {
56 55  
... ...
impl/core/src/test/java/util/beans/BeansTest.java
... ... @@ -48,7 +48,6 @@ import org.junit.Test;
48 48 import org.junit.runner.RunWith;
49 49  
50 50 import test.Tests;
51   -
52 51 import br.gov.frameworkdemoiselle.DemoiselleException;
53 52 import br.gov.frameworkdemoiselle.util.Beans;
54 53  
... ...
impl/core/src/test/java/util/beans/QualifierOne.java
... ... @@ -38,8 +38,8 @@ package util.beans;
38 38  
39 39 import static java.lang.annotation.ElementType.FIELD;
40 40 import static java.lang.annotation.ElementType.METHOD;
41   -import static java.lang.annotation.ElementType.TYPE;
42 41 import static java.lang.annotation.ElementType.PARAMETER;
  42 +import static java.lang.annotation.ElementType.TYPE;
43 43 import static java.lang.annotation.RetentionPolicy.RUNTIME;
44 44  
45 45 import java.lang.annotation.Retention;
... ...
impl/core/src/test/java/util/beans/QualifierTwo.java
... ... @@ -38,8 +38,8 @@ package util.beans;
38 38  
39 39 import static java.lang.annotation.ElementType.FIELD;
40 40 import static java.lang.annotation.ElementType.METHOD;
41   -import static java.lang.annotation.ElementType.TYPE;
42 41 import static java.lang.annotation.ElementType.PARAMETER;
  42 +import static java.lang.annotation.ElementType.TYPE;
43 43 import static java.lang.annotation.RetentionPolicy.RUNTIME;
44 44  
45 45 import java.lang.annotation.Retention;
... ...
impl/core/src/test/resources/beans.xml
... ... @@ -5,6 +5,7 @@
5 5 <class>br.gov.frameworkdemoiselle.transaction.TransactionalInterceptor</class>
6 6 <class>br.gov.frameworkdemoiselle.security.RequiredPermissionInterceptor</class>
7 7 <class>br.gov.frameworkdemoiselle.security.RequiredRoleInterceptor</class>
  8 + <class>br.gov.frameworkdemoiselle.security.LoggedInInterceptor</class>
8 9 <class>br.gov.frameworkdemoiselle.exception.ExceptionHandlerInterceptor</class>
9 10 </interceptors>
10 11  
... ...
impl/core/src/test/resources/security/authorization/disabled/demoiselle.properties 0 → 100644
... ... @@ -0,0 +1,38 @@
  1 +# Demoiselle Framework
  2 +# Copyright (C) 2010 SERPRO
  3 +# ----------------------------------------------------------------------------
  4 +# This file is part of Demoiselle Framework.
  5 +#
  6 +# Demoiselle Framework is free software; you can redistribute it and/or
  7 +# modify it under the terms of the GNU Lesser General Public License version 3
  8 +# as published by the Free Software Foundation.
  9 +#
  10 +# This program is distributed in the hope that it will be useful,
  11 +# but WITHOUT ANY WARRANTY; without even the implied warranty of
  12 +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  13 +# GNU General Public License for more details.
  14 +#
  15 +# You should have received a copy of the GNU Lesser General Public License version 3
  16 +# along with this program; if not, see <http://www.gnu.org/licenses/>
  17 +# or write to the Free Software Foundation, Inc., 51 Franklin Street,
  18 +# Fifth Floor, Boston, MA 02110-1301, USA.
  19 +# ----------------------------------------------------------------------------
  20 +# Este arquivo é parte do Framework Demoiselle.
  21 +#
  22 +# O Framework Demoiselle é um software livre; você pode redistribuí-lo e/ou
  23 +# modificá-lo dentro dos termos da GNU LGPL versão 3 como publicada pela Fundação
  24 +# do Software Livre (FSF).
  25 +#
  26 +# Este programa é distribuído na esperança que possa ser útil, mas SEM NENHUMA
  27 +# GARANTIA; sem uma garantia implícita de ADEQUAÇÃO a qualquer MERCADO ou
  28 +# APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral GNU/LGPL em português
  29 +# para maiores detalhes.
  30 +#
  31 +# Você deve ter recebido uma cópia da GNU LGPL versão 3, sob o título
  32 +# "LICENCA.txt", junto com esse programa. Se não, acesse <http://www.gnu.org/licenses/>
  33 +# ou escreva para a Fundação do Software Livre (FSF) Inc.,
  34 +# 51 Franklin St, Fifth Floor, Boston, MA 02111-1301, USA.
  35 +
  36 +frameworkdemoiselle.security.authorizer.class=security.authorization.custom.CustomAuthorizer
  37 +#frameworkdemoiselle.security.authenticator.class=security.athentication.custom.CustomAuthenticator
  38 +frameworkdemoiselle.security.enabled=false
0 39 \ No newline at end of file
... ...
impl/extension/servlet/src/main/java/br/gov/frameworkdemoiselle/security/ServletAuthenticator.java
... ... @@ -74,7 +74,7 @@ public class ServletAuthenticator implements Authenticator {
74 74 }
75 75  
76 76 @Override
77   - public void unAuthenticate() {
  77 + public void unauthenticate() {
78 78 getCredentials().clear();
79 79 try {
80 80 getRequest().logout();
... ...