/* * Copyright 2014-2016 CyberVision, Inc. * * 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.kaaproject.kaa.server.common.dao.impl.sql; import org.junit.Assert; import org.junit.Test; import org.junit.runner.RunWith; import org.kaaproject.kaa.common.dto.ServerProfileSchemaDto; import org.kaaproject.kaa.common.dto.UpdateStatus; import org.kaaproject.kaa.server.common.dao.model.sql.Application; import org.kaaproject.kaa.server.common.dao.model.sql.EndpointGroup; import org.kaaproject.kaa.server.common.dao.model.sql.EndpointProfileSchema; import org.kaaproject.kaa.server.common.dao.model.sql.ProfileFilter; import org.kaaproject.kaa.server.common.dao.model.sql.ServerProfileSchema; import org.springframework.test.annotation.DirtiesContext; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import java.util.ArrayList; import java.util.List; import javax.transaction.Transactional; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = "/common-dao-test-context.xml") @DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_CLASS) @Transactional public class HibernateProfileFilterDaoTest extends HibernateAbstractTest { @Test public void findActualByEndpointGroupId() { List<ProfileFilter> filters = generateFilter(null, null, null, 4, UpdateStatus.DEPRECATED); ProfileFilter first = filters.get(0); EndpointGroup group = first.getEndpointGroup(); List<ProfileFilter> active = generateFilter(null, null, group, 1, UpdateStatus.ACTIVE); List<ProfileFilter> inactive = generateFilter(null, null, group, 1, UpdateStatus.INACTIVE); List<ProfileFilter> actual = new ArrayList<>(); actual.addAll(active); actual.addAll(inactive); List<ProfileFilter> found = profileFilterDao.findActualByEndpointGroupId(group.getId().toString()); Assert.assertEquals(actual.size(), found.size()); Assert.assertEquals(actual, found); } @Test public void findActualBySchemaIdAndGroupId() { List<ProfileFilter> filters = generateFilter(null, null, null, 4, UpdateStatus.DEPRECATED); ProfileFilter first = filters.get(0); EndpointGroup group = first.getEndpointGroup(); EndpointProfileSchema schema = first.getEndpointProfileSchema(); ServerProfileSchema server = first.getServerProfileSchema(); List<ProfileFilter> active = generateFilter(schema, server, group, 1, UpdateStatus.ACTIVE); generateConfiguration(null, group, 1, UpdateStatus.ACTIVE); List<ProfileFilter> inactive = generateFilter(schema, server, group, 1, UpdateStatus.INACTIVE); List<ProfileFilter> actual = new ArrayList<>(); actual.addAll(active); actual.addAll(inactive); List<ProfileFilter> found = profileFilterDao.findActualBySchemaIdAndGroupId(schema.getStringId(), server.getStringId(), group.getStringId()); Assert.assertEquals(actual.size(), found.size()); Assert.assertEquals(actual, found); } @Test public void findActualBySchemaIdAndGroupIdWithNullServerSchema() { EndpointProfileSchema ps = generateProfSchema(null, 1).get(0); List<ProfileFilter> filters = generateFilterWithoutSchemaGeneration(ps, null, null, 1, UpdateStatus.ACTIVE); ProfileFilter first = filters.get(0); EndpointGroup group = first.getEndpointGroup(); EndpointProfileSchema schema = first.getEndpointProfileSchema(); List<ProfileFilter> found = profileFilterDao.findActualBySchemaIdAndGroupId(schema.getStringId(), null, group.getStringId()); Assert.assertFalse(found.isEmpty()); } @Test public void findActualBySchemaIdAndGroupIdWithNullEndpointSchema() { ServerProfileSchemaDto ss = generateServerProfileSchema(null, null); List<ProfileFilter> filters = generateFilterWithoutSchemaGeneration(null, serverProfileSchemaDao.findById(ss.getId()), null, 1, UpdateStatus.ACTIVE); ProfileFilter first = filters.get(0); EndpointGroup group = first.getEndpointGroup(); ServerProfileSchema srv = first.getServerProfileSchema(); List<ProfileFilter> found = profileFilterDao.findActualBySchemaIdAndGroupId(null, srv.getStringId(), group.getStringId()); Assert.assertFalse(found.isEmpty()); } @Test public void findLatestDeprecated() { List<ProfileFilter> filters = generateFilter(null, null, null, 10, UpdateStatus.DEPRECATED); Assert.assertEquals(10, filters.size()); ProfileFilter first = filters.get(0); EndpointGroup group = first.getEndpointGroup(); EndpointProfileSchema schema = first.getEndpointProfileSchema(); ServerProfileSchema server = first.getServerProfileSchema(); ProfileFilter deprecated = profileFilterDao.findLatestDeprecated(schema.getStringId(), server.getStringId(), group.getStringId()); Assert.assertEquals(UpdateStatus.DEPRECATED, deprecated.getStatus()); Assert.assertEquals(9, deprecated.getSequenceNumber()); } @Test public void findByAppIdAndSchemaVersion() { Application app = generateApplication(null); EndpointProfileSchema schema = generateProfSchema(app, 1).get(0); ServerProfileSchemaDto srvSchema = generateServerProfileSchema(app.getStringId(), app.getTenant().getStringId(), 101); generateFilter(schema, new ServerProfileSchema(srvSchema), null, 2, UpdateStatus.ACTIVE); List<ProfileFilter> filters = generateFilterWithoutSchemaGeneration(schema, new ServerProfileSchema(srvSchema), null, 1, UpdateStatus.ACTIVE); filters.addAll(generateFilterWithoutSchemaGeneration(null, new ServerProfileSchema(srvSchema), null, 1, UpdateStatus.ACTIVE)); filters.addAll(generateFilterWithoutSchemaGeneration(schema, null, null, 1, UpdateStatus.ACTIVE)); List<ProfileFilter> found = profileFilterDao.findByAppIdAndSchemaVersionsCombination(app.getStringId(), schema.getVersion(), srvSchema.getVersion()); Assert.assertEquals(filters, found); } @Test public void findInactiveFilter() { List<ProfileFilter> filters = generateFilter(null, null, null, 1, UpdateStatus.ACTIVE); Assert.assertEquals(1, filters.size()); ProfileFilter first = filters.get(0); EndpointGroup group = first.getEndpointGroup(); EndpointProfileSchema schema = first.getEndpointProfileSchema(); ServerProfileSchema server = first.getServerProfileSchema(); List<ProfileFilter> inactiveConfigs = generateFilter(schema, server, group, 1, UpdateStatus.INACTIVE); generateFilter(schema, server, group, 3, UpdateStatus.DEPRECATED); ProfileFilter found = profileFilterDao.findInactiveFilter(schema.getStringId(), server.getStringId(), group.getStringId()); Assert.assertEquals(inactiveConfigs.get(0), found); } @Test public void findLatestFilter() { List<ProfileFilter> filters = generateFilter(null, null, null, 1, UpdateStatus.ACTIVE); Assert.assertEquals(1, filters.size()); ProfileFilter first = filters.get(0); EndpointGroup group = first.getEndpointGroup(); EndpointProfileSchema schema = first.getEndpointProfileSchema(); ServerProfileSchema server = first.getServerProfileSchema(); generateFilter(schema, server, group, 3, UpdateStatus.DEPRECATED); generateFilter(schema, server, group, 1, UpdateStatus.INACTIVE); ProfileFilter found = profileFilterDao.findLatestFilter(schema.getStringId(), server.getStringId(), group.getStringId()); Assert.assertEquals(first, found); } @Test public void activate() { List<ProfileFilter> filters = generateFilter(null, null, null, 1, null); Assert.assertEquals(1, filters.size()); ProfileFilter first = filters.get(0); ProfileFilter activated = profileFilterDao.activate(first.getId().toString(), "Test user"); ProfileFilter found = profileFilterDao.findById(first.getId().toString()); Assert.assertEquals(UpdateStatus.ACTIVE, activated.getStatus()); Assert.assertEquals(activated, found); } @Test public void deactivate() { List<ProfileFilter> filters = generateFilter(null, null, null, 1, UpdateStatus.ACTIVE); Assert.assertEquals(1, filters.size()); ProfileFilter first = filters.get(0); Assert.assertEquals(UpdateStatus.ACTIVE, first.getStatus()); ProfileFilter deactivated = profileFilterDao.deactivate(first.getId().toString(), "Test user"); ProfileFilter found = profileFilterDao.findById(first.getId().toString()); Assert.assertEquals(UpdateStatus.DEPRECATED, deactivated.getStatus()); Assert.assertEquals(deactivated, found); } @Test public void deactivateOldFilter() { List<ProfileFilter> filters = generateFilter(null, null, null, 1, UpdateStatus.ACTIVE); Assert.assertEquals(1, filters.size()); ProfileFilter first = filters.get(0); EndpointProfileSchema schema = first.getEndpointProfileSchema(); ServerProfileSchema server = first.getServerProfileSchema(); EndpointGroup group = first.getEndpointGroup(); Assert.assertEquals(UpdateStatus.ACTIVE, first.getStatus()); ProfileFilter deactivated = profileFilterDao.deactivateOldFilter(schema.getStringId(), server.getStringId(), group.getStringId(), "Test user"); ProfileFilter found = profileFilterDao.findById(first.getId().toString()); Assert.assertEquals(UpdateStatus.DEPRECATED, deactivated.getStatus()); Assert.assertEquals(deactivated, found); } @Test public void findActiveFilterCount() { List<ProfileFilter> filters = generateFilter(null, null, null, 1, UpdateStatus.ACTIVE); Assert.assertEquals(1, filters.size()); ProfileFilter first = filters.get(0); EndpointGroup group = first.getEndpointGroup(); EndpointProfileSchema schema = first.getEndpointProfileSchema(); ServerProfileSchema server = first.getServerProfileSchema(); generateFilter(schema, server, group, 3, UpdateStatus.DEPRECATED); generateFilter(schema, server, group, 1, UpdateStatus.ACTIVE); long count = profileFilterDao.findActiveFilterCount(schema.getStringId(), server.getStringId(), group.getStringId()); Assert.assertEquals(2, count); } }