diff options
| author | Alex Rudyy <orudyy@apache.org> | 2013-09-14 11:24:14 +0000 |
|---|---|---|
| committer | Alex Rudyy <orudyy@apache.org> | 2013-09-14 11:24:14 +0000 |
| commit | 2af29db3885316bbb42c99f423cbc9f50619c925 (patch) | |
| tree | 3ab15a09a2bf23800834ab5c94b8c15d71d9298f /qpid/java/broker/src/test | |
| parent | 883d7bd6a52f219984ffeb3c7fd5f7fd0bc7b1f9 (diff) | |
| download | qpid-python-2af29db3885316bbb42c99f423cbc9f50619c925.tar.gz | |
QPID-5138: Introduce preferences provider interface and its implementation storing preferences on file system
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1523217 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/java/broker/src/test')
| -rw-r--r-- | qpid/java/broker/src/test/java/org/apache/qpid/server/model/adapter/FileSystemPreferencesProviderTest.java | 246 |
1 files changed, 246 insertions, 0 deletions
diff --git a/qpid/java/broker/src/test/java/org/apache/qpid/server/model/adapter/FileSystemPreferencesProviderTest.java b/qpid/java/broker/src/test/java/org/apache/qpid/server/model/adapter/FileSystemPreferencesProviderTest.java new file mode 100644 index 0000000000..bb64241ff0 --- /dev/null +++ b/qpid/java/broker/src/test/java/org/apache/qpid/server/model/adapter/FileSystemPreferencesProviderTest.java @@ -0,0 +1,246 @@ +package org.apache.qpid.server.model.adapter; + +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + +import java.io.File; +import java.util.Arrays; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; +import java.util.UUID; + +import org.apache.qpid.server.configuration.updater.TaskExecutor; +import org.apache.qpid.server.model.AuthenticationProvider; +import org.apache.qpid.server.model.Broker; +import org.apache.qpid.server.model.State; +import org.apache.qpid.server.util.BrokerTestHelper; +import org.apache.qpid.test.utils.QpidTestCase; +import org.apache.qpid.test.utils.TestFileUtils; + +public class FileSystemPreferencesProviderTest extends QpidTestCase +{ + private static final String TEST_PREFERENCES = "{\"user1\":{\"pref1\":\"pref1User1Value\", \"pref2\": true, \"pref3\": 1.0, \"pref4\": 2}," + + "\"user2\":{\"pref1\":\"pref1User2Value\", \"pref2\": false, \"pref3\": 2.0, \"pref4\": 3}}"; + private FileSystemPreferencesProvider _preferencesProvider; + private AuthenticationProvider _authenticationProvider; + private Broker _broker; + private String _user1, _user2; + private File _preferencesFile; + + protected void setUp() throws Exception + { + super.setUp(); + BrokerTestHelper.setUp(); + _authenticationProvider = mock(AuthenticationProvider.class); + _user1 = "user1"; + _user2 = "user2"; + _preferencesFile = TestFileUtils.createTempFile(this, ".prefs.json", TEST_PREFERENCES); + + _broker = BrokerTestHelper.createBrokerMock(); + TaskExecutor taslExecutor = mock(TaskExecutor.class); + when(taslExecutor.isTaskExecutorThread()).thenReturn(true); + when(_broker.getTaskExecutor()).thenReturn(taslExecutor); + when(_authenticationProvider.getParent(Broker.class)).thenReturn(_broker); + } + + protected void tearDown() throws Exception + { + try + { + BrokerTestHelper.tearDown(); + _preferencesFile.delete(); + } + finally + { + super.tearDown(); + } + } + + public void testConstructionWithExistingFile() + { + _preferencesProvider = createPreferencesProvider(); + assertEquals(State.INITIALISING, _preferencesProvider.getActualState()); + } + + public void testConstructionWithNonExistingFile() + { + File nonExistingFile = new File(TMP_FOLDER, "preferences-" + UUID.randomUUID() + ".json"); + assertFalse("Preferences file exists", nonExistingFile.exists()); + try + { + Map<String, Object> attributes = new HashMap<String, Object>(); + attributes.put(FileSystemPreferencesProvider.PATH, nonExistingFile.getAbsolutePath()); + _preferencesProvider = new FileSystemPreferencesProvider(UUID.randomUUID(), attributes, _authenticationProvider, _broker.getTaskExecutor()); + _preferencesProvider.createStoreIfNotExist(); + assertEquals(State.INITIALISING, _preferencesProvider.getActualState()); + assertTrue("Preferences file was not created", nonExistingFile.exists()); + } + finally + { + nonExistingFile.delete(); + } + } + + public void testConstructionWithEmptyFile() throws Exception + { + File emptyPrefsFile = new File(TMP_FOLDER, "preferences-" + UUID.randomUUID() + ".json"); + emptyPrefsFile.createNewFile(); + assertTrue("Preferences file does notexists", emptyPrefsFile.exists()); + try + { + Map<String, Object> attributes = new HashMap<String, Object>(); + attributes.put(FileSystemPreferencesProvider.PATH, emptyPrefsFile.getAbsolutePath()); + _preferencesProvider = new FileSystemPreferencesProvider(UUID.randomUUID(), attributes, _authenticationProvider, _broker.getTaskExecutor()); + assertEquals(State.INITIALISING, _preferencesProvider.getActualState()); + } + finally + { + emptyPrefsFile.delete(); + } + } + + public void testActivate() + { + _preferencesProvider = createPreferencesProvider(); + _preferencesProvider.setDesiredState(State.INITIALISING, State.ACTIVE); + + assertEquals("Unexpexpected state", State.ACTIVE, _preferencesProvider.getActualState()); + } + + public void testChangeAttributes() + { + _preferencesProvider = createPreferencesProvider(); + _preferencesProvider.setDesiredState(State.INITIALISING, State.ACTIVE); + + File newPrefsFile = TestFileUtils.createTempFile(this, ".prefs.json", "{\"user3\":{\"pref1\":\"pref1User3Value\", \"pref3\": 2.0}}"); + try + { + Map<String, Object> attributes = new HashMap<String, Object>(); + attributes.put(FileSystemPreferencesProvider.PATH, newPrefsFile.getAbsolutePath()); + _preferencesProvider.changeAttributes(attributes); + assertEquals("Unexpected path", newPrefsFile.getAbsolutePath(), + _preferencesProvider.getAttribute(FileSystemPreferencesProvider.PATH)); + + Map<String, Object> preferences1 = _preferencesProvider.getPreferences(_user1); + assertTrue("Unexpected preferences for user1", preferences1.isEmpty()); + + String user3 = "user3"; + Map<String, Object> preferences3 = _preferencesProvider.getPreferences(user3); + assertFalse("No preference found for user3", preferences3.isEmpty()); + assertEquals("Unexpected preference 1 for user 3", "pref1User3Value", preferences3.get("pref1")); + assertEquals("Unexpected preference 3 for user 3", 2.0, ((Number) preferences3.get("pref3")).floatValue(), 0.01); + } + finally + { + newPrefsFile.delete(); + } + } + + public void testGetPreferences() + { + _preferencesProvider = createPreferencesProvider(); + _preferencesProvider.setDesiredState(State.INITIALISING, State.ACTIVE); + + Map<String, Object> preferences1 = _preferencesProvider.getPreferences(_user1); + assertUser1Preferences(preferences1); + + Map<String, Object> preferences2 = _preferencesProvider.getPreferences(_user2); + assertUser2Preferences(preferences2); + + String user3 = "user3"; + Map<String, Object> preferences3 = _preferencesProvider.getPreferences(user3); + assertTrue("No preference found for user3", preferences3.isEmpty()); + } + + public void testSetPrefernces() + { + _preferencesProvider = createPreferencesProvider(); + _preferencesProvider.setDesiredState(State.INITIALISING, State.ACTIVE); + + Map<String, Object> newPreferences = new HashMap<String, Object>(); + newPreferences.put("pref2", false); + newPreferences.put("pref4", 8); + Map<String, Object> pref5 = new HashMap<String, Object>(); + pref5.put("test1", "test1Value"); + pref5.put("test2", 5); + newPreferences.put("pref5", pref5); + + _preferencesProvider.setPreferences(_user1, newPreferences); + + FileSystemPreferencesProvider newProvider = createPreferencesProvider(); + Map<String, Object> preferences1 = newProvider.getPreferences(_user1); + assertNotNull("Preferences should not be null for user 1", preferences1); + assertEquals("Unexpected preference 1 for user 1", "pref1User1Value", preferences1.get("pref1")); + assertEquals("Unexpected preference 2 for user 1", false, preferences1.get("pref2")); + assertEquals("Unexpected preference 3 for user 1", 1.0, ((Number) preferences1.get("pref3")).floatValue(), 0.01); + assertEquals("Unexpected preference 4 for user 1", 8, preferences1.get("pref4")); + assertNotNull("Unexpected preference 5 for user 1", preferences1.get("pref5")); + assertEquals("Unexpected preference 5 for user 1", pref5, preferences1.get("pref5")); + + Map<String, Object> preferences2 = newProvider.getPreferences(_user2); + assertUser2Preferences(preferences2); + + String user3 = "user3"; + Map<String, Object> preferences3 = newProvider.getPreferences(user3); + assertTrue("No preference found for user3", preferences3.isEmpty()); + } + + public void testDeletePrefernces() + { + _preferencesProvider = createPreferencesProvider(); + _preferencesProvider.setDesiredState(State.INITIALISING, State.ACTIVE); + + _preferencesProvider.deletePreferences(_user1); + + FileSystemPreferencesProvider newProvider = createPreferencesProvider(); + Map<String, Object> preferences1 = newProvider.getPreferences(_user1); + assertTrue("Preferences should not be set for user 1", preferences1.isEmpty()); + + Map<String, Object> preferences2 = newProvider.getPreferences(_user2); + assertUser2Preferences(preferences2); + + String user3 = "user3"; + Map<String, Object> preferences3 = newProvider.getPreferences(user3); + assertTrue("No preference found for user3", preferences3.isEmpty()); + } + + public void testListUserNames() + { + _preferencesProvider = createPreferencesProvider(); + _preferencesProvider.setDesiredState(State.INITIALISING, State.ACTIVE); + + Set<String> userNames = _preferencesProvider.listUserIDs(); + + assertEquals("Unexpected user names", new HashSet<String>(Arrays.asList("user1", "user2")), userNames); + } + + private FileSystemPreferencesProvider createPreferencesProvider() + { + Map<String, Object> attributes = new HashMap<String, Object>(); + attributes.put(FileSystemPreferencesProvider.PATH, _preferencesFile.getAbsolutePath()); + attributes.put(FileSystemPreferencesProvider.NAME, "test"); + return _preferencesProvider = new FileSystemPreferencesProvider(UUID.randomUUID(), attributes, _authenticationProvider, _broker.getTaskExecutor()); + } + + private void assertUser1Preferences(Map<String, Object> preferences1) + { + assertNotNull("Preferences should not be null for user 1", preferences1); + assertEquals("Unexpected preference 1 for user 1", "pref1User1Value", preferences1.get("pref1")); + assertEquals("Unexpected preference 2 for user 1", true, preferences1.get("pref2")); + assertEquals("Unexpected preference 3 for user 1", 1.0, ((Number) preferences1.get("pref3")).floatValue(), 0.01); + assertEquals("Unexpected preference 4 for user 1", 2, preferences1.get("pref4")); + assertNull("Unexpected preference 5 for user 1", preferences1.get("pref5")); + } + + private void assertUser2Preferences(Map<String, Object> preferences2) + { + assertNotNull("Preferences should not be null for user 2", preferences2); + assertEquals("Unexpected preference 1 for user 2", "pref1User2Value", preferences2.get("pref1")); + assertEquals("Unexpected preference 2 for user 2", false, preferences2.get("pref2")); + assertEquals("Unexpected preference 2 for user 2", 2.0, ((Number) preferences2.get("pref3")).floatValue(), 0.01); + assertEquals("Unexpected preference 3 for user 2", 3, preferences2.get("pref4")); + assertNull("Unexpected preference 5 for user 2", preferences2.get("pref5")); + } +} |
