/*
* JBoss, Home of Professional Open Source
* Copyright 2014, JBoss Inc., and individual contributors as indicated
* by the @authors tag.
*
* 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.jboss.as.test.integration.auditlog;
import static org.jboss.as.controller.descriptions.ModelDescriptionConstants.OUTCOME;
import static org.jboss.as.controller.descriptions.ModelDescriptionConstants.READ_RESOURCE_OPERATION;
import static org.jboss.as.controller.descriptions.ModelDescriptionConstants.SUCCESS;
import java.io.File;
import javax.inject.Inject;
import org.jboss.as.controller.PathAddress;
import org.jboss.as.controller.client.ModelControllerClient;
import org.jboss.as.controller.operations.common.Util;
import org.jboss.as.domain.management.CoreManagementResourceDefinition;
import org.jboss.as.domain.management.audit.AccessAuditResourceDefinition;
import org.jboss.as.domain.management.audit.AuditLogLoggerResourceDefinition;
import org.jboss.dmr.ModelNode;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.wildfly.core.testrunner.ManagementClient;
import org.wildfly.core.testrunner.WildflyTestRunner;
/**
* The actual contents of what is being logged is tested in
* org.jboss.as.domain.management.security.auditlog.AuditLogHandlerTestCase.
* This test does some simple checks to make sure that audit logging kicks in in a
* standalone instance.
*
* @author Kabir Khan
*/
@RunWith(WildflyTestRunner.class)
//@RunAsClient
public class AuditLogTestCase {
@Inject
protected ManagementClient managementClient;
@Test
public void testEnableAndDisableCoreAuditLog() throws Exception {
File file = new File(System.getProperty("jboss.home"));
file = new File(file, "standalone");
file = new File(file, "data");
file = new File(file, "audit-log.log");
if (file.exists()){
file.delete();
}
ModelControllerClient client = managementClient.getControllerClient();
ModelNode op = Util.createOperation(READ_RESOURCE_OPERATION, PathAddress.EMPTY_ADDRESS);
ModelNode result = client.execute(op);
Assert.assertEquals(SUCCESS, result.get(OUTCOME).asString());
Assert.assertFalse(file.exists());
PathAddress auditLogConfigAddress = PathAddress.pathAddress(
CoreManagementResourceDefinition.PATH_ELEMENT,
AccessAuditResourceDefinition.PATH_ELEMENT,
AuditLogLoggerResourceDefinition.PATH_ELEMENT);
//Enable audit logging and read only operations
op = Util.getWriteAttributeOperation(
auditLogConfigAddress,
AuditLogLoggerResourceDefinition.LOG_READ_ONLY.getName(),
new ModelNode(true));
result = client.execute(op);
Assert.assertEquals(SUCCESS, result.get(OUTCOME).asString());
op = Util.getWriteAttributeOperation(
auditLogConfigAddress,
AuditLogLoggerResourceDefinition.ENABLED.getName(),
new ModelNode(true));
result = client.execute(op);
Assert.assertEquals(SUCCESS, result.get(OUTCOME).asString());
Assert.assertTrue(file.exists());
try {
file.delete();
op = Util.createOperation(READ_RESOURCE_OPERATION, PathAddress.EMPTY_ADDRESS);
result = client.execute(op);
Assert.assertEquals(SUCCESS, result.get(OUTCOME).asString());
Assert.assertTrue(file.exists());
} finally {
file.delete();
//Disable audit logging again
op = Util.getWriteAttributeOperation(
auditLogConfigAddress,
AuditLogLoggerResourceDefinition.ENABLED.getName(),
new ModelNode(false));
result = client.execute(op);
Assert.assertEquals(SUCCESS, result.get(OUTCOME).asString());
Assert.assertTrue(file.exists());
file.delete();
op = Util.createOperation(READ_RESOURCE_OPERATION, PathAddress.EMPTY_ADDRESS);
result = client.execute(op);
Assert.assertEquals(SUCCESS, result.get(OUTCOME).asString());
Assert.assertFalse(file.exists());
}
}
}