blob: b7cd69cec13ca3d26f16090307bd1de9d8374405 [file] [log] [blame]
/*
* Copyright 2001-2005 The Apache Software Foundation.
*
* 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.apache.logging.log4j.catalog.jpa;
import org.apache.logging.log4j.catalog.api.CatalogData;
import org.apache.logging.log4j.catalog.api.DataType;
import org.apache.logging.log4j.catalog.jpa.config.ApplicationConfiguration;
import org.apache.logging.log4j.catalog.jpa.dao.AttributeRepository;
import org.apache.logging.log4j.catalog.jpa.dao.CategoryRepository;
import org.apache.logging.log4j.catalog.jpa.dao.EventRepository;
import org.apache.logging.log4j.catalog.jpa.model.AttributeModel;
import org.apache.logging.log4j.catalog.jpa.model.EventAttributeModel;
import org.apache.logging.log4j.catalog.jpa.model.EventModel;
import org.apache.logging.log4j.catalog.jpa.service.CatalogService;
import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.jdbc.Sql;
import org.springframework.test.context.jdbc.SqlGroup;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.support.AnnotationConfigContextLoader;
import java.util.List;
import java.util.Optional;
import static org.junit.Assert.*;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(loader = AnnotationConfigContextLoader.class, classes = {ApplicationConfiguration.class})
@SqlGroup({
@Sql(executionPhase = Sql.ExecutionPhase.BEFORE_TEST_METHOD, scripts = "classpath:sql/hsql/beforeTestRun.sql"),
@Sql(executionPhase = Sql.ExecutionPhase.AFTER_TEST_METHOD, scripts = "classpath:sql/hsql/afterTestRun.sql")
})
@Repository
public class CatalogTest {
@Autowired
AttributeRepository attributeRepository;
@Autowired
CategoryRepository categoryRepository;
@Autowired
EventRepository eventRepository;
@Autowired
private CatalogService catalogService;
@BeforeClass
public static void initTest() {
System.setProperty("environment", "lab");
System.setProperty("site", "dev1");
System.setProperty("applicationName", "CatalogService");
System.setProperty("spring.profiles.active", "eclipseLink");
}
@Test
public void testRetrieveEvents() {
List<EventModel> events = eventRepository.findAll();
assertNotNull(events);
assertFalse(events.isEmpty());
assertEquals(4, events.size());
}
@Test
public void testRetrieveEvent() {
Optional<EventModel> optEvent = eventRepository.findOne(1L);
assertTrue(optEvent.isPresent());
EventModel event = optEvent.get();
assertNotNull(event);
assertEquals("login", event.getName());
}
@Test
public void testAddAndUpdateEvent() {
EventModel event = new EventModel();
event.setName("test" + System.nanoTime());
event.setDisplayName("Test -- " + System.nanoTime());
event.setDescription("foo");
AttributeModel attr = new AttributeModel();
attr.setName("Attr1 -- " + System.nanoTime());
attr.setDisplayName("Attribute #1 -- " + System.nanoTime());
attr.setDescription("Test Attribute");
attr.setDataType(DataType.BOOLEAN);
attr.setIndexed(true);
attr.setRequestContext(true);
attr.setRequired(true);
attr.setSortable(true);
attr = attributeRepository.save(attr);
AttributeModel attr2 = new AttributeModel();
attr2.setName("Attr2 -- " + System.nanoTime());
attr2.setDisplayName("Attribute #2 -- " + System.nanoTime());
attr2.setDescription("Test Attribute Number 2");
attr2.setDataType(DataType.BOOLEAN);
attr2.setIndexed(false);
attr2.setRequestContext(false);
attr2.setRequired(false);
attr2.setSortable(false);
attr2 = attributeRepository.save(attr2);
EventAttributeModel eventAttribute = new EventAttributeModel();
eventAttribute.setAttribute(attr);
eventAttribute.setEvent(event);
eventAttribute.setRequired(true);
event.addEventAttribute(eventAttribute);
EventModel persisted = null;
try {
persisted = eventRepository.save(event);
} catch (Exception ex) {
ex.printStackTrace();
fail();
}
assertNotNull(persisted);
assertNotNull(persisted.getId());
assertEquals(event, persisted);
assertNotNull(persisted.getAttributes());
assertFalse(persisted.getAttributes().isEmpty());
assertEquals(event.getAttributes().size(), persisted.getAttributes().size());
eventAttribute = new EventAttributeModel();
eventAttribute.setAttribute(attr2);
eventAttribute.setEvent(persisted);
eventAttribute.setRequired(false);
persisted.addEventAttribute(eventAttribute);
Long id = persisted.getId();
try {
persisted = eventRepository.save(event);
} catch (Throwable ex) {
ex.printStackTrace();
fail();
}
assertNotNull(persisted);
assertNotNull(persisted.getId());
assertEquals(persisted.getId(), id);
assertNotNull(persisted.getAttributes());
assertFalse(persisted.getAttributes().isEmpty());
assertEquals(event.getAttributes().size(), persisted.getAttributes().size());
}
@Test
public void testModifyEvent() {
}
@Test
public void testDeleteEvent() {
}
@Test
public void testRetrieveAttributes() {
List<AttributeModel> attributes = attributeRepository.findAll();
assertNotNull(attributes);
assertFalse(attributes.isEmpty());
assertEquals(10, attributes.size());
}
@Test
public void testRetrieveAttribute() {
Optional<AttributeModel> optAttr = attributeRepository.findOne(1L);
assertTrue(optAttr.isPresent());
AttributeModel attr = optAttr.get();
assertNotNull(attr);
assertEquals("accountNumber", attr.getName());
}
@Test
public void testAddAttribute() {
}
@Test
public void testModifyAttribute() {
}
@Test
public void testDeleteAttribute() {
}
@Test
public void testRetrieveCatalog() {
CatalogData data = catalogService.getCatalogData();
assertNotNull("No catalog data was returned", data);
assertEquals("Incorrect number of products", 1, data.getProducts().size());
assertEquals("Incorrect number of events", 4, data.getEvents().size());
assertEquals("Incorrect number of attributes", 10, data.getAttributes().size());
assertEquals("Incorrect number of categories", 2, data.getCategories().size());
}
}