/* * 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; } }; } }