/** * Licensed to Apereo under one or more contributor license agreements. See the NOTICE file * distributed with this work for additional information regarding copyright ownership. Apereo * licenses this file to you 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 the * following location: * * <p>http://www.apache.org/licenses/LICENSE-2.0 * * <p>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.apereo.portal.jpa; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verifyNoMoreInteractions; import static org.mockito.Mockito.when; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; import org.apereo.portal.version.VersionUtils; import org.apereo.portal.version.dao.VersionDao; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; @RunWith(MockitoJUnitRunner.class) public class VersionedDataUpdaterImplTest { @InjectMocks private VersionedDataUpdaterImpl versionedDataUpdaterImpl = new VersionedDataUpdaterImpl(); @Mock private VersionDao versionDao; @Mock private IVersionedDatabaseUpdateHelper updateHelperPortalDb402; @Mock private IVersionedDatabaseUpdateHelper updateHelperRawEventsDb402; @Mock private IVersionedDatabaseUpdateHelper updateHelperRawEventsDb403; @Before public void setup() { when(updateHelperPortalDb402.getVersion()).thenReturn(VersionUtils.parseVersion("4.0.2")); when(updateHelperPortalDb402.getDatabaseName()).thenReturn("PortalDb"); when(updateHelperRawEventsDb402.getVersion()) .thenReturn(VersionUtils.parseVersion("4.0.2")); when(updateHelperRawEventsDb402.getDatabaseName()).thenReturn("RawEventsDb"); when(updateHelperRawEventsDb403.getVersion()) .thenReturn(VersionUtils.parseVersion("4.0.3")); when(updateHelperRawEventsDb403.getDatabaseName()).thenReturn("RawEventsDb"); versionedDataUpdaterImpl.setRequiredProductVersions( ImmutableMap.of( "PortalDb", VersionUtils.parseVersion("4.0.6"), "RawEventsDb", VersionUtils.parseVersion("4.0.6"), "AggrEventsDb", VersionUtils.parseVersion("4.0.6"))); versionedDataUpdaterImpl.setVersionedDatabaseUpdateHelpers( ImmutableSet.of( updateHelperPortalDb402, updateHelperRawEventsDb402, updateHelperRawEventsDb403)); } @Test public void testPostInit() { versionedDataUpdaterImpl.postInitDatabase("PortalDb"); versionedDataUpdaterImpl.postInitDatabase("RawEventsDb"); versionedDataUpdaterImpl.postInitDatabase("AggrEventsDb"); verify(versionDao).setVersion("PortalDb", VersionUtils.parseVersion("4.0.6")); verify(versionDao).setVersion("RawEventsDb", VersionUtils.parseVersion("4.0.6")); verify(versionDao).setVersion("AggrEventsDb", VersionUtils.parseVersion("4.0.6")); verify(updateHelperPortalDb402).getDatabaseName(); verify(updateHelperRawEventsDb402).getDatabaseName(); verify(updateHelperRawEventsDb402).getVersion(); verify(updateHelperRawEventsDb403).getDatabaseName(); verify(updateHelperRawEventsDb403).getVersion(); verifyNoMoreInteractions( versionDao, updateHelperPortalDb402, updateHelperRawEventsDb402, updateHelperRawEventsDb403); } @Test public void testPreUpdateReturnNull() { versionedDataUpdaterImpl.preUpdateDatabase("PortalDb"); versionedDataUpdaterImpl.preUpdateDatabase("RawEventsDb"); versionedDataUpdaterImpl.preUpdateDatabase("AggrEventsDb"); verify(versionDao).getVersion("PortalDb"); verify(versionDao).getVersion("RawEventsDb"); verify(versionDao).getVersion("AggrEventsDb"); verify(updateHelperPortalDb402).getDatabaseName(); verify(updateHelperPortalDb402).getVersion(); verify(updateHelperRawEventsDb402).getDatabaseName(); verify(updateHelperRawEventsDb402, times(2)).getVersion(); verify(updateHelperRawEventsDb403).getDatabaseName(); verify(updateHelperRawEventsDb403, times(2)).getVersion(); verify(updateHelperPortalDb402).preUpdate(); verify(updateHelperRawEventsDb402).preUpdate(); verify(updateHelperRawEventsDb403).preUpdate(); verifyNoMoreInteractions( versionDao, updateHelperPortalDb402, updateHelperRawEventsDb402, updateHelperRawEventsDb403); } @Test public void testPreUpdate402() { when(versionDao.getVersion("PortalDb")).thenReturn(VersionUtils.parseVersion("4.0.2")); when(versionDao.getVersion("RawEventsDb")).thenReturn(VersionUtils.parseVersion("4.0.2")); when(versionDao.getVersion("AggrEventsDb")).thenReturn(VersionUtils.parseVersion("4.0.2")); versionedDataUpdaterImpl.preUpdateDatabase("PortalDb"); versionedDataUpdaterImpl.preUpdateDatabase("RawEventsDb"); versionedDataUpdaterImpl.preUpdateDatabase("AggrEventsDb"); verify(versionDao).getVersion("PortalDb"); verify(versionDao).getVersion("RawEventsDb"); verify(versionDao).getVersion("AggrEventsDb"); verify(updateHelperPortalDb402).getDatabaseName(); verify(updateHelperPortalDb402).getVersion(); verify(updateHelperRawEventsDb402).getDatabaseName(); verify(updateHelperRawEventsDb402, times(2)).getVersion(); verify(updateHelperRawEventsDb403).getDatabaseName(); verify(updateHelperRawEventsDb403, times(2)).getVersion(); verify(updateHelperPortalDb402).preUpdate(); verify(updateHelperRawEventsDb402).preUpdate(); verify(updateHelperRawEventsDb403).preUpdate(); verifyNoMoreInteractions( versionDao, updateHelperPortalDb402, updateHelperRawEventsDb402, updateHelperRawEventsDb403); } @Test public void testPreUpdate403() { when(versionDao.getVersion("PortalDb")).thenReturn(VersionUtils.parseVersion("4.0.3")); when(versionDao.getVersion("RawEventsDb")).thenReturn(VersionUtils.parseVersion("4.0.3")); when(versionDao.getVersion("AggrEventsDb")).thenReturn(VersionUtils.parseVersion("4.0.3")); versionedDataUpdaterImpl.preUpdateDatabase("PortalDb"); versionedDataUpdaterImpl.preUpdateDatabase("RawEventsDb"); versionedDataUpdaterImpl.preUpdateDatabase("AggrEventsDb"); verify(versionDao).getVersion("PortalDb"); verify(versionDao).getVersion("RawEventsDb"); verify(versionDao).getVersion("AggrEventsDb"); verify(updateHelperPortalDb402).getDatabaseName(); verify(updateHelperPortalDb402).getVersion(); verify(updateHelperRawEventsDb402).getDatabaseName(); verify(updateHelperRawEventsDb402, times(2)).getVersion(); verify(updateHelperRawEventsDb403).getDatabaseName(); verify(updateHelperRawEventsDb403, times(2)).getVersion(); verify(updateHelperRawEventsDb403).preUpdate(); verifyNoMoreInteractions( versionDao, updateHelperPortalDb402, updateHelperRawEventsDb402, updateHelperRawEventsDb403); } @Test public void testPreUpdate404() { when(versionDao.getVersion("PortalDb")).thenReturn(VersionUtils.parseVersion("4.0.4")); when(versionDao.getVersion("RawEventsDb")).thenReturn(VersionUtils.parseVersion("4.0.4")); when(versionDao.getVersion("AggrEventsDb")).thenReturn(VersionUtils.parseVersion("4.0.4")); versionedDataUpdaterImpl.preUpdateDatabase("PortalDb"); versionedDataUpdaterImpl.preUpdateDatabase("RawEventsDb"); versionedDataUpdaterImpl.preUpdateDatabase("AggrEventsDb"); verify(versionDao).getVersion("PortalDb"); verify(versionDao).getVersion("RawEventsDb"); verify(versionDao).getVersion("AggrEventsDb"); verify(updateHelperPortalDb402).getDatabaseName(); verify(updateHelperPortalDb402).getVersion(); verify(updateHelperRawEventsDb402).getDatabaseName(); verify(updateHelperRawEventsDb402, times(2)).getVersion(); verify(updateHelperRawEventsDb403).getDatabaseName(); verify(updateHelperRawEventsDb403, times(2)).getVersion(); verifyNoMoreInteractions( versionDao, updateHelperPortalDb402, updateHelperRawEventsDb402, updateHelperRawEventsDb403); } @Test public void testPreUpdate406() { when(versionDao.getVersion("PortalDb")).thenReturn(VersionUtils.parseVersion("4.0.6")); when(versionDao.getVersion("RawEventsDb")).thenReturn(VersionUtils.parseVersion("4.0.6")); when(versionDao.getVersion("AggrEventsDb")).thenReturn(VersionUtils.parseVersion("4.0.6")); versionedDataUpdaterImpl.preUpdateDatabase("PortalDb"); versionedDataUpdaterImpl.preUpdateDatabase("RawEventsDb"); versionedDataUpdaterImpl.preUpdateDatabase("AggrEventsDb"); verify(versionDao).getVersion("PortalDb"); verify(versionDao).getVersion("RawEventsDb"); verify(versionDao).getVersion("AggrEventsDb"); verify(updateHelperPortalDb402).getDatabaseName(); verify(updateHelperPortalDb402).getVersion(); verify(updateHelperRawEventsDb402).getDatabaseName(); verify(updateHelperRawEventsDb402, times(2)).getVersion(); verify(updateHelperRawEventsDb403).getDatabaseName(); verify(updateHelperRawEventsDb403, times(2)).getVersion(); verifyNoMoreInteractions( versionDao, updateHelperPortalDb402, updateHelperRawEventsDb402, updateHelperRawEventsDb403); } @Test public void testPostUpdateReturnNull() { versionedDataUpdaterImpl.postUpdateDatabase("PortalDb"); versionedDataUpdaterImpl.postUpdateDatabase("RawEventsDb"); versionedDataUpdaterImpl.postUpdateDatabase("AggrEventsDb"); verify(versionDao).getVersion("PortalDb"); verify(versionDao).getVersion("RawEventsDb"); verify(versionDao).getVersion("AggrEventsDb"); verify(updateHelperPortalDb402).getDatabaseName(); verify(updateHelperPortalDb402).getVersion(); verify(updateHelperRawEventsDb402).getDatabaseName(); verify(updateHelperRawEventsDb402, times(2)).getVersion(); verify(updateHelperRawEventsDb403).getDatabaseName(); verify(updateHelperRawEventsDb403, times(2)).getVersion(); verify(updateHelperPortalDb402).postUpdate(); verify(updateHelperRawEventsDb402).postUpdate(); verify(updateHelperRawEventsDb403).postUpdate(); verify(versionDao).setVersion("PortalDb", VersionUtils.parseVersion("4.0.6")); verify(versionDao).setVersion("RawEventsDb", VersionUtils.parseVersion("4.0.6")); verify(versionDao).setVersion("AggrEventsDb", VersionUtils.parseVersion("4.0.6")); verifyNoMoreInteractions( versionDao, updateHelperPortalDb402, updateHelperRawEventsDb402, updateHelperRawEventsDb403); } @Test public void testPostUpdate402() { when(versionDao.getVersion("PortalDb")).thenReturn(VersionUtils.parseVersion("4.0.2")); when(versionDao.getVersion("RawEventsDb")).thenReturn(VersionUtils.parseVersion("4.0.2")); when(versionDao.getVersion("AggrEventsDb")).thenReturn(VersionUtils.parseVersion("4.0.2")); versionedDataUpdaterImpl.postUpdateDatabase("PortalDb"); versionedDataUpdaterImpl.postUpdateDatabase("RawEventsDb"); versionedDataUpdaterImpl.postUpdateDatabase("AggrEventsDb"); verify(versionDao).getVersion("PortalDb"); verify(versionDao).getVersion("RawEventsDb"); verify(versionDao).getVersion("AggrEventsDb"); verify(updateHelperPortalDb402).getDatabaseName(); verify(updateHelperPortalDb402).getVersion(); verify(updateHelperRawEventsDb402).getDatabaseName(); verify(updateHelperRawEventsDb402, times(2)).getVersion(); verify(updateHelperRawEventsDb403).getDatabaseName(); verify(updateHelperRawEventsDb403, times(2)).getVersion(); verify(updateHelperPortalDb402).postUpdate(); verify(updateHelperRawEventsDb402).postUpdate(); verify(updateHelperRawEventsDb403).postUpdate(); verify(versionDao).setVersion("PortalDb", VersionUtils.parseVersion("4.0.6")); verify(versionDao).setVersion("RawEventsDb", VersionUtils.parseVersion("4.0.6")); verify(versionDao).setVersion("AggrEventsDb", VersionUtils.parseVersion("4.0.6")); verifyNoMoreInteractions( versionDao, updateHelperPortalDb402, updateHelperRawEventsDb402, updateHelperRawEventsDb403); } @Test public void testPostUpdate403() { when(versionDao.getVersion("PortalDb")).thenReturn(VersionUtils.parseVersion("4.0.3")); when(versionDao.getVersion("RawEventsDb")).thenReturn(VersionUtils.parseVersion("4.0.3")); when(versionDao.getVersion("AggrEventsDb")).thenReturn(VersionUtils.parseVersion("4.0.3")); versionedDataUpdaterImpl.postUpdateDatabase("PortalDb"); versionedDataUpdaterImpl.postUpdateDatabase("RawEventsDb"); versionedDataUpdaterImpl.postUpdateDatabase("AggrEventsDb"); verify(versionDao).getVersion("PortalDb"); verify(versionDao).getVersion("RawEventsDb"); verify(versionDao).getVersion("AggrEventsDb"); verify(updateHelperPortalDb402).getDatabaseName(); verify(updateHelperPortalDb402).getVersion(); verify(updateHelperRawEventsDb402).getDatabaseName(); verify(updateHelperRawEventsDb402, times(2)).getVersion(); verify(updateHelperRawEventsDb403).getDatabaseName(); verify(updateHelperRawEventsDb403, times(2)).getVersion(); verify(updateHelperRawEventsDb403).postUpdate(); verify(versionDao).setVersion("PortalDb", VersionUtils.parseVersion("4.0.6")); verify(versionDao).setVersion("RawEventsDb", VersionUtils.parseVersion("4.0.6")); verify(versionDao).setVersion("AggrEventsDb", VersionUtils.parseVersion("4.0.6")); verifyNoMoreInteractions( versionDao, updateHelperPortalDb402, updateHelperRawEventsDb402, updateHelperRawEventsDb403); } @Test public void testPostUpdate404() { when(versionDao.getVersion("PortalDb")).thenReturn(VersionUtils.parseVersion("4.0.4")); when(versionDao.getVersion("RawEventsDb")).thenReturn(VersionUtils.parseVersion("4.0.4")); when(versionDao.getVersion("AggrEventsDb")).thenReturn(VersionUtils.parseVersion("4.0.4")); versionedDataUpdaterImpl.postUpdateDatabase("PortalDb"); versionedDataUpdaterImpl.postUpdateDatabase("RawEventsDb"); versionedDataUpdaterImpl.postUpdateDatabase("AggrEventsDb"); verify(versionDao).getVersion("PortalDb"); verify(versionDao).getVersion("RawEventsDb"); verify(versionDao).getVersion("AggrEventsDb"); verify(updateHelperPortalDb402).getDatabaseName(); verify(updateHelperPortalDb402).getVersion(); verify(updateHelperRawEventsDb402).getDatabaseName(); verify(updateHelperRawEventsDb402, times(2)).getVersion(); verify(updateHelperRawEventsDb403).getDatabaseName(); verify(updateHelperRawEventsDb403, times(2)).getVersion(); verify(versionDao).setVersion("PortalDb", VersionUtils.parseVersion("4.0.6")); verify(versionDao).setVersion("RawEventsDb", VersionUtils.parseVersion("4.0.6")); verify(versionDao).setVersion("AggrEventsDb", VersionUtils.parseVersion("4.0.6")); verifyNoMoreInteractions( versionDao, updateHelperPortalDb402, updateHelperRawEventsDb402, updateHelperRawEventsDb403); } @Test public void testPostUpdate406() { when(versionDao.getVersion("PortalDb")).thenReturn(VersionUtils.parseVersion("4.0.6")); when(versionDao.getVersion("RawEventsDb")).thenReturn(VersionUtils.parseVersion("4.0.6")); when(versionDao.getVersion("AggrEventsDb")).thenReturn(VersionUtils.parseVersion("4.0.6")); versionedDataUpdaterImpl.postUpdateDatabase("PortalDb"); versionedDataUpdaterImpl.postUpdateDatabase("RawEventsDb"); versionedDataUpdaterImpl.postUpdateDatabase("AggrEventsDb"); verify(versionDao).getVersion("PortalDb"); verify(versionDao).getVersion("RawEventsDb"); verify(versionDao).getVersion("AggrEventsDb"); verify(updateHelperPortalDb402).getDatabaseName(); verify(updateHelperPortalDb402).getVersion(); verify(updateHelperRawEventsDb402).getDatabaseName(); verify(updateHelperRawEventsDb402, times(2)).getVersion(); verify(updateHelperRawEventsDb403).getDatabaseName(); verify(updateHelperRawEventsDb403, times(2)).getVersion(); verify(versionDao).setVersion("PortalDb", VersionUtils.parseVersion("4.0.6")); verify(versionDao).setVersion("RawEventsDb", VersionUtils.parseVersion("4.0.6")); verify(versionDao).setVersion("AggrEventsDb", VersionUtils.parseVersion("4.0.6")); verifyNoMoreInteractions( versionDao, updateHelperPortalDb402, updateHelperRawEventsDb402, updateHelperRawEventsDb403); } }