/* * Copyright 2000-2013 Enonic AS * http://www.enonic.com/license */ package com.enonic.cms.core.security.userstore; import org.junit.Test; import org.mockito.Mockito; import com.enonic.cms.store.dao.UserStoreDao; import static org.junit.Assert.*; public class UserStoreParserTest { @Test public void parseUserStore_returns_null_when_given_string_is_null() { // setup UserStoreDao userStoreDao = Mockito.mock( UserStoreDao.class ); Mockito.when( userStoreDao.findByName( "myUserStore" ) ).thenReturn( createUserStore( 1, "myUserStore" ) ); Mockito.when( userStoreDao.findByKey( new UserStoreKey( 1 ) ) ).thenReturn( createUserStore( 1, "myUserStore" ) ); // exercise UserStoreParser parser = new UserStoreParser( userStoreDao ); UserStoreEntity actualUserStore = parser.parseUserStore( null ); // verify assertEquals( null, actualUserStore ); } @Test(expected = UserStoreNotFoundException.class) public void parseUserStore_throws_exception_when_given_string_is_not_matching_any_userstore_by_name() { // setup UserStoreDao userStoreDao = Mockito.mock( UserStoreDao.class ); Mockito.when( userStoreDao.findByName( "myUserStore" ) ).thenReturn( createUserStore( 1, "myUserStore" ) ); Mockito.when( userStoreDao.findByKey( new UserStoreKey( 1 ) ) ).thenReturn( createUserStore( 1, "myUserStore" ) ); // exercise UserStoreParser parser = new UserStoreParser( userStoreDao ); UserStoreEntity actualUserStore = parser.parseUserStore( "nonExistingUserStore" ); // verify assertEquals( null, actualUserStore ); } @Test(expected = UserStoreNotFoundException.class) public void parseUserStore_throws_exception_when_given_string_is_not_matching_any_userstore_by_key() { // setup UserStoreDao userStoreDao = Mockito.mock( UserStoreDao.class ); Mockito.when( userStoreDao.findByName( "myUserStore" ) ).thenReturn( createUserStore( 1, "myUserStore" ) ); Mockito.when( userStoreDao.findByKey( new UserStoreKey( 1 ) ) ).thenReturn( createUserStore( 1, "myUserStore" ) ); // exercise UserStoreParser parser = new UserStoreParser( userStoreDao ); UserStoreEntity actualUserStore = parser.parseUserStore( "#123" ); // verify assertEquals( null, actualUserStore ); } @Test public void parseUserStore_returns_userstore_when_given_string_is_a_matching_name() { // setup UserStoreDao userStoreDao = Mockito.mock( UserStoreDao.class ); Mockito.when( userStoreDao.findByName( "myUserStore" ) ).thenReturn( createUserStore( 1, "myUserStore" ) ); Mockito.when( userStoreDao.findByKey( new UserStoreKey( 1 ) ) ).thenReturn( createUserStore( 1, "myUserStore" ) ); // exercise UserStoreParser parser = new UserStoreParser( userStoreDao ); UserStoreEntity actualUserStore = parser.parseUserStore( "myUserStore" ); // verify assertEquals( "myUserStore", actualUserStore.getName() ); } @Test public void parseUserStore_returns_userstore_when_given_string_is_a_number_matching_the_key() { // setup UserStoreDao userStoreDao = Mockito.mock( UserStoreDao.class ); Mockito.when( userStoreDao.findByName( "myUserStore" ) ).thenReturn( createUserStore( 1, "myUserStore" ) ); Mockito.when( userStoreDao.findByKey( new UserStoreKey( 1 ) ) ).thenReturn( createUserStore( 1, "myUserStore" ) ); // exercise UserStoreParser parser = new UserStoreParser( userStoreDao ); UserStoreEntity actualUserStore = parser.parseUserStore( "1" ); // verify assertEquals( "myUserStore", actualUserStore.getName() ); } @Test public void parseUserStore_returns_userstore_when_given_string_is_a_number_prefixed_with_hash_matching_the_key() { // setup UserStoreDao userStoreDao = Mockito.mock( UserStoreDao.class ); Mockito.when( userStoreDao.findByName( "myUserStore" ) ).thenReturn( createUserStore( 1, "myUserStore" ) ); Mockito.when( userStoreDao.findByKey( new UserStoreKey( 1 ) ) ).thenReturn( createUserStore( 1, "myUserStore" ) ); // exercise UserStoreParser parser = new UserStoreParser( userStoreDao ); UserStoreEntity actualUserStore = parser.parseUserStore( "#1" ); // verify assertEquals( "myUserStore", actualUserStore.getName() ); } private UserStoreEntity createUserStore( int key, String name ) { UserStoreEntity userStore = new UserStoreEntity(); userStore.setKey( new UserStoreKey( key ) ); userStore.setName( name ); return userStore; } }