/* * Copyright 2016 Red Hat, Inc. and/or its affiliates. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.uberfire.preferences.shared.impl; import org.junit.Before; import org.junit.Test; import org.uberfire.mocks.SessionInfoMock; import org.uberfire.preferences.shared.PreferenceScope; import org.uberfire.preferences.shared.PreferenceScopeTypes; import org.uberfire.preferences.shared.impl.exception.InvalidPreferenceScopeException; import static org.junit.Assert.*; import static org.mockito.Mockito.*; import static org.uberfire.preferences.shared.impl.DefaultPreferenceScopesForTests.entireApplicationScope; import static org.uberfire.preferences.shared.impl.DefaultPreferenceScopesForTests.userScope; import static org.uberfire.preferences.shared.impl.DefaultPreferenceScopesForTests.userScopeKey; public class PreferenceScopeFactoryImplTest { private PreferenceScopeFactoryImpl scopeFactory; private PreferenceScope genericScope; @Before public void setup() { genericScope = mock(PreferenceScope.class); final SessionInfoMock sessionInfo = new SessionInfoMock(); final PreferenceScopeTypes scopeTypes = new DefaultPreferenceScopeTypes(new UsernameProviderMock(sessionInfo)); scopeFactory = new PreferenceScopeFactoryImpl(scopeTypes); } @Test public void createScopeByTypeWithDefaultKeyTest() { PreferenceScope userScope = scopeFactory.createScope(DefaultScopes.USER.type()); assertEquals(DefaultScopes.USER.type(), userScope.type()); assertEquals("admin", userScope.key()); } @Test(expected = InvalidPreferenceScopeException.class) public void createScopeByTypeWithoutDefaultKeyTest() { scopeFactory.createScope(DefaultScopes.COMPONENT.type()); } @Test public void createScopeByTypeAndKeyWithoutDefaultKeyTest() { PreferenceScope componentScope = scopeFactory.createScope(DefaultScopes.COMPONENT.type(), "my-component"); assertEquals(DefaultScopes.COMPONENT.type(), componentScope.type()); assertEquals("my-component", componentScope.key()); } @Test(expected = InvalidPreferenceScopeException.class) public void createScopeByTypeAndKeyWithDefaultKeyTest() { scopeFactory.createScope(DefaultScopes.USER.type(), "user"); } @Test public void createScopeByTypeAndChildScopeWithDefaultKeyTest() { PreferenceScope userScope = scopeFactory.createScope(DefaultScopes.USER.type(), genericScope); assertEquals(DefaultScopes.USER.type(), userScope.type()); assertEquals("admin", userScope.key()); } @Test(expected = InvalidPreferenceScopeException.class) public void createScopeByTypeAndChildScopeWithoutDefaultKeyTest() { scopeFactory.createScope(DefaultScopes.COMPONENT.type(), genericScope); } @Test public void createScopeByTypeKeyAndChildScopeWithoutDefaultKeyTest() { PreferenceScope componentScope = scopeFactory.createScope(DefaultScopes.COMPONENT.type(), "my-component", genericScope); assertEquals(DefaultScopes.COMPONENT.type(), componentScope.type()); assertEquals("my-component", componentScope.key()); } @Test(expected = InvalidPreferenceScopeException.class) public void createScopeByTypeKeyAndChildScopeWithDefaultKeyTest() { scopeFactory.createScope(DefaultScopes.USER.type(), "user", genericScope); } @Test public void createHierarchicalScopeByScopesTest() { PreferenceScope scope = scopeFactory.createScope(userScope, entireApplicationScope); assertEquals(DefaultScopes.USER.type(), scope.type()); assertEquals(userScopeKey, scope.key()); final PreferenceScope childScope = scope.childScope(); assertEquals(DefaultScopes.ENTIRE_APPLICATION.type(), childScope.type()); assertEquals(DefaultScopes.ENTIRE_APPLICATION.type(), childScope.key()); assertNull(childScope.childScope()); } @Test public void cloneScopeTest() { PreferenceScope scope = scopeFactory.createScope(userScope, entireApplicationScope); PreferenceScope newScope = scopeFactory.cloneScope(scope); assertTrue(scope != newScope); assertEquals(scope, newScope); } }