Commit de86ad8b82ca88a8bd9a1d7cb2d8d9f3531617f6
1 parent
53aeb669
Exists in
master
Ajustado o padrão dos nomes dos testes de gerenciamento e monitoração.
Showing
11 changed files
with
589 additions
and
660 deletions
Show diff stats
impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/bootstrap/ManagementBootstrap.java
| ... | ... | @@ -21,7 +21,6 @@ import br.gov.frameworkdemoiselle.internal.context.ContextManager; |
| 21 | 21 | import br.gov.frameworkdemoiselle.internal.context.ManagedContext; |
| 22 | 22 | import br.gov.frameworkdemoiselle.internal.management.ManagedType; |
| 23 | 23 | import br.gov.frameworkdemoiselle.internal.management.Management; |
| 24 | -import br.gov.frameworkdemoiselle.internal.producer.ResourceBundleProducer; | |
| 25 | 24 | import br.gov.frameworkdemoiselle.lifecycle.AfterShutdownProccess; |
| 26 | 25 | import br.gov.frameworkdemoiselle.lifecycle.ManagementExtension; |
| 27 | 26 | import br.gov.frameworkdemoiselle.stereotype.ManagementController; |
| ... | ... | @@ -48,7 +47,7 @@ public class ManagementBootstrap implements Extension { |
| 48 | 47 | |
| 49 | 48 | @SuppressWarnings("unchecked") |
| 50 | 49 | public void registerAvailableManagedTypes(@Observes final AfterDeploymentValidation event, BeanManager beanManager) { |
| 51 | - ResourceBundle bundle = new ResourceBundleProducer().create("demoiselle-core-bundle", Locale.getDefault()); | |
| 50 | + ResourceBundle bundle = new ResourceBundle("demoiselle-core-bundle", Locale.getDefault()); | |
| 52 | 51 | |
| 53 | 52 | Management monitoringManager = Beans.getReference(Management.class); |
| 54 | 53 | for (AnnotatedType<?> type : types) { | ... | ... |
impl/core/src/test/java/management/AnnotationTestCase.java
| ... | ... | @@ -1,99 +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 management; | |
| 38 | - | |
| 39 | -import java.io.File; | |
| 40 | - | |
| 41 | -import management.testclasses.DummyManagementExtension; | |
| 42 | -import management.testclasses.ManagedClassStore; | |
| 43 | - | |
| 44 | -import org.jboss.arquillian.container.test.api.Deployer; | |
| 45 | -import org.jboss.arquillian.container.test.api.Deployment; | |
| 46 | -import org.jboss.arquillian.junit.Arquillian; | |
| 47 | -import org.jboss.arquillian.test.api.ArquillianResource; | |
| 48 | -import org.jboss.shrinkwrap.api.ShrinkWrap; | |
| 49 | -import org.jboss.shrinkwrap.api.asset.FileAsset; | |
| 50 | -import org.jboss.shrinkwrap.api.spec.JavaArchive; | |
| 51 | -import org.junit.Assert; | |
| 52 | -import org.junit.Ignore; | |
| 53 | -import org.junit.Test; | |
| 54 | -import org.junit.runner.RunWith; | |
| 55 | - | |
| 56 | -import test.Tests; | |
| 57 | - | |
| 58 | -//TODO O arquillian está com um problema onde, embora os testes rodem todos individualmente, | |
| 59 | -//ao pedir para rodar todos este teste individual causa todos os testes executados após esse | |
| 60 | -//falharem. Até este problema ser resolvido este teste será ignorado. | |
| 61 | -@RunWith(Arquillian.class) | |
| 62 | -@Ignore | |
| 63 | -public class AnnotationTestCase { | |
| 64 | - | |
| 65 | - /** | |
| 66 | - * Deployment containing a malformed managed class. Tests using this deployment will check if deployment fails (it | |
| 67 | - * has to). | |
| 68 | - */ | |
| 69 | - @Deployment(name = "wrong_annotation", managed = false) | |
| 70 | - public static JavaArchive createWrongAnnotationDeployment() { | |
| 71 | - return ShrinkWrap | |
| 72 | - .create(JavaArchive.class) | |
| 73 | - .addClass(Tests.class) | |
| 74 | - .addPackages(true, "br") | |
| 75 | - .addAsResource(new FileAsset(new File("src/test/resources/beans.xml")), "beans.xml") | |
| 76 | - .addAsManifestResource( | |
| 77 | - new File("src/main/resources/META-INF/services/javax.enterprise.inject.spi.Extension"), | |
| 78 | - "services/javax.enterprise.inject.spi.Extension") | |
| 79 | - .addPackages(false, ManagementBootstrapTestCase.class.getPackage()) | |
| 80 | - //.addClasses(DummyManagementExtension.class, DummyManagedClassPropertyError.class, ManagedClassStore.class); | |
| 81 | - .addClasses(DummyManagementExtension.class, ManagedClassStore.class); | |
| 82 | - } | |
| 83 | - | |
| 84 | - @Test | |
| 85 | - public void testWrongAnnotation(@ArquillianResource Deployer deployer) { | |
| 86 | - | |
| 87 | - try { | |
| 88 | - deployer.deploy("wrong_annotation"); | |
| 89 | - | |
| 90 | - // O processo de deploy precisa falhar, pois temos uma classe anotada com falhas. | |
| 91 | - Assert.fail(); | |
| 92 | - } catch (Exception e) { | |
| 93 | - //SUCCESS | |
| 94 | - } finally { | |
| 95 | - deployer.undeploy("wrong_annotation"); | |
| 96 | - } | |
| 97 | - } | |
| 98 | - | |
| 99 | -} |
impl/core/src/test/java/management/ManagementBootstrapTestCase.java
| ... | ... | @@ -1,136 +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 management; | |
| 38 | - | |
| 39 | -import java.io.File; | |
| 40 | -import java.util.List; | |
| 41 | - | |
| 42 | -import javax.enterprise.inject.spi.BeforeShutdown; | |
| 43 | - | |
| 44 | -import management.testclasses.DummyManagedClass; | |
| 45 | -import management.testclasses.DummyManagementExtension; | |
| 46 | -import management.testclasses.ManagedClassStore; | |
| 47 | - | |
| 48 | -import org.jboss.arquillian.container.test.api.Deployment; | |
| 49 | -import org.jboss.arquillian.junit.Arquillian; | |
| 50 | -import org.jboss.shrinkwrap.api.ShrinkWrap; | |
| 51 | -import org.jboss.shrinkwrap.api.asset.FileAsset; | |
| 52 | -import org.jboss.shrinkwrap.api.spec.JavaArchive; | |
| 53 | -import org.junit.Assert; | |
| 54 | -import org.junit.Ignore; | |
| 55 | -import org.junit.Test; | |
| 56 | -import org.junit.runner.RunWith; | |
| 57 | - | |
| 58 | -import test.Tests; | |
| 59 | -import br.gov.frameworkdemoiselle.internal.management.ManagedType; | |
| 60 | -import br.gov.frameworkdemoiselle.lifecycle.ManagementExtension; | |
| 61 | -import br.gov.frameworkdemoiselle.util.Beans; | |
| 62 | - | |
| 63 | -@RunWith(Arquillian.class) | |
| 64 | -@Ignore | |
| 65 | -public class ManagementBootstrapTestCase { | |
| 66 | - | |
| 67 | - /** | |
| 68 | - * Deployment to test normal deployment behaviour | |
| 69 | - * | |
| 70 | - */ | |
| 71 | - @Deployment | |
| 72 | - public static JavaArchive createDeployment() { | |
| 73 | - return ShrinkWrap | |
| 74 | - .create(JavaArchive.class) | |
| 75 | - .addClass(Tests.class) | |
| 76 | - .addPackages(true, "br") | |
| 77 | - .addAsResource( | |
| 78 | - new FileAsset(new File( | |
| 79 | - "src/test/resources/beans.xml")), | |
| 80 | - "beans.xml") | |
| 81 | - .addAsManifestResource( | |
| 82 | - new File( | |
| 83 | - "src/main/resources/META-INF/services/javax.enterprise.inject.spi.Extension"), | |
| 84 | - "services/javax.enterprise.inject.spi.Extension") | |
| 85 | - .addPackages(false, | |
| 86 | - ManagementBootstrapTestCase.class.getPackage()) | |
| 87 | - .addClasses(DummyManagementExtension.class, | |
| 88 | - DummyManagedClass.class, ManagedClassStore.class); | |
| 89 | - } | |
| 90 | - | |
| 91 | - /** | |
| 92 | - * Test if a a management extension (a library that implements | |
| 93 | - * {@link ManagementExtension}) is correctly detected. | |
| 94 | - */ | |
| 95 | - @Test | |
| 96 | - public void testManagementExtensionRegistration() { | |
| 97 | - // "store" é application scoped e é usado pelo DummyManagementExtension | |
| 98 | - // para | |
| 99 | - // armazenar todos os beans anotados com @ManagementController. Se o | |
| 100 | - // bootstrap rodou corretamente, | |
| 101 | - // ele chamou DummyManagementExtension.initialize e este store conterá o | |
| 102 | - // bean de teste que anotamos. | |
| 103 | - ManagedClassStore store = Beans.getReference(ManagedClassStore.class); | |
| 104 | - | |
| 105 | - Assert.assertEquals(1, store.getManagedTypes().size()); | |
| 106 | - } | |
| 107 | - | |
| 108 | - /** | |
| 109 | - * Test if a a management extension's shutdown method is correctly called | |
| 110 | - * upon application shutdown. | |
| 111 | - */ | |
| 112 | - @Test | |
| 113 | - public void testManagementExtensionShutdown() { | |
| 114 | - // "store" é application scoped e é usado pelo DummyManagementExtension | |
| 115 | - // para | |
| 116 | - // armazenar todos os beans anotados com @ManagementController. Se o | |
| 117 | - // bootstrap rodou corretamente, | |
| 118 | - // ele chamou DummyManagementExtension.initialize e este store conterá o | |
| 119 | - // bean de teste que anotamos. | |
| 120 | - // Nós então disparamos o evento de shutdown onde ele deverá limpar o | |
| 121 | - // store. | |
| 122 | - ManagedClassStore store = Beans.getReference(ManagedClassStore.class); | |
| 123 | - | |
| 124 | - // Detecta se a classe anotada foi detectada | |
| 125 | - List<ManagedType> managedTypes = store.getManagedTypes(); | |
| 126 | - Assert.assertEquals(1, managedTypes.size()); | |
| 127 | - | |
| 128 | - Beans.getBeanManager().fireEvent(new BeforeShutdown() { | |
| 129 | - }); | |
| 130 | - | |
| 131 | - // Após o "undeploy", o ciclo de vida precisa ter removido a classe | |
| 132 | - // gerenciada da lista. | |
| 133 | - Assert.assertEquals(0, managedTypes.size()); | |
| 134 | - } | |
| 135 | - | |
| 136 | -} |
impl/core/src/test/java/management/ManagementTestCase.java
| ... | ... | @@ -1,195 +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 management; | |
| 38 | - | |
| 39 | -import java.io.File; | |
| 40 | - | |
| 41 | -import junit.framework.Assert; | |
| 42 | -import management.testclasses.DummyManagedClass; | |
| 43 | -import management.testclasses.DummyManagementExtension; | |
| 44 | -import management.testclasses.ManagedClassStore; | |
| 45 | -import management.testclasses.RequestScopeBeanClient; | |
| 46 | -import management.testclasses.RequestScopedClass; | |
| 47 | - | |
| 48 | -import org.jboss.arquillian.container.test.api.Deployment; | |
| 49 | -import org.jboss.arquillian.junit.Arquillian; | |
| 50 | -import org.jboss.shrinkwrap.api.ShrinkWrap; | |
| 51 | -import org.jboss.shrinkwrap.api.asset.FileAsset; | |
| 52 | -import org.jboss.shrinkwrap.api.spec.JavaArchive; | |
| 53 | -import org.junit.Test; | |
| 54 | -import org.junit.runner.RunWith; | |
| 55 | - | |
| 56 | -import test.Tests; | |
| 57 | -import br.gov.frameworkdemoiselle.DemoiselleException; | |
| 58 | -import br.gov.frameworkdemoiselle.util.Beans; | |
| 59 | - | |
| 60 | -/** | |
| 61 | - * Test case that simulates a management extension and tests if properties and operations on a managed class can be | |
| 62 | - * easily accessed and invoked. | |
| 63 | - * | |
| 64 | - * @author serpro | |
| 65 | - */ | |
| 66 | -@RunWith(Arquillian.class) | |
| 67 | -public class ManagementTestCase { | |
| 68 | - | |
| 69 | - @Deployment | |
| 70 | - public static JavaArchive createMultithreadedDeployment() { | |
| 71 | - return ShrinkWrap | |
| 72 | - .create(JavaArchive.class) | |
| 73 | - .addClass(Tests.class) | |
| 74 | - .addPackages(true, "br") | |
| 75 | - .addAsResource(new FileAsset(new File("src/test/resources/beans.xml")), "beans.xml") | |
| 76 | - .addAsManifestResource( | |
| 77 | - new File("src/main/resources/META-INF/services/javax.enterprise.inject.spi.Extension"), | |
| 78 | - "services/javax.enterprise.inject.spi.Extension") | |
| 79 | - .addPackages(false, ManagementTestCase.class.getPackage()) | |
| 80 | - .addClasses(DummyManagementExtension.class, DummyManagedClass.class, ManagedClassStore.class, | |
| 81 | - RequestScopeBeanClient.class, RequestScopedClass.class); | |
| 82 | - } | |
| 83 | - | |
| 84 | - @Test | |
| 85 | - public void testReadProperty() { | |
| 86 | - DummyManagedClass managedClass = Beans.getReference(DummyManagedClass.class); | |
| 87 | - managedClass.setName("Test Name"); | |
| 88 | - | |
| 89 | - // store é nossa extensão de gerenciamento falsa, então estamos testando um "cliente" acessando | |
| 90 | - // nosso tipo gerenciado DummyManagedClass remotamente. | |
| 91 | - ManagedClassStore store = Beans.getReference(ManagedClassStore.class); | |
| 92 | - Object name = store.getProperty(DummyManagedClass.class, "name"); | |
| 93 | - Assert.assertEquals("Test Name", name); | |
| 94 | - } | |
| 95 | - | |
| 96 | - @Test | |
| 97 | - public void testWriteProperty() { | |
| 98 | - // store é nossa extensão de gerenciamento falsa, então estamos testando um "cliente" definindo | |
| 99 | - // um novo valor em uma propriedade de nosso tipo gerenciado DummyManagedClass remotamente. | |
| 100 | - ManagedClassStore store = Beans.getReference(ManagedClassStore.class); | |
| 101 | - store.setProperty(DummyManagedClass.class, "name", "Test Name"); | |
| 102 | - | |
| 103 | - DummyManagedClass managedClass = Beans.getReference(DummyManagedClass.class); | |
| 104 | - Assert.assertEquals("Test Name", managedClass.getName()); | |
| 105 | - } | |
| 106 | - | |
| 107 | - @Test | |
| 108 | - public void testReadAWriteOnly() { | |
| 109 | - | |
| 110 | - ManagedClassStore store = Beans.getReference(ManagedClassStore.class); | |
| 111 | - | |
| 112 | - try { | |
| 113 | - store.getProperty(DummyManagedClass.class, "writeOnlyProperty"); | |
| 114 | - Assert.fail(); | |
| 115 | - } catch (DemoiselleException de) { | |
| 116 | - // SUCCESS | |
| 117 | - } | |
| 118 | - | |
| 119 | - } | |
| 120 | - | |
| 121 | - @Test | |
| 122 | - public void testWriteAReadOnly() { | |
| 123 | - | |
| 124 | - ManagedClassStore store = Beans.getReference(ManagedClassStore.class); | |
| 125 | - | |
| 126 | - try { | |
| 127 | - store.setProperty(DummyManagedClass.class, "readOnlyProperty", "New Value"); | |
| 128 | - Assert.fail(); | |
| 129 | - } catch (DemoiselleException de) { | |
| 130 | - // SUCCESS | |
| 131 | - } | |
| 132 | - | |
| 133 | - } | |
| 134 | - | |
| 135 | - @Test | |
| 136 | - public void testInvokeOperation() { | |
| 137 | - | |
| 138 | - ManagedClassStore store = Beans.getReference(ManagedClassStore.class); | |
| 139 | - | |
| 140 | - try { | |
| 141 | - store.setProperty(DummyManagedClass.class, "firstFactor", new Integer(10)); | |
| 142 | - store.setProperty(DummyManagedClass.class, "secondFactor", new Integer(15)); | |
| 143 | - Integer response = (Integer) store.invoke(DummyManagedClass.class, "sumFactors"); | |
| 144 | - Assert.assertEquals(new Integer(25), response); | |
| 145 | - } catch (DemoiselleException de) { | |
| 146 | - Assert.fail(de.getMessage()); | |
| 147 | - } | |
| 148 | - | |
| 149 | - } | |
| 150 | - | |
| 151 | - @Test | |
| 152 | - public void testInvokeNonAnnotatedOperation() { | |
| 153 | - | |
| 154 | - ManagedClassStore store = Beans.getReference(ManagedClassStore.class); | |
| 155 | - | |
| 156 | - try { | |
| 157 | - // O método "nonOperationAnnotatedMethod" existe na classe DummyManagedClass, mas não está anotado como | |
| 158 | - // "@ManagedOperation", então | |
| 159 | - // ela não pode ser exposta para extensões. | |
| 160 | - store.invoke(DummyManagedClass.class, "nonOperationAnnotatedMethod"); | |
| 161 | - Assert.fail(); | |
| 162 | - } catch (DemoiselleException de) { | |
| 163 | - // SUCCESS | |
| 164 | - } | |
| 165 | - | |
| 166 | - } | |
| 167 | - | |
| 168 | - @Test | |
| 169 | - public void testAccessLevelControl() { | |
| 170 | - // tentamos escrever em uma propriedade que, apesar de ter método setter, está marcada como read-only. | |
| 171 | - ManagedClassStore store = Beans.getReference(ManagedClassStore.class); | |
| 172 | - | |
| 173 | - try { | |
| 174 | - store.setProperty(DummyManagedClass.class, "readOnlyPropertyWithSetMethod", "A Value"); | |
| 175 | - Assert.fail(); | |
| 176 | - } catch (DemoiselleException de) { | |
| 177 | - System.out.println(de.getMessage()); | |
| 178 | - // success | |
| 179 | - } | |
| 180 | - } | |
| 181 | - | |
| 182 | - @Test | |
| 183 | - public void testRequestScopedOperation() { | |
| 184 | - ManagedClassStore store = Beans.getReference(ManagedClassStore.class); | |
| 185 | - | |
| 186 | - // Esta operação faz multiplos acessos a um bean RequestScoped. Durante a operação todos os acessos devem | |
| 187 | - // operar sob a mesma instância, mas uma segunda invocação deve operar em uma instância nova | |
| 188 | - Object info = store.invoke(DummyManagedClass.class, "requestScopedOperation"); | |
| 189 | - Assert.assertEquals("-OPERATION ONE CALLED--OPERATION TWO CALLED-", info); | |
| 190 | - | |
| 191 | - // Segunda invocação para testar se uma nova instância é criada, já que esse é um novo request. | |
| 192 | - info = store.invoke(DummyManagedClass.class, "requestScopedOperation"); | |
| 193 | - Assert.assertEquals("-OPERATION ONE CALLED--OPERATION TWO CALLED-", info); | |
| 194 | - } | |
| 195 | -} |
impl/core/src/test/java/management/NotificationTestCase.java
| ... | ... | @@ -1,136 +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 management; | |
| 38 | - | |
| 39 | -import java.io.File; | |
| 40 | - | |
| 41 | -import javax.inject.Inject; | |
| 42 | - | |
| 43 | -import junit.framework.Assert; | |
| 44 | -import management.testclasses.DummyManagedClass; | |
| 45 | -import management.testclasses.DummyNotificationListener; | |
| 46 | - | |
| 47 | -import org.jboss.arquillian.container.test.api.Deployment; | |
| 48 | -import org.jboss.arquillian.junit.Arquillian; | |
| 49 | -import org.jboss.shrinkwrap.api.ShrinkWrap; | |
| 50 | -import org.jboss.shrinkwrap.api.asset.FileAsset; | |
| 51 | -import org.jboss.shrinkwrap.api.spec.JavaArchive; | |
| 52 | -import org.junit.Test; | |
| 53 | -import org.junit.runner.RunWith; | |
| 54 | - | |
| 55 | -import test.Tests; | |
| 56 | -import br.gov.frameworkdemoiselle.annotation.Name; | |
| 57 | -import br.gov.frameworkdemoiselle.internal.management.ManagedType; | |
| 58 | -import br.gov.frameworkdemoiselle.internal.management.Management; | |
| 59 | -import br.gov.frameworkdemoiselle.management.AttributeChangeNotification; | |
| 60 | -import br.gov.frameworkdemoiselle.management.GenericNotification; | |
| 61 | -import br.gov.frameworkdemoiselle.management.NotificationManager; | |
| 62 | -import br.gov.frameworkdemoiselle.util.Beans; | |
| 63 | -import br.gov.frameworkdemoiselle.util.ResourceBundle; | |
| 64 | - | |
| 65 | -/** | |
| 66 | - * Test the {@link NotificationManager} with a dummy extension to check if notifications are correctly propagated | |
| 67 | - * | |
| 68 | - * @author serpro | |
| 69 | - */ | |
| 70 | -@RunWith(Arquillian.class) | |
| 71 | -public class NotificationTestCase { | |
| 72 | - | |
| 73 | - @Inject | |
| 74 | - private NotificationManager manager; | |
| 75 | - | |
| 76 | - @Inject | |
| 77 | - @Name("demoiselle-core-bundle") | |
| 78 | - private ResourceBundle bundle; | |
| 79 | - | |
| 80 | - @Deployment | |
| 81 | - public static JavaArchive createDeployment() { | |
| 82 | - return ShrinkWrap | |
| 83 | - .create(JavaArchive.class) | |
| 84 | - .addClass(Tests.class) | |
| 85 | - .addPackages(true, "br") | |
| 86 | - .addAsResource(new FileAsset(new File("src/test/resources/beans.xml")), "beans.xml") | |
| 87 | - .addAsManifestResource( | |
| 88 | - new File("src/main/resources/META-INF/services/javax.enterprise.inject.spi.Extension"), | |
| 89 | - "services/javax.enterprise.inject.spi.Extension") | |
| 90 | - .addPackages(false, NotificationTestCase.class.getPackage()) | |
| 91 | - .addClasses(DummyNotificationListener.class, DummyManagedClass.class); | |
| 92 | - } | |
| 93 | - | |
| 94 | - /** | |
| 95 | - * Test sending a normal notification | |
| 96 | - */ | |
| 97 | - @Test | |
| 98 | - public void testSendGenericNotification() { | |
| 99 | - manager.sendNotification(new GenericNotification("Test Message")); | |
| 100 | - DummyNotificationListener listener = Beans.getReference(DummyNotificationListener.class); | |
| 101 | - Assert.assertEquals("Test Message", listener.getMessage()); | |
| 102 | - } | |
| 103 | - | |
| 104 | - /** | |
| 105 | - * Test sending a notification of change in attribute | |
| 106 | - */ | |
| 107 | - @Test | |
| 108 | - public void testSendAttributeChangeNotification() { | |
| 109 | - manager.sendNotification(new AttributeChangeNotification("Test Message", "attribute", String.class, "old", | |
| 110 | - "new")); | |
| 111 | - DummyNotificationListener listener = Beans.getReference(DummyNotificationListener.class); | |
| 112 | - Assert.assertEquals("Test Message - attribute", listener.getMessage()); | |
| 113 | - } | |
| 114 | - | |
| 115 | - /** | |
| 116 | - * Test if notifications are automatically sent when an attribute from a managed class change values | |
| 117 | - */ | |
| 118 | - @Test | |
| 119 | - public void testNotifyChangeManagedClass() { | |
| 120 | - Management manager = Beans.getReference(Management.class); | |
| 121 | - | |
| 122 | - for (ManagedType type : manager.getManagedTypes()) { | |
| 123 | - if (type.getType().equals(DummyManagedClass.class)) { | |
| 124 | - manager.setProperty(type, "id", new Integer(10)); | |
| 125 | - break; | |
| 126 | - } | |
| 127 | - } | |
| 128 | - | |
| 129 | - DummyNotificationListener listener = Beans.getReference(DummyNotificationListener.class); | |
| 130 | - Assert.assertEquals( | |
| 131 | - bundle.getString("management-notification-attribute-changed", "id", | |
| 132 | - DummyManagedClass.class.getCanonicalName()) | |
| 133 | - + " - id", listener.getMessage()); | |
| 134 | - } | |
| 135 | - | |
| 136 | -} |
impl/core/src/test/java/management/ValidationTestCase.java
| ... | ... | @@ -1,92 +0,0 @@ |
| 1 | -package management; | |
| 2 | - | |
| 3 | -import java.io.File; | |
| 4 | - | |
| 5 | -import management.testclasses.DummyManagedClass; | |
| 6 | -import management.testclasses.DummyManagementExtension; | |
| 7 | -import management.testclasses.DummyValidator; | |
| 8 | -import management.testclasses.DummyValidatorAnnotation; | |
| 9 | -import management.testclasses.ManagedClassStore; | |
| 10 | - | |
| 11 | -import org.jboss.arquillian.container.test.api.Deployment; | |
| 12 | -import org.jboss.arquillian.junit.Arquillian; | |
| 13 | -import org.jboss.shrinkwrap.api.ShrinkWrap; | |
| 14 | -import org.jboss.shrinkwrap.api.asset.FileAsset; | |
| 15 | -import org.jboss.shrinkwrap.api.spec.JavaArchive; | |
| 16 | -import org.junit.Assert; | |
| 17 | -import org.junit.Test; | |
| 18 | -import org.junit.runner.RunWith; | |
| 19 | - | |
| 20 | -import test.Tests; | |
| 21 | -import br.gov.frameworkdemoiselle.DemoiselleException; | |
| 22 | -import br.gov.frameworkdemoiselle.util.Beans; | |
| 23 | - | |
| 24 | -@RunWith(Arquillian.class) | |
| 25 | -public class ValidationTestCase { | |
| 26 | - | |
| 27 | - @Deployment | |
| 28 | - public static JavaArchive createDeployment() { | |
| 29 | - return ShrinkWrap | |
| 30 | - .create(JavaArchive.class) | |
| 31 | - .addClass(Tests.class) | |
| 32 | - .addPackages(true, "br") | |
| 33 | - .addAsResource(new FileAsset(new File("src/test/resources/beans.xml")), "beans.xml") | |
| 34 | - .addAsManifestResource( | |
| 35 | - new File("src/main/resources/META-INF/services/javax.enterprise.inject.spi.Extension"), | |
| 36 | - "services/javax.enterprise.inject.spi.Extension") | |
| 37 | - .addPackages(false, NotificationTestCase.class.getPackage()) | |
| 38 | - .addClasses(DummyManagementExtension.class, ManagedClassStore.class, DummyManagedClass.class, | |
| 39 | - DummyValidator.class, DummyValidatorAnnotation.class); | |
| 40 | - } | |
| 41 | - | |
| 42 | - /** | |
| 43 | - * Test if a management controller accepts a valid value annotated with a core validation (from javax.validation) | |
| 44 | - * when a property is being set by a management client | |
| 45 | - */ | |
| 46 | - @Test | |
| 47 | - public void testSetValidValue() { | |
| 48 | - // Testa se é possível definir um valor válido para uma propriedade. | |
| 49 | - ManagedClassStore store = Beans.getReference(ManagedClassStore.class); | |
| 50 | - store.setProperty(DummyManagedClass.class, "id", new Integer(1)); | |
| 51 | - Assert.assertEquals(new Integer(1), store.getProperty(DummyManagedClass.class, "id")); | |
| 52 | - } | |
| 53 | - | |
| 54 | - /** | |
| 55 | - * Test if a management controller refuses a valid value annotated with a core validation (from javax.validation) | |
| 56 | - * when a property is being set by a management client | |
| 57 | - */ | |
| 58 | - @Test | |
| 59 | - public void testSetInvalidValue() { | |
| 60 | - // Testa se é possível definir um valor válido para uma propriedade. | |
| 61 | - try { | |
| 62 | - ManagedClassStore store = Beans.getReference(ManagedClassStore.class); | |
| 63 | - store.setProperty(DummyManagedClass.class, "id", (Integer) null); | |
| 64 | - | |
| 65 | - Assert.fail(); | |
| 66 | - } catch (DemoiselleException de) { | |
| 67 | - // Classes de gerenciamento disparam Demoiselle Exception quando uma validação falha | |
| 68 | - } | |
| 69 | - } | |
| 70 | - | |
| 71 | - /** | |
| 72 | - * Tests if custom validators (outside the javax.validation package) run as normal | |
| 73 | - */ | |
| 74 | - @Test | |
| 75 | - public void testCustomValidation() { | |
| 76 | - | |
| 77 | - try { | |
| 78 | - ManagedClassStore store = Beans.getReference(ManagedClassStore.class); | |
| 79 | - | |
| 80 | - // Atributo "gender" deve aceitar apenas "M" ou "F", tanto maiúsculo quanto minúsculo. A anotação | |
| 81 | - // customizada DummyValidatorAnnotation é uma simples validação que testa se uma string passada está | |
| 82 | - // na lista de strings aceitas. | |
| 83 | - store.setProperty(DummyManagedClass.class, "gender", "J"); | |
| 84 | - | |
| 85 | - Assert.fail(); | |
| 86 | - } catch (DemoiselleException e) { | |
| 87 | - Assert.assertTrue(e.getMessage().contains("Test Message")); | |
| 88 | - } | |
| 89 | - | |
| 90 | - } | |
| 91 | - | |
| 92 | -} |
impl/core/src/test/java/management/annotation/AnnotationTest.java
0 → 100644
| ... | ... | @@ -0,0 +1,83 @@ |
| 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 management.annotation; | |
| 38 | + | |
| 39 | +import management.testclasses.DummyManagedClassPropertyError; | |
| 40 | +import management.testclasses.DummyManagementExtension; | |
| 41 | +import management.testclasses.ManagedClassStore; | |
| 42 | + | |
| 43 | +import org.jboss.arquillian.container.test.api.Deployer; | |
| 44 | +import org.jboss.arquillian.container.test.api.Deployment; | |
| 45 | +import org.jboss.arquillian.junit.Arquillian; | |
| 46 | +import org.jboss.arquillian.test.api.ArquillianResource; | |
| 47 | +import org.jboss.shrinkwrap.api.spec.JavaArchive; | |
| 48 | +import org.junit.Assert; | |
| 49 | +import org.junit.Test; | |
| 50 | +import org.junit.runner.RunWith; | |
| 51 | + | |
| 52 | +import test.Tests; | |
| 53 | + | |
| 54 | +@RunWith(Arquillian.class) | |
| 55 | +public class AnnotationTest { | |
| 56 | + | |
| 57 | + /** | |
| 58 | + * Deployment containing a malformed managed class. Tests using this deployment will check if deployment fails (it | |
| 59 | + * has to). | |
| 60 | + */ | |
| 61 | + @Deployment(name = "wrong_annotation", managed = false) | |
| 62 | + public static JavaArchive createWrongAnnotationDeployment() { | |
| 63 | + | |
| 64 | + return Tests.createDeployment(AnnotationTest.class) | |
| 65 | + .addClasses(DummyManagementExtension.class, ManagedClassStore.class,DummyManagedClassPropertyError.class); | |
| 66 | + } | |
| 67 | + | |
| 68 | + @Test | |
| 69 | + public void wrongAnnotation(@ArquillianResource Deployer deployer) { | |
| 70 | + | |
| 71 | + try { | |
| 72 | + deployer.deploy("wrong_annotation"); | |
| 73 | + | |
| 74 | + // O processo de deploy precisa falhar, pois temos uma classe anotada com falhas. | |
| 75 | + Assert.fail(); | |
| 76 | + } catch (Exception e) { | |
| 77 | + //SUCCESS | |
| 78 | + } finally { | |
| 79 | + deployer.undeploy("wrong_annotation"); | |
| 80 | + } | |
| 81 | + } | |
| 82 | + | |
| 83 | +} | ... | ... |
impl/core/src/test/java/management/basic/ManagementTest.java
0 → 100644
| ... | ... | @@ -0,0 +1,183 @@ |
| 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 management.basic; | |
| 38 | + | |
| 39 | +import junit.framework.Assert; | |
| 40 | +import management.testclasses.DummyManagedClass; | |
| 41 | +import management.testclasses.DummyManagementExtension; | |
| 42 | +import management.testclasses.ManagedClassStore; | |
| 43 | +import management.testclasses.RequestScopeBeanClient; | |
| 44 | +import management.testclasses.RequestScopedClass; | |
| 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.Test; | |
| 50 | +import org.junit.runner.RunWith; | |
| 51 | + | |
| 52 | +import test.Tests; | |
| 53 | +import br.gov.frameworkdemoiselle.DemoiselleException; | |
| 54 | +import br.gov.frameworkdemoiselle.util.Beans; | |
| 55 | + | |
| 56 | +/** | |
| 57 | + * Test case that simulates a management extension and tests if properties and operations on a managed class can be | |
| 58 | + * easily accessed and invoked. | |
| 59 | + * | |
| 60 | + * @author serpro | |
| 61 | + */ | |
| 62 | +@RunWith(Arquillian.class) | |
| 63 | +public class ManagementTest { | |
| 64 | + | |
| 65 | + @Deployment | |
| 66 | + public static JavaArchive createMultithreadedDeployment() { | |
| 67 | + | |
| 68 | + return Tests.createDeployment(ManagementTest.class) | |
| 69 | + .addClasses(DummyManagementExtension.class, DummyManagedClass.class, ManagedClassStore.class,RequestScopeBeanClient.class, RequestScopedClass.class); | |
| 70 | + } | |
| 71 | + | |
| 72 | + @Test | |
| 73 | + public void readProperty() { | |
| 74 | + DummyManagedClass managedClass = Beans.getReference(DummyManagedClass.class); | |
| 75 | + managedClass.setName("Test Name"); | |
| 76 | + | |
| 77 | + // store é nossa extensão de gerenciamento falsa, então estamos testando um "cliente" acessando | |
| 78 | + // nosso tipo gerenciado DummyManagedClass remotamente. | |
| 79 | + ManagedClassStore store = Beans.getReference(ManagedClassStore.class); | |
| 80 | + Object name = store.getProperty(DummyManagedClass.class, "name"); | |
| 81 | + Assert.assertEquals("Test Name", name); | |
| 82 | + } | |
| 83 | + | |
| 84 | + @Test | |
| 85 | + public void writeProperty() { | |
| 86 | + // store é nossa extensão de gerenciamento falsa, então estamos testando um "cliente" definindo | |
| 87 | + // um novo valor em uma propriedade de nosso tipo gerenciado DummyManagedClass remotamente. | |
| 88 | + ManagedClassStore store = Beans.getReference(ManagedClassStore.class); | |
| 89 | + store.setProperty(DummyManagedClass.class, "name", "Test Name"); | |
| 90 | + | |
| 91 | + DummyManagedClass managedClass = Beans.getReference(DummyManagedClass.class); | |
| 92 | + Assert.assertEquals("Test Name", managedClass.getName()); | |
| 93 | + } | |
| 94 | + | |
| 95 | + @Test | |
| 96 | + public void readAWriteOnly() { | |
| 97 | + | |
| 98 | + ManagedClassStore store = Beans.getReference(ManagedClassStore.class); | |
| 99 | + | |
| 100 | + try { | |
| 101 | + store.getProperty(DummyManagedClass.class, "writeOnlyProperty"); | |
| 102 | + Assert.fail(); | |
| 103 | + } catch (DemoiselleException de) { | |
| 104 | + // SUCCESS | |
| 105 | + } | |
| 106 | + | |
| 107 | + } | |
| 108 | + | |
| 109 | + @Test | |
| 110 | + public void writeAReadOnly() { | |
| 111 | + | |
| 112 | + ManagedClassStore store = Beans.getReference(ManagedClassStore.class); | |
| 113 | + | |
| 114 | + try { | |
| 115 | + store.setProperty(DummyManagedClass.class, "readOnlyProperty", "New Value"); | |
| 116 | + Assert.fail(); | |
| 117 | + } catch (DemoiselleException de) { | |
| 118 | + // SUCCESS | |
| 119 | + } | |
| 120 | + | |
| 121 | + } | |
| 122 | + | |
| 123 | + @Test | |
| 124 | + public void invokeOperation() { | |
| 125 | + | |
| 126 | + ManagedClassStore store = Beans.getReference(ManagedClassStore.class); | |
| 127 | + | |
| 128 | + try { | |
| 129 | + store.setProperty(DummyManagedClass.class, "firstFactor", new Integer(10)); | |
| 130 | + store.setProperty(DummyManagedClass.class, "secondFactor", new Integer(15)); | |
| 131 | + Integer response = (Integer) store.invoke(DummyManagedClass.class, "sumFactors"); | |
| 132 | + Assert.assertEquals(new Integer(25), response); | |
| 133 | + } catch (DemoiselleException de) { | |
| 134 | + Assert.fail(de.getMessage()); | |
| 135 | + } | |
| 136 | + | |
| 137 | + } | |
| 138 | + | |
| 139 | + @Test | |
| 140 | + public void invokeNonAnnotatedOperation() { | |
| 141 | + | |
| 142 | + ManagedClassStore store = Beans.getReference(ManagedClassStore.class); | |
| 143 | + | |
| 144 | + try { | |
| 145 | + // O método "nonOperationAnnotatedMethod" existe na classe DummyManagedClass, mas não está anotado como | |
| 146 | + // "@ManagedOperation", então | |
| 147 | + // ela não pode ser exposta para extensões. | |
| 148 | + store.invoke(DummyManagedClass.class, "nonOperationAnnotatedMethod"); | |
| 149 | + Assert.fail(); | |
| 150 | + } catch (DemoiselleException de) { | |
| 151 | + // SUCCESS | |
| 152 | + } | |
| 153 | + | |
| 154 | + } | |
| 155 | + | |
| 156 | + @Test | |
| 157 | + public void accessLevelControl() { | |
| 158 | + // tentamos escrever em uma propriedade que, apesar de ter método setter, está marcada como read-only. | |
| 159 | + ManagedClassStore store = Beans.getReference(ManagedClassStore.class); | |
| 160 | + | |
| 161 | + try { | |
| 162 | + store.setProperty(DummyManagedClass.class, "readOnlyPropertyWithSetMethod", "A Value"); | |
| 163 | + Assert.fail(); | |
| 164 | + } catch (DemoiselleException de) { | |
| 165 | + System.out.println(de.getMessage()); | |
| 166 | + // success | |
| 167 | + } | |
| 168 | + } | |
| 169 | + | |
| 170 | + @Test | |
| 171 | + public void requestScopedOperation() { | |
| 172 | + ManagedClassStore store = Beans.getReference(ManagedClassStore.class); | |
| 173 | + | |
| 174 | + // Esta operação faz multiplos acessos a um bean RequestScoped. Durante a operação todos os acessos devem | |
| 175 | + // operar sob a mesma instância, mas uma segunda invocação deve operar em uma instância nova | |
| 176 | + Object info = store.invoke(DummyManagedClass.class, "requestScopedOperation"); | |
| 177 | + Assert.assertEquals("-OPERATION ONE CALLED--OPERATION TWO CALLED-", info); | |
| 178 | + | |
| 179 | + // Segunda invocação para testar se uma nova instância é criada, já que esse é um novo request. | |
| 180 | + info = store.invoke(DummyManagedClass.class, "requestScopedOperation"); | |
| 181 | + Assert.assertEquals("-OPERATION ONE CALLED--OPERATION TWO CALLED-", info); | |
| 182 | + } | |
| 183 | +} | ... | ... |
impl/core/src/test/java/management/bootstrap/ManagementBootstrapTest.java
0 → 100644
| ... | ... | @@ -0,0 +1,117 @@ |
| 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 management.bootstrap; | |
| 38 | + | |
| 39 | +import java.util.List; | |
| 40 | + | |
| 41 | +import management.testclasses.DummyManagedClass; | |
| 42 | +import management.testclasses.DummyManagementExtension; | |
| 43 | +import management.testclasses.ManagedClassStore; | |
| 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.Assert; | |
| 49 | +import org.junit.Test; | |
| 50 | +import org.junit.runner.RunWith; | |
| 51 | + | |
| 52 | +import test.Tests; | |
| 53 | +import br.gov.frameworkdemoiselle.internal.management.ManagedType; | |
| 54 | +import br.gov.frameworkdemoiselle.lifecycle.AfterShutdownProccess; | |
| 55 | +import br.gov.frameworkdemoiselle.lifecycle.ManagementExtension; | |
| 56 | +import br.gov.frameworkdemoiselle.util.Beans; | |
| 57 | + | |
| 58 | +@RunWith(Arquillian.class) | |
| 59 | +public class ManagementBootstrapTest { | |
| 60 | + | |
| 61 | + /** | |
| 62 | + * Deployment to test normal deployment behaviour | |
| 63 | + * | |
| 64 | + */ | |
| 65 | + @Deployment | |
| 66 | + public static JavaArchive createDeployment() { | |
| 67 | + return Tests.createDeployment(ManagementBootstrapTest.class) | |
| 68 | + .addClasses(DummyManagementExtension.class, | |
| 69 | + DummyManagedClass.class, ManagedClassStore.class); | |
| 70 | + } | |
| 71 | + | |
| 72 | + /** | |
| 73 | + * Test if a a management extension (a library that implements | |
| 74 | + * {@link ManagementExtension}) is correctly detected. | |
| 75 | + */ | |
| 76 | + @Test | |
| 77 | + public void managementExtensionRegistration() { | |
| 78 | + // "store" é application scoped e é usado pelo DummyManagementExtension | |
| 79 | + // para | |
| 80 | + // armazenar todos os beans anotados com @ManagementController. Se o | |
| 81 | + // bootstrap rodou corretamente, | |
| 82 | + // ele chamou DummyManagementExtension.initialize e este store conterá o | |
| 83 | + // bean de teste que anotamos. | |
| 84 | + ManagedClassStore store = Beans.getReference(ManagedClassStore.class); | |
| 85 | + | |
| 86 | + Assert.assertEquals(1, store.getManagedTypes().size()); | |
| 87 | + } | |
| 88 | + | |
| 89 | + /** | |
| 90 | + * Test if a a management extension's shutdown method is correctly called | |
| 91 | + * upon application shutdown. | |
| 92 | + */ | |
| 93 | + @Test | |
| 94 | + public void managementExtensionShutdown() { | |
| 95 | + // "store" é application scoped e é usado pelo DummyManagementExtension | |
| 96 | + // para | |
| 97 | + // armazenar todos os beans anotados com @ManagementController. Se o | |
| 98 | + // bootstrap rodou corretamente, | |
| 99 | + // ele chamou DummyManagementExtension.initialize e este store conterá o | |
| 100 | + // bean de teste que anotamos. | |
| 101 | + // Nós então disparamos o evento de shutdown onde ele deverá limpar o | |
| 102 | + // store. | |
| 103 | + ManagedClassStore store = Beans.getReference(ManagedClassStore.class); | |
| 104 | + | |
| 105 | + // Detecta se a classe anotada foi detectada | |
| 106 | + List<ManagedType> managedTypes = store.getManagedTypes(); | |
| 107 | + Assert.assertEquals(1, managedTypes.size()); | |
| 108 | + | |
| 109 | + Beans.getBeanManager().fireEvent(new AfterShutdownProccess() { | |
| 110 | + }); | |
| 111 | + | |
| 112 | + // Após o "undeploy", o ciclo de vida precisa ter removido a classe | |
| 113 | + // gerenciada da lista. | |
| 114 | + Assert.assertEquals(0, managedTypes.size()); | |
| 115 | + } | |
| 116 | + | |
| 117 | +} | ... | ... |
impl/core/src/test/java/management/notification/NotificationTest.java
0 → 100644
| ... | ... | @@ -0,0 +1,124 @@ |
| 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 management.notification; | |
| 38 | + | |
| 39 | +import javax.inject.Inject; | |
| 40 | + | |
| 41 | +import junit.framework.Assert; | |
| 42 | +import management.testclasses.DummyManagedClass; | |
| 43 | +import management.testclasses.DummyNotificationListener; | |
| 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.annotation.Name; | |
| 53 | +import br.gov.frameworkdemoiselle.internal.management.ManagedType; | |
| 54 | +import br.gov.frameworkdemoiselle.internal.management.Management; | |
| 55 | +import br.gov.frameworkdemoiselle.management.AttributeChangeNotification; | |
| 56 | +import br.gov.frameworkdemoiselle.management.GenericNotification; | |
| 57 | +import br.gov.frameworkdemoiselle.management.NotificationManager; | |
| 58 | +import br.gov.frameworkdemoiselle.util.Beans; | |
| 59 | +import br.gov.frameworkdemoiselle.util.ResourceBundle; | |
| 60 | + | |
| 61 | +/** | |
| 62 | + * Test the {@link NotificationManager} with a dummy extension to check if notifications are correctly propagated | |
| 63 | + * | |
| 64 | + * @author serpro | |
| 65 | + */ | |
| 66 | +@RunWith(Arquillian.class) | |
| 67 | +public class NotificationTest { | |
| 68 | + | |
| 69 | + @Inject | |
| 70 | + private NotificationManager manager; | |
| 71 | + | |
| 72 | + @Inject | |
| 73 | + @Name("demoiselle-core-bundle") | |
| 74 | + private ResourceBundle bundle; | |
| 75 | + | |
| 76 | + @Deployment | |
| 77 | + public static JavaArchive createDeployment() { | |
| 78 | + return Tests.createDeployment(NotificationTest.class) | |
| 79 | + .addClasses(DummyNotificationListener.class, DummyManagedClass.class); | |
| 80 | + } | |
| 81 | + | |
| 82 | + /** | |
| 83 | + * Test sending a normal notification | |
| 84 | + */ | |
| 85 | + @Test | |
| 86 | + public void sendGenericNotification() { | |
| 87 | + manager.sendNotification(new GenericNotification("Test Message")); | |
| 88 | + DummyNotificationListener listener = Beans.getReference(DummyNotificationListener.class); | |
| 89 | + Assert.assertEquals("Test Message", listener.getMessage()); | |
| 90 | + } | |
| 91 | + | |
| 92 | + /** | |
| 93 | + * Test sending a notification of change in attribute | |
| 94 | + */ | |
| 95 | + @Test | |
| 96 | + public void sendAttributeChangeNotification() { | |
| 97 | + manager.sendNotification(new AttributeChangeNotification("Test Message", "attribute", String.class, "old", | |
| 98 | + "new")); | |
| 99 | + DummyNotificationListener listener = Beans.getReference(DummyNotificationListener.class); | |
| 100 | + Assert.assertEquals("Test Message - attribute", listener.getMessage()); | |
| 101 | + } | |
| 102 | + | |
| 103 | + /** | |
| 104 | + * Test if notifications are automatically sent when an attribute from a managed class change values | |
| 105 | + */ | |
| 106 | + @Test | |
| 107 | + public void notifyChangeManagedClass() { | |
| 108 | + Management manager = Beans.getReference(Management.class); | |
| 109 | + | |
| 110 | + for (ManagedType type : manager.getManagedTypes()) { | |
| 111 | + if (type.getType().equals(DummyManagedClass.class)) { | |
| 112 | + manager.setProperty(type, "id", new Integer(10)); | |
| 113 | + break; | |
| 114 | + } | |
| 115 | + } | |
| 116 | + | |
| 117 | + DummyNotificationListener listener = Beans.getReference(DummyNotificationListener.class); | |
| 118 | + Assert.assertEquals( | |
| 119 | + bundle.getString("management-notification-attribute-changed", "id", | |
| 120 | + DummyManagedClass.class.getCanonicalName()) | |
| 121 | + + " - id", listener.getMessage()); | |
| 122 | + } | |
| 123 | + | |
| 124 | +} | ... | ... |
impl/core/src/test/java/management/validation/ValidationTest.java
0 → 100644
| ... | ... | @@ -0,0 +1,81 @@ |
| 1 | +package management.validation; | |
| 2 | + | |
| 3 | +import management.testclasses.DummyManagedClass; | |
| 4 | +import management.testclasses.DummyManagementExtension; | |
| 5 | +import management.testclasses.DummyValidator; | |
| 6 | +import management.testclasses.DummyValidatorAnnotation; | |
| 7 | +import management.testclasses.ManagedClassStore; | |
| 8 | + | |
| 9 | +import org.jboss.arquillian.container.test.api.Deployment; | |
| 10 | +import org.jboss.arquillian.junit.Arquillian; | |
| 11 | +import org.jboss.shrinkwrap.api.spec.JavaArchive; | |
| 12 | +import org.junit.Assert; | |
| 13 | +import org.junit.Test; | |
| 14 | +import org.junit.runner.RunWith; | |
| 15 | + | |
| 16 | +import test.Tests; | |
| 17 | +import br.gov.frameworkdemoiselle.DemoiselleException; | |
| 18 | +import br.gov.frameworkdemoiselle.util.Beans; | |
| 19 | + | |
| 20 | +@RunWith(Arquillian.class) | |
| 21 | +public class ValidationTest { | |
| 22 | + | |
| 23 | + @Deployment | |
| 24 | + public static JavaArchive createDeployment() { | |
| 25 | + | |
| 26 | + return Tests.createDeployment(ValidationTest.class) | |
| 27 | + .addClasses(DummyManagementExtension.class, ManagedClassStore.class, DummyManagedClass.class,DummyValidator.class, DummyValidatorAnnotation.class); | |
| 28 | + | |
| 29 | + } | |
| 30 | + | |
| 31 | + /** | |
| 32 | + * Test if a management controller accepts a valid value annotated with a core validation (from javax.validation) | |
| 33 | + * when a property is being set by a management client | |
| 34 | + */ | |
| 35 | + @Test | |
| 36 | + public void setValidValue() { | |
| 37 | + // Testa se é possível definir um valor válido para uma propriedade. | |
| 38 | + ManagedClassStore store = Beans.getReference(ManagedClassStore.class); | |
| 39 | + store.setProperty(DummyManagedClass.class, "id", new Integer(1)); | |
| 40 | + Assert.assertEquals(new Integer(1), store.getProperty(DummyManagedClass.class, "id")); | |
| 41 | + } | |
| 42 | + | |
| 43 | + /** | |
| 44 | + * Test if a management controller refuses a valid value annotated with a core validation (from javax.validation) | |
| 45 | + * when a property is being set by a management client | |
| 46 | + */ | |
| 47 | + @Test | |
| 48 | + public void setInvalidValue() { | |
| 49 | + // Testa se é possível definir um valor válido para uma propriedade. | |
| 50 | + try { | |
| 51 | + ManagedClassStore store = Beans.getReference(ManagedClassStore.class); | |
| 52 | + store.setProperty(DummyManagedClass.class, "id", (Integer) null); | |
| 53 | + | |
| 54 | + Assert.fail(); | |
| 55 | + } catch (DemoiselleException de) { | |
| 56 | + // Classes de gerenciamento disparam Demoiselle Exception quando uma validação falha | |
| 57 | + } | |
| 58 | + } | |
| 59 | + | |
| 60 | + /** | |
| 61 | + * Tests if custom validators (outside the javax.validation package) run as normal | |
| 62 | + */ | |
| 63 | + @Test | |
| 64 | + public void customValidation() { | |
| 65 | + | |
| 66 | + try { | |
| 67 | + ManagedClassStore store = Beans.getReference(ManagedClassStore.class); | |
| 68 | + | |
| 69 | + // Atributo "gender" deve aceitar apenas "M" ou "F", tanto maiúsculo quanto minúsculo. A anotação | |
| 70 | + // customizada DummyValidatorAnnotation é uma simples validação que testa se uma string passada está | |
| 71 | + // na lista de strings aceitas. | |
| 72 | + store.setProperty(DummyManagedClass.class, "gender", "J"); | |
| 73 | + | |
| 74 | + Assert.fail(); | |
| 75 | + } catch (DemoiselleException e) { | |
| 76 | + Assert.assertTrue(e.getMessage().contains("Test Message")); | |
| 77 | + } | |
| 78 | + | |
| 79 | + } | |
| 80 | + | |
| 81 | +} | ... | ... |