001: /*
002: * Copyright 2004 Outerthought bvba and Schaubroeck nv
003: *
004: * Licensed under the Apache License, Version 2.0 (the "License");
005: * you may not use this file except in compliance with the License.
006: * You may obtain a copy of the License at
007: *
008: * http://www.apache.org/licenses/LICENSE-2.0
009: *
010: * Unless required by applicable law or agreed to in writing, software
011: * distributed under the License is distributed on an "AS IS" BASIS,
012: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013: * See the License for the specific language governing permissions and
014: * limitations under the License.
015: */
016: package org.outerj.daisy.repository.test;
017:
018: import org.outerj.daisy.repository.testsupport.AbstractDaisyTestCase;
019: import org.outerj.daisy.repository.RepositoryManager;
020: import org.outerj.daisy.repository.Credentials;
021: import org.outerj.daisy.repository.Repository;
022: import org.outerj.daisy.repository.RepositoryException;
023: import org.outerj.daisy.repository.user.UserManager;
024: import org.outerj.daisy.repository.user.User;
025: import org.outerj.daisy.repository.user.Role;
026: import org.outerj.daisy.repository.namespace.NamespaceManager;
027: import org.outerj.daisy.repository.namespace.Namespaces;
028: import org.outerj.daisy.repository.namespace.Namespace;
029: import org.outerj.daisy.repository.namespace.NamespaceNotFoundException;
030:
031: public abstract class AbstractNamespacesTest extends
032: AbstractDaisyTestCase {
033: protected boolean resetDataStores() {
034: return true;
035: }
036:
037: protected abstract RepositoryManager getRepositoryManager()
038: throws Exception;
039:
040: public void testNamespaces() throws Exception {
041: RepositoryManager repositoryManager = getRepositoryManager();
042: Repository repository = repositoryManager
043: .getRepository(new Credentials("testuser", "testuser"));
044:
045: UserManager userManager = repository.getUserManager();
046: User testuser = userManager.getUser("testuser", false);
047:
048: NamespaceManager namespaceManager = repository
049: .getNamespaceManager();
050:
051: // While in non-admin role, registering or unregistering namespaces should not work
052: try {
053: namespaceManager.registerNamespace("PIEF");
054: fail("Expected an exception trying to register a namespace as non-admin.");
055: } catch (RepositoryException e) {
056: }
057:
058: try {
059: namespaceManager.registerNamespace("PIEF", "PAF");
060: fail("Expected an exception trying to register a namespace as non-admin.");
061: } catch (RepositoryException e) {
062: }
063:
064: try {
065: namespaceManager.unregisterNamespace("DSYTEST");
066: fail("Expected an exception trying to unregister a namespace as non-admin.");
067: } catch (RepositoryException e) {
068: }
069:
070: repository.switchRole(Role.ADMINISTRATOR);
071: // Test getting list of namespaces
072: Namespaces namespaces = namespaceManager.getAllNamespaces();
073: assertEquals(1, namespaces.getArray().length);
074:
075: // Test getting repository's own namespace
076: assertEquals("DSYTEST", namespaceManager
077: .getRepositoryNamespace());
078:
079: // Test getting specific namespace
080: Namespace namespace = namespaceManager.getNamespace("DSYTEST");
081: assertEquals(1, namespace.getId());
082: assertEquals("DSYTEST", namespace.getName());
083: assertNotNull(namespace.getRegisteredOn());
084:
085: // Test registering a new namespace
086: Namespace namespace1 = namespaceManager
087: .registerNamespace("FOO");
088: assertEquals("FOO", namespace1.getName());
089: assertNotNull(namespace1.getFingerprint());
090: assertTrue(!namespace.getFingerprint().equals(
091: namespace1.getFingerprint())); // could be (and is allowed to be) the same, but should be very unlikely in case of auto-generated fingerprints
092: assertEquals(testuser.getId(), namespace1.getRegisteredBy());
093: assertTrue(System.currentTimeMillis()
094: - namespace1.getRegisteredOn().getTime() < 5000);
095:
096: // Test registering a new namespace with a specifc fingerprint
097: Namespace namespace2 = namespaceManager.registerNamespace(
098: "BAR", "finger");
099: assertEquals("finger", namespace2.getFingerprint());
100:
101: // Test getting new namespace
102: namespace2 = namespaceManager.getNamespace("BAR");
103: assertNotNull(namespace2);
104:
105: // Test all namespaces still OK
106: assertEquals(3,
107: namespaceManager.getAllNamespaces().getArray().length);
108:
109: // Test unregistering a namespace
110: namespaceManager.unregisterNamespace("BAR");
111: try {
112: namespaceManager.getNamespace("BAR");
113: fail("Should have gotten an exception when getting non-existing namespace.");
114: } catch (NamespaceNotFoundException e) {
115: }
116:
117: assertEquals(2,
118: namespaceManager.getAllNamespaces().getArray().length);
119:
120: // Test registering same namespace twice
121: try {
122: namespaceManager.registerNamespace("FOO");
123: fail("Registering namespace with same name twice should give an exception.");
124: } catch (RepositoryException e) {
125: }
126:
127: // Test registering same namespace twice
128: try {
129: namespaceManager
130: .registerNamespace("Longggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg");
131: fail("Registering namespace with a name over 200 characters should give an exception.");
132: } catch (RepositoryException e) {
133: }
134:
135: }
136: }
|