/** * Copyright (c) 2000-present Liferay, Inc. All rights reserved. * * This library is free software; you can redistribute it and/or modify it under * the terms of the GNU Lesser General Public License as published by the Free * Software Foundation; either version 2.1 of the License, or (at your option) * any later version. * * This library is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more * details. */ package com.liferay.calendar.upgrade.v1_0_5.test; import com.liferay.arquillian.extension.junit.bridge.junit.Arquillian; import com.liferay.calendar.model.CalendarResource; import com.liferay.calendar.service.CalendarResourceLocalServiceUtil; import com.liferay.calendar.util.CalendarResourceUtil; import com.liferay.portal.kernel.dao.jdbc.DataAccess; import com.liferay.portal.kernel.exception.PortalException; import com.liferay.portal.kernel.model.Group; import com.liferay.portal.kernel.model.Role; import com.liferay.portal.kernel.model.RoleConstants; import com.liferay.portal.kernel.model.User; import com.liferay.portal.kernel.service.RoleLocalServiceUtil; import com.liferay.portal.kernel.service.ServiceContext; import com.liferay.portal.kernel.service.UserLocalServiceUtil; import com.liferay.portal.kernel.test.rule.DeleteAfterTestRun; import com.liferay.portal.kernel.test.util.GroupTestUtil; import com.liferay.portal.kernel.upgrade.UpgradeProcess; import com.liferay.portal.kernel.upgrade.UpgradeStep; import com.liferay.portal.upgrade.registry.UpgradeStepRegistrator; import com.liferay.registry.Registry; import com.liferay.registry.RegistryUtil; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; /** * @author Adam Brandizzi */ @RunWith(Arquillian.class) public class UpgradeCalendarResourceTest { @Before public void setUp() throws Exception { _group = GroupTestUtil.addGroup(); setUpUpgradeCalendarResource(); } @Test public void testUpgradeCalendarResourceUserId() throws Exception { CalendarResource calendarResource = getDefaultUserCalendarResource(); long userId = calendarResource.getUserId(); assertUserIsDefault(userId); _upgradeCalendarResource.upgrade(); userId = getCalendarResourceUserId(calendarResource); assertUserIsAdministrator(userId); } protected void assertUserIsAdministrator(long userId) throws PortalException { User user = UserLocalServiceUtil.getUser(userId); Assert.assertFalse(user.isDefaultUser()); Role administratorRole = RoleLocalServiceUtil.getRole( _group.getCompanyId(), RoleConstants.ADMINISTRATOR); Assert.assertTrue( RoleLocalServiceUtil.hasUserRole( user.getUserId(), administratorRole.getRoleId())); } protected void assertUserIsDefault(long userId) throws PortalException { User user = UserLocalServiceUtil.getUser(userId); Assert.assertTrue(user.isDefaultUser()); } protected long getCalendarResourceUserId(CalendarResource calendarResource) throws SQLException { try (Connection con = DataAccess.getUpgradeOptimizedConnection()) { PreparedStatement ps = con.prepareStatement( "select userId from CalendarResource where " + "calendarResourceId = ?"); ps.setLong(1, calendarResource.getCalendarResourceId()); ResultSet rs = ps.executeQuery(); rs.next(); return rs.getLong(1); } } protected CalendarResource getDefaultUserCalendarResource() throws PortalException { ServiceContext serviceContext = new ServiceContext(); CalendarResource calendarResource = CalendarResourceUtil.getGroupCalendarResource( _group.getGroupId(), serviceContext); long defaultUserId = UserLocalServiceUtil.getDefaultUserId( _group.getCompanyId()); calendarResource.setUserId(defaultUserId); return CalendarResourceLocalServiceUtil.updateCalendarResource( calendarResource); } protected void setUpUpgradeCalendarResource() { Registry registry = RegistryUtil.getRegistry(); UpgradeStepRegistrator upgradeStepRegistror = registry.getService( "com.liferay.calendar.internal.upgrade.CalendarServiceUpgrade"); upgradeStepRegistror.register( new UpgradeStepRegistrator.Registry() { @Override public void register( String bundleSymbolicName, String fromSchemaVersionString, String toSchemaVersionString, UpgradeStep... upgradeSteps) { for (UpgradeStep upgradeStep : upgradeSteps) { Class<?> clazz = upgradeStep.getClass(); String className = clazz.getName(); if (className.contains("UpgradeCalendarResource")) { _upgradeCalendarResource = (UpgradeProcess)upgradeStep; } } } }); } @DeleteAfterTestRun private Group _group; private UpgradeProcess _upgradeCalendarResource; }