blob: b2131c537799fc998b3bde43db6ad002032eea64 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF 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
*
* 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.syncope.fit.console;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import java.lang.reflect.InvocationTargetException;
import org.apache.syncope.client.ui.commons.Constants;
import org.apache.syncope.client.console.pages.Logs;
import org.apache.syncope.common.lib.log.LoggerTO;
import org.apache.wicket.Component;
import org.apache.wicket.ajax.markup.html.AjaxFallbackLink;
import org.apache.wicket.core.util.lang.PropertyResolver;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.form.DropDownChoice;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.list.ListItem;
import org.apache.wicket.util.visit.IVisit;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
public class LogsITCase extends AbstractConsoleITCase {
private static final String CONTAINER_PATH = "body:content:tabbedPanel:panel:loggerContainer";
@BeforeEach
public void login() {
doLogin(ADMIN_UNAME, ADMIN_PWD);
TESTER.clickLink("body:configurationLI:configurationUL:logsLI:logs", false);
TESTER.assertRenderedPage(Logs.class);
}
@Test
public void readCoreLogs() {
TESTER.clickLink("body:content:tabbedPanel:tabs-container:tabs:0:link");
TESTER.assertComponent(CONTAINER_PATH, WebMarkupContainer.class);
assertNotNull(searchLog(KEY, CONTAINER_PATH, "io.swagger"));
}
@Test
public void updateCoreLogs() {
TESTER.clickLink("body:content:tabbedPanel:tabs-container:tabs:0:link");
TESTER.assertComponent(CONTAINER_PATH, WebMarkupContainer.class);
Component result = searchLog(KEY, CONTAINER_PATH, "io.swagger");
assertNotNull(result);
TESTER.getRequest().setMethod(Form.METHOD_GET);
TESTER.getRequest().addParameter(
result.getPageRelativePath() + ":fields:1:field:dropDownChoiceField", "6");
TESTER.assertComponent(
result.getPageRelativePath() + ":fields:1:field:dropDownChoiceField", DropDownChoice.class);
TESTER.executeAjaxEvent(
result.getPageRelativePath() + ":fields:1:field:dropDownChoiceField", Constants.ON_CHANGE);
assertSuccessMessage();
}
@Test
public void readConsoleLogs() {
TESTER.assertComponent("body:content:tabbedPanel:tabs-container:tabs:1:link", AjaxFallbackLink.class);
TESTER.clickLink("body:content:tabbedPanel:tabs-container:tabs:1:link");
TESTER.assertComponent(CONTAINER_PATH, WebMarkupContainer.class);
assertNotNull(searchLog(KEY, CONTAINER_PATH, "org.apache.wicket"));
}
@Test
public void updateConsoleLogs() {
TESTER.clickLink("body:content:tabbedPanel:tabs-container:tabs:1:link");
TESTER.assertComponent(CONTAINER_PATH, WebMarkupContainer.class);
Component result = searchLog(KEY, CONTAINER_PATH, "org.apache.wicket");
assertNotNull(result);
TESTER.getRequest().setMethod(Form.METHOD_GET);
TESTER.getRequest().addParameter(
result.getPageRelativePath() + ":fields:1:field:dropDownChoiceField", "6");
TESTER.assertComponent(
result.getPageRelativePath() + ":fields:1:field:dropDownChoiceField", DropDownChoice.class);
TESTER.executeAjaxEvent(
result.getPageRelativePath() + ":fields:1:field:dropDownChoiceField", Constants.ON_CHANGE);
assertSuccessMessage();
}
private static Component searchLog(final String property, final String searchPath, final String key) {
Component component = TESTER.getComponentFromLastRenderedPage(searchPath);
Component result = component.getPage().
visitChildren(ListItem.class, (final ListItem<LoggerTO> object, final IVisit<Component> visit) -> {
try {
if (object.getModelObject() instanceof LoggerTO && PropertyResolver.getPropertyGetter(
property, object.getModelObject()).invoke(object.getModelObject()).equals(key)) {
visit.stop(object);
}
} catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException ex) {
LOG.error("Error invoke method", ex);
}
});
return result;
}
}