KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > jboss > test > security > test > DynamicLoginConfigServiceUnitTestCase


1 /*
2 * JBoss, Home of Professional Open Source
3 * Copyright 2005, JBoss Inc., and individual contributors as indicated
4 * by the @authors tag. See the copyright.txt in the distribution for a
5 * full listing of individual contributors.
6 *
7 * This is free software; you can redistribute it and/or modify it
8 * under the terms of the GNU Lesser General Public License as
9 * published by the Free Software Foundation; either version 2.1 of
10 * the License, or (at your option) any later version.
11 *
12 * This software is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Lesser General Public License for more details.
16 *
17 * You should have received a copy of the GNU Lesser General Public
18 * License along with this software; if not, write to the Free
19 * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
20 * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
21 */

22 package org.jboss.test.security.test;
23
24 import java.net.URL JavaDoc;
25
26 import javax.management.Attribute JavaDoc;
27 import javax.management.MBeanServerConnection JavaDoc;
28 import javax.management.ObjectName JavaDoc;
29
30 import junit.framework.Test;
31 import junit.framework.TestSuite;
32   
33 import org.jboss.system.ServiceContext;
34 import org.jboss.test.JBossTestCase;
35 import org.jboss.test.JBossTestSetup;
36 import org.jboss.test.util.ServiceControllerUtil;
37
38 //$Id: DynamicLoginConfigServiceUnitTestCase.java 56277 2006-08-25 19:10:01Z scott.stark@jboss.org $
39

40 /**
41  * Unit tests for the Dynamic Login Config Service
42  * @author <a HREF="mailto:Anil.Saldhana@jboss.org">Anil Saldhana</a>
43  * @since May 12, 2006
44  * @version $Revision: 56277 $
45  */

46 public class DynamicLoginConfigServiceUnitTestCase extends JBossTestCase
47 {
48    private String JavaDoc login_config = "<policy>\n<application-policy name='test-dyn'>"+
49                 "<authentication>"+
50                 "<login-module code='org.jboss.security.auth.spi.UsersRolesLoginModule'" +
51                 " flag = 'required' /> </authentication></application-policy></policy>";
52    
53    private ServiceControllerUtil sutil = null;
54    public DynamicLoginConfigServiceUnitTestCase(String JavaDoc name)
55    {
56       super(name);
57       try
58       {
59          sutil = new ServiceControllerUtil(this.getServer());
60       }
61       catch (Exception JavaDoc e)
62       {
63          fail("Exception thrown in creating util class"+e.getLocalizedMessage());
64       }
65    }
66    
67    /**
68     * JBAS-3210: DynamicLoginConfig service fails absolute login-config.xml url
69     * @throws Exception
70     */

71    public void testAbsoluteLoginConfigURL() throws Exception JavaDoc
72    {
73       MBeanServerConnection JavaDoc server = getServer();
74       ObjectName JavaDoc oname = new ObjectName JavaDoc("jboss:service=TempFileCreator");
75       URL JavaDoc confURL = (URL JavaDoc)server.invoke(oname,"createTempFile",
76             new Object JavaDoc[]{"test-dyn",login_config},
77             new String JavaDoc[] {"java.lang.String", "java.lang.String"});
78       assertNotNull(" config url != null",confURL);
79       ObjectName JavaDoc serviceName = new ObjectName JavaDoc("jboss:service=TestDynamicLoginConfig");
80       if(server.isRegistered(serviceName))
81          server.unregisterMBean(serviceName);
82       prepareTestDynamicLoginConfig(server,serviceName,confURL.toExternalForm());
83       sutil.createAService(serviceName);
84       assertTrue("Created?", sutil.isCreated(serviceName));
85       sutil.startAService(serviceName);
86       assertTrue("Started?", sutil.isStarted(serviceName));
87       //Restart the service
88
sutil.stopAService(serviceName);
89       assertTrue("Stopped?", sutil.isStopped(serviceName));
90       sutil.startAService(serviceName);
91       assertTrue("Started?", sutil.isStarted(serviceName));
92       
93       String JavaDoc authConfig = (String JavaDoc)server.getAttribute(serviceName,"AuthConfig");
94       assertEquals(confURL + "matches", confURL.toExternalForm(), authConfig);
95       sutil.stopAService(serviceName);
96       assertTrue("Stopped?", sutil.isStopped(serviceName));
97       sutil.startAService(serviceName);
98       assertTrue("Started?", sutil.isStarted(serviceName));
99       sutil.destroyAService(serviceName);
100       assertEquals("state is Destroyed", ServiceContext.getStateString(ServiceContext.DESTROYED),
101             sutil.getStateString(serviceName));
102       if(server.isRegistered(serviceName))
103          server.unregisterMBean(serviceName);
104    }
105    
106    /**
107     * JBAS-3422: Do not allow Null AuthConfig or login-config.xml
108     * @throws Exception
109     */

110    public void testAuthConf() throws Exception JavaDoc
111    {
112       MBeanServerConnection JavaDoc server = getServer();
113       ObjectName JavaDoc serviceName = new ObjectName JavaDoc("jboss:service=TestDynamicLoginConfig");
114       sutil.removeAService(serviceName);
115       if(server.isRegistered(serviceName))
116       {
117          server.unregisterMBean(serviceName);
118       }
119       prepareTestDynamicLoginConfig(server,
120             new ObjectName JavaDoc("jboss:service=TestDynamicLoginConfig"), null);
121       try
122       {
123          sutil.createAService(serviceName);
124          assertEquals("state is Created", ServiceContext.getStateString(ServiceContext.CREATED),
125                sutil.getStateString(serviceName));
126          sutil.startAService(serviceName);
127          assertFalse("Should not Start", sutil.isStarted(serviceName));
128       }
129       catch(Exception JavaDoc t)
130       {
131          fail("Exception thrown:"+t.getLocalizedMessage());
132       }
133       finally
134       {
135          if(sutil.isStarted(serviceName))
136          {
137             sutil.stopAService(serviceName);
138             assertEquals("state is Stopped", ServiceContext.getStateString(ServiceContext.STOPPED),
139                   sutil.getStateString(serviceName));
140          }
141       }
142         
143       try
144       {
145          server.setAttribute(serviceName,
146                new Attribute JavaDoc("AuthConfig","login-config.xml"));
147          sutil.startAService(serviceName);
148          assertFalse("Should not Start?", sutil.isStarted(serviceName));
149       }
150       catch(Exception JavaDoc t)
151       {
152          fail("Failute to set an attribute and start a service:"+t.getLocalizedMessage());
153       }
154       finally
155       {
156          boolean isStarted = sutil.isStarted(serviceName);
157          log.info(serviceName+", isStarted: "+isStarted);
158          if(isStarted)
159          {
160             sutil.stopAService(serviceName);
161             assertEquals("state is Stopped", ServiceContext.getStateString(ServiceContext.STOPPED),
162                   sutil.getStateString(serviceName));
163          }
164          sutil.destroyAService(serviceName);
165          assertEquals("state is Destroyed", ServiceContext.getStateString(ServiceContext.DESTROYED),
166                sutil.getStateString(serviceName));
167          sutil.removeAService(serviceName);
168          if(server.isRegistered(serviceName))
169             server.unregisterMBean(serviceName);
170       }
171    }
172    
173    private void prepareTestDynamicLoginConfig(MBeanServerConnection JavaDoc server,
174          ObjectName JavaDoc serviceOName, String JavaDoc confURL) throws Exception JavaDoc
175    {
176       server.createMBean("org.jboss.security.auth.login.DynamicLoginConfig",
177             serviceOName);
178       if(confURL != null)
179       {
180          Attribute JavaDoc attr = new Attribute JavaDoc("AuthConfig", confURL);
181          server.setAttribute(serviceOName,attr);
182       }
183       
184       ObjectName JavaDoc lcs = new ObjectName JavaDoc("jboss.security:service=XMLLoginConfig");
185       Attribute JavaDoc attrLCS = new Attribute JavaDoc("LoginConfigService", lcs);
186       server.setAttribute(serviceOName,attrLCS);
187    }
188    
189    public static Test suite()
190    throws Exception JavaDoc
191    {
192       TestSuite suite = new TestSuite();
193       suite.addTest(new TestSuite(DynamicLoginConfigServiceUnitTestCase.class));
194       JBossTestSetup wrapper = new JBossTestSetup(suite)
195       {
196          protected void setUp() throws Exception JavaDoc
197          {
198             deploymentException = null;
199             try
200             {
201                this.delegate.init();
202                this.deploy("tempfilecreator.jar");
203                this.redeploy(getResourceURL("jmx/tempFileCreator-service.xml"));
204             }
205             catch (Exception JavaDoc ex)
206             {
207                // Throw this in testServerFound() instead.
208
deploymentException = ex;
209             }
210          }
211          
212          protected void tearDown() throws Exception JavaDoc
213          {
214             this.undeploy(getResourceURL("jmx/tempFileCreator-service.xml"));
215          }
216       };
217       return wrapper;
218    }
219 }
220
Popular Tags