/*
* 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.ambari.server.audit.request.creator;
import java.util.Collection;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.apache.ambari.server.api.query.Query;
import org.apache.ambari.server.api.query.render.Renderer;
import org.apache.ambari.server.api.resources.ResourceDefinition;
import org.apache.ambari.server.api.resources.ResourceInstance;
import org.apache.ambari.server.api.resources.SubResourceDefinition;
import org.apache.ambari.server.api.services.NamedPropertySet;
import org.apache.ambari.server.api.services.Request;
import org.apache.ambari.server.api.services.RequestBody;
import org.apache.ambari.server.api.services.Result;
import org.apache.ambari.server.api.services.ResultMetadata;
import org.apache.ambari.server.api.services.ResultStatus;
import org.apache.ambari.server.api.util.TreeNode;
import org.apache.ambari.server.audit.AuditLogger;
import org.apache.ambari.server.audit.event.AuditEvent;
import org.apache.ambari.server.audit.request.RequestAuditLogger;
import org.apache.ambari.server.audit.request.RequestAuditLoggerImpl;
import org.apache.ambari.server.audit.request.eventcreator.RequestAuditEventCreator;
import org.apache.ambari.server.controller.spi.PageRequest;
import org.apache.ambari.server.controller.spi.Predicate;
import org.apache.ambari.server.controller.spi.Resource;
import org.apache.ambari.server.controller.spi.SortRequest;
import org.apache.ambari.server.controller.spi.TemporalInfo;
import org.easymock.Capture;
import org.easymock.EasyMock;
public class AuditEventCreatorTestHelper {
public static AuditEvent getEvent(RequestAuditEventCreator eventCreator, Request request, Result result) {
Set<RequestAuditEventCreator> creatorSet = new HashSet<>();
creatorSet.add(eventCreator);
AuditLogger auditLogger = EasyMock.createNiceMock(AuditLogger.class);
EasyMock.expect(auditLogger.isEnabled()).andReturn(true).anyTimes();
Capture<AuditEvent> capture = EasyMock.newCapture();
auditLogger.log(EasyMock.capture(capture));
EasyMock.expectLastCall();
EasyMock.replay(auditLogger);
RequestAuditLogger requestAuditLogger = new RequestAuditLoggerImpl(auditLogger, creatorSet);
requestAuditLogger.log(request, result);
return capture.getValue();
}
public static Request createRequest(final Request.Type requestType, final Resource.Type resourceType, final Map<String,Object> properties, final Map<Resource.Type, String> resource) {
return createRequest(requestType, resourceType, properties, resource, "");
}
public static Request createRequest(final Request.Type requestType, final Resource.Type resourceType, final Map<String,Object> properties, final Map<Resource.Type, String> resource, final String queryString) {
return new Request() {
RequestBody body = new RequestBody();
@Override
public Result process() {
return null;
}
@Override
public ResourceInstance getResource() {
return new ResourceInstance() {
@Override
public void setKeyValueMap(Map<Resource.Type, String> keyValueMap) {
}
@Override
public Map<Resource.Type, String> getKeyValueMap() {
return resource;
}
@Override
public Query getQuery() {
return null;
}
@Override
public ResourceDefinition getResourceDefinition() {
return new ResourceDefinition() {
@Override
public String getPluralName() {
return null;
}
@Override
public String getSingularName() {
return null;
}
@Override
public Resource.Type getType() {
return resourceType;
}
@Override
public Set<SubResourceDefinition> getSubResourceDefinitions() {
return null;
}
@Override
public List<PostProcessor> getPostProcessors() {
return null;
}
@Override
public Renderer getRenderer(String name) throws IllegalArgumentException {
return null;
}
@Override
public Collection<String> getCreateDirectives() {
return null;
}
@Override
public Collection<String> getReadDirectives() {
return null;
}
@Override
public boolean isCreatable() {
return false;
}
@Override
public Collection<String> getUpdateDirectives() {
return null;
}
@Override
public Collection<String> getDeleteDirectives() {
return null;
}
};
}
@Override
public Map<String, ResourceInstance> getSubResources() {
return null;
}
@Override
public boolean isCollectionResource() {
return false;
}
};
}
@Override
public String getURI() {
return "http://example.com:8080/api/v1/test" + queryString;
}
@Override
public Type getRequestType() {
return requestType;
}
@Override
public int getAPIVersion() {
return 0;
}
@Override
public Predicate getQueryPredicate() {
return null;
}
@Override
public Map<String, TemporalInfo> getFields() {
return null;
}
@Override
public RequestBody getBody() {
if(properties != null) {
NamedPropertySet nps = new NamedPropertySet("", properties);
body.addPropertySet(nps);
}
return body;
}
@Override
public Map<String, List<String>> getHttpHeaders() {
return null;
}
@Override
public PageRequest getPageRequest() {
return null;
}
@Override
public SortRequest getSortRequest() {
return null;
}
@Override
public Renderer getRenderer() {
return null;
}
@Override
public String getRemoteAddress() {
return "1.2.3.4";
}
};
}
public static Result createResult(final ResultStatus status) {
return createResult(status, null);
}
public static Result createResult(final ResultStatus status, final TreeNode<Resource> resultTree) {
return new Result() {
@Override
public TreeNode<Resource> getResultTree() {
return resultTree;
}
@Override
public boolean isSynchronous() {
return false;
}
@Override
public ResultStatus getStatus() {
return status;
}
@Override
public void setResultStatus(ResultStatus status) {
}
@Override
public void setResultMetadata(ResultMetadata resultMetadata) {
}
@Override
public ResultMetadata getResultMetadata() {
return null;
}
};
}
}