1561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/* 2561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Licensed to the Apache Software Foundation (ASF) under one or more 3561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * contributor license agreements. See the NOTICE file distributed with 4561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * this work for additional information regarding copyright ownership. 5561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * The ASF licenses this file to You under the Apache License, Version 2.0 6561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * (the "License"); you may not use this file except in compliance with 7561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * the License. You may obtain a copy of the License at 8561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 9561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * http://www.apache.org/licenses/LICENSE-2.0 10561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 11561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Unless required by applicable law or agreed to in writing, software 12561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * distributed under the License is distributed on an "AS IS" BASIS, 13561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * See the License for the specific language governing permissions and 15561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * limitations under the License. 16561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 17561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 18561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/** 19561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes* @author Maxim V. Makarov 20561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes*/ 21561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 22561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespackage org.apache.harmony.auth.tests.login; 23561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 24561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.File; 25561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.FileOutputStream; 26561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.OutputStream; 27561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.net.MalformedURLException; 28561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.net.URL; 29561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.HashMap; 30561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.Iterator; 31561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.List; 32561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.Map; 33561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.Properties; 34561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 35561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport javax.security.auth.login.AppConfigurationEntry; 36561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 37561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport junit.framework.TestCase; 38561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 39561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport org.apache.harmony.auth.login.DefaultConfigurationParser; 40561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport org.apache.harmony.auth.login.DefaultConfigurationParser.InvalidFormatException; 41561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 42561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport tests.support.resource.Support_Resources; 43561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 44561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/** 45561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Tests parser implementation for default configuration. 46561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 47561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespublic class DefaultConfigParserTest extends TestCase { 48561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 49561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes static String fconf = Support_Resources 50561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getAbsoluteResourcePath("auth.conf"); 51561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 52561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Properties p; 53561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 54561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URL url; 55561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 56561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes List<AppConfigurationEntry> entriesList; 57561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 58561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 59561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void setUp() throws Exception { 60561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes p = System.getProperties(); 61561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes File f = new File(fconf); 62561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 63561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes url = f.toURL(); 64561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (MalformedURLException e) { 65561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 66561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 67561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 68561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 69561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * test on existence of a application name 70561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @throws Exception 71561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 72561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testConfigParser_01() throws Exception { 73561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Map<String, List<AppConfigurationEntry>> config = null; 74561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes config = DefaultConfigurationParser.configParser(url, p, new HashMap<String, List<AppConfigurationEntry>>()); 75561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes entriesList = config.get("Login1"); 76561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNotNull(entriesList); 77561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes entriesList = config.get("other"); 78561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNotNull(entriesList); 79561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes entriesList = config.get("Login2"); 80561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNotNull(entriesList); 81561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes entriesList = config.get("Login3"); 82561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNotNull(entriesList); 83561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes entriesList = config.get("Login4"); 84561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNotNull(entriesList); 85561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes entriesList = config.get("Login5"); 86561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNotNull(entriesList); 87561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes entriesList = config.get("Login6"); 88561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNotNull(entriesList); 89561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes entriesList = config.get("Login7"); 90561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNotNull(entriesList); 91561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes entriesList = config.get("Login8"); 92561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull(entriesList); 93561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 94561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 95561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 96561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * test on correct initialization of a config file 97561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @throws Exception 98561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 99561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testConfigParser_02() throws Exception { 100561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 101561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Map<String, List<AppConfigurationEntry>> config = DefaultConfigurationParser.configParser(url, p, new HashMap<String, List<AppConfigurationEntry>>()); 102561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes entriesList = config.get("Login1"); 103561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 104561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (entriesList == null || entriesList.size() == 0) { 105561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Unable to read configuration"); 106561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 107561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 108561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Iterator<AppConfigurationEntry> i = entriesList.iterator(); 109561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes while (i.hasNext()) { 110561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes AppConfigurationEntry e = i.next(); 111561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("com.intel.security.auth.module.LoginModule1", e 112561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getLoginModuleName()); 113561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("LoginModuleControlFlag: required", e 114561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getControlFlag().toString()); 115561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals( 116561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes AppConfigurationEntry.LoginModuleControlFlag.REQUIRED, 117561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes e.getControlFlag()); 118561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Map<String, String> m = new HashMap<String, String>(); 119561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes m.put("debug1", "true"); 120561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes m.put("test1", "false"); 121561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(m, e.getOptions()); 122561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 123561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 124561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 125561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 126561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * test on invalid initialization of a config file 127561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @throws Exception 128561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 129561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testNegConfig() throws Exception { 130561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String[] str = { 131561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 132561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "Login ERR {\n com.intel.security.auth.module.LoginModule required debug=\"true\" test=false;\n};", 133561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "{\n com.intel.security.auth.module.LoginModule required debug=\"true\" test=false;\n};", 134561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "Login \n com.intel.security.auth.module.LoginModule required debug=\"true\" test=false;\n};", 135561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "Login {\n com.intel.security.auth.module.LoginModule required debug=\"true\" test=false;\n}", 136561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "Login {\n com.intel.security.auth.module.LoginModule required debug=\"true\" test=false;\n;", 137561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "Login {\n com.intel.security.auth.module.LoginModule required debug=\"true\" test=false\n};", 138561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "Login {\n com.intel.security.auth.module.LoginModule required debug=\"true\" test=;\n};", 139561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "Login {\n com.intel.security.auth.module.LoginModule required debug=\"true\" =false;\n};", 140561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "Login {\n com.intel.security.auth.module.LoginModule required debug=\"true test=false;\n};", 141561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "Login {\n com.intel.security.auth.module.LoginModule required debug=true\" test=false;\n};", 142561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "Login {\n com.intel.security.auth.module.LoginModule required debug\n};", 143561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "Login {\n com.intel.security.auth.module.LoginModule INVALID \n};", 144561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "Login {\n required \n};", 145561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "Login {\n com.intel.security.auth.module.LoginModule required\n}", 146561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "Login {\n com.intel.security.auth.module.LoginModule1 required debug=\"true\";\n};\n" 147561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + "Login {\n com.intel.security.auth.module.LoginModule2 required debug=\"true\" test=false;\n};\n", 148561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes }; 149561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 150561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < str.length; i++) { 151561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes File file = File.createTempFile("auth_neg_", ".conf"); 152561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 153561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes byte[] b = str[i].getBytes(); 154561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes OutputStream os = new FileOutputStream(file); 155561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 156561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (byte element : b) { 157561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes os.write(element); 158561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 159561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 160561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes os.flush(); 161561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes os.close(); 162561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 163561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes DefaultConfigurationParser.configParser(file.toURL(), p, new HashMap<String, List<AppConfigurationEntry>>()); 164561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("no expected InvalidFormatException" + i); 165561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NullPointerException e) { 166561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println(file.getCanonicalPath()); 167561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (DefaultConfigurationParser.InvalidFormatException e) { 168561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } finally { 169561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes file.delete(); 170561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 171561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 172561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 173561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 174561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testException() { 175561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes InvalidFormatException ife = new InvalidFormatException("message"); 176561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("message", ife.getMessage()); 177561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 178561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throw ife; 179561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes }catch (Exception e){ 180561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(ife.equals(e)); 181561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 182561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes DefaultConfigurationParser.InvalidFormatException ife1 = new DefaultConfigurationParser.InvalidFormatException("message"); 183561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("message", ife1.getMessage()); 184561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 185561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 186561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes} 187