1 package com.atlassian.user.configuration.xml;
2
3 import junit.framework.TestCase;
4 import com.atlassian.user.configuration.xml.XMLDefaultsParser;
5
6 import java.util.Map;
7 import java.io.FileNotFoundException;
8 import java.io.IOException;
9
10 import org.dom4j.DocumentException;
11
12 public class TestDefaultsParser extends TestCase
13 {
14 private static final String TEST_DEFAULTS_FILE_NAME = "test-" + XMLDefaultsParser.DEFAULTS_FILE_NAME;
15 private static final String BOGUS_DEFAULTS_FILE_NAME = "bogus-" + XMLDefaultsParser.DEFAULTS_FILE_NAME;
16
17 public void testFileNotFound() throws IOException, DocumentException
18 {
19 try
20 {
21 new XMLDefaultsParser("file-not-found.xml");
22 fail("Expected FileNotFoundException");
23 }
24 catch (FileNotFoundException e)
25 {
26
27 }
28 }
29
30 public void testKeyNotFound() throws DocumentException, IOException
31 {
32 XMLDefaultsParser parser = new XMLDefaultsParser(TEST_DEFAULTS_FILE_NAME);
33
34 assertTrue(parser.getDefaultClassesConfigForKey("monkey").isEmpty());
35 assertTrue(parser.getDefaultParameterConfigForKey("monkey").isEmpty());
36 }
37
38 public void testRepositoryFound() throws DocumentException, IOException
39 {
40 XMLDefaultsParser defaultsParser = new XMLDefaultsParser(TEST_DEFAULTS_FILE_NAME);
41 assertDefaultsContainsGoatEntry(defaultsParser);
42 }
43
44 private void assertDefaultsContainsGoatEntry(XMLDefaultsParser parser)
45 throws DocumentException, IOException
46 {
47 Map classesMap = parser.getDefaultClassesConfigForKey("goat");
48 assertEquals(6, classesMap.size());
49 assertEquals("com.atlassian.user.GoatRepositoryProcessor", classesMap.get("processor"));
50 assertEquals("com.atlassian.user.GoatUserManager", classesMap.get("userManager"));
51 assertEquals("com.atlassian.user.GoatGroupManager", classesMap.get("groupManager"));
52 assertEquals("com.atlassian.user.GoatPasswordEncryptor", classesMap.get("passwordEncryptor"));
53 assertEquals("com.atlassian.user.GoatPropertySetFactory", classesMap.get("propertySetFactory"));
54 assertEquals("com.atlassian.user.GoatAuthenticator", classesMap.get("authenticator"));
55
56 Map paramsMap = parser.getDefaultParameterConfigForKey("goat");
57 assertEquals(3, paramsMap.size());
58 assertEquals("value1", paramsMap.get("param1"));
59 assertEquals("value2", paramsMap.get("param2"));
60 assertEquals("value3", paramsMap.get("param3"));
61 }
62
63
64 public void testDuplicateRepository() throws DocumentException, IOException
65 {
66 XMLDefaultsParser parser = new XMLDefaultsParser(TEST_DEFAULTS_FILE_NAME);
67
68 Map foundMap = parser.getDefaultClassesConfigForKey("chicken");
69 assertEquals(6, foundMap.size());
70 assertEquals("com.atlassian.user.ChickenRepositoryProcessor", foundMap.get("processor"));
71 assertEquals("com.atlassian.user.ChickenUserManager", foundMap.get("userManager"));
72 assertEquals("com.atlassian.user.ChickenGroupManager", foundMap.get("groupManager"));
73 assertEquals("com.atlassian.user.ChickenPasswordEncryptor", foundMap.get("passwordEncryptor"));
74 assertEquals("com.atlassian.user.ChickenPropertySetFactory", foundMap.get("propertySetFactory"));
75 assertEquals("com.atlassian.user.ChickenAuthenticator", foundMap.get("authenticator"));
76 }
77
78 public void testRepositoryWithNoClasses() throws DocumentException, IOException
79 {
80 XMLDefaultsParser parser = new XMLDefaultsParser(TEST_DEFAULTS_FILE_NAME);
81
82 Map classesMap = parser.getDefaultClassesConfigForKey("pig");
83 assertEquals(0, classesMap.size());
84
85 Map paramsMap = parser.getDefaultParameterConfigForKey("pig");
86 assertEquals(2, paramsMap.size());
87 assertEquals("value1", paramsMap.get("param1"));
88 assertEquals("value2", paramsMap.get("param2"));
89
90 }
91
92 public void testRepositoryWithNoParams() throws DocumentException, IOException
93 {
94 XMLDefaultsParser parser = new XMLDefaultsParser(TEST_DEFAULTS_FILE_NAME);
95 assertEquals(0, parser.getDefaultParameterConfigForKey("chicken").size());
96 }
97
98 public void testLoadMultipleFilesWithDefaultConstructor() throws DocumentException, IOException
99 {
100 XMLDefaultsParser parser = new XMLDefaultsParser();
101
102
103 assertDefaultsContainsGoatEntry(parser);
104
105
106 assertFalse(parser.getDefaultClassesConfigForKey("memory").isEmpty());
107 }
108
109 public void testOneDefaultsFileInvalid() throws DocumentException, IOException
110 {
111 assertDefaultsContainsGoatEntry(new XMLDefaultsParser(new String[] { TEST_DEFAULTS_FILE_NAME, BOGUS_DEFAULTS_FILE_NAME }));
112
113 }
114
115 public void testNoValidDefaultsFound() throws DocumentException, IOException
116 {
117 try
118 {
119 new XMLDefaultsParser(BOGUS_DEFAULTS_FILE_NAME);
120 fail("Expected error");
121 }
122 catch (FileNotFoundException e)
123 {
124
125 }
126 }
127 }