Skip to content

Commit

Permalink
Add parameter log message verification
Browse files Browse the repository at this point in the history
  • Loading branch information
HardNorth committed Dec 20, 2023
1 parent 18f33c3 commit 27c370c
Show file tree
Hide file tree
Showing 2 changed files with 55 additions and 1 deletion.
Original file line number Diff line number Diff line change
@@ -1,18 +1,22 @@
package com.epam.reportportal.karate.parameters;

import com.epam.reportportal.karate.utils.TestUtils;
import com.epam.reportportal.listeners.LogLevel;
import com.epam.reportportal.service.ReportPortal;
import com.epam.reportportal.service.ReportPortalClient;
import com.epam.reportportal.util.test.CommonUtils;
import com.epam.ta.reportportal.ws.model.ParameterResource;
import com.epam.ta.reportportal.ws.model.StartTestItemRQ;
import com.epam.ta.reportportal.ws.model.log.SaveLogRQ;
import okhttp3.MultipartBody;
import org.apache.commons.lang3.tuple.Pair;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.mockito.ArgumentCaptor;

import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
import java.util.stream.Stream;
Expand All @@ -21,6 +25,7 @@
import static java.util.stream.Stream.ofNullable;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.*;
import static org.hamcrest.Matchers.startsWith;
import static org.mockito.ArgumentMatchers.same;
import static org.mockito.Mockito.*;

Expand Down Expand Up @@ -50,12 +55,13 @@ private static Set<String> toParameterStringList(List<ParameterResource> paramet
}

@Test
@SuppressWarnings({"unchecked", "rawtypes"})
public void test_examples_parameters_for_steps() {
var results = TestUtils.runAsReport(rp, "classpath:feature/examples.feature");
assertThat(results.getFailCount(), equalTo(0));

ArgumentCaptor<StartTestItemRQ> captor = ArgumentCaptor.forClass(StartTestItemRQ.class);
verify(client, times(1)).startTestItem(captor.capture());
verify(client).startTestItem(captor.capture());
verify(client, times(2)).startTestItem(same(featureId), captor.capture());
ArgumentCaptor<StartTestItemRQ> firstExampleCaptor = ArgumentCaptor.forClass(StartTestItemRQ.class);
verify(client, times(2)).startTestItem(same(exampleIds.get(0)), firstExampleCaptor.capture());
Expand All @@ -77,5 +83,20 @@ public void test_examples_parameters_for_steps() {
parameterStrings = toParameterStringList(secondSteps.get(1).getParameters());
assertThat(parameterStrings, hasSize(1));
assertThat(parameterStrings, hasItem("result:3"));

ArgumentCaptor<List> logCaptor = ArgumentCaptor.forClass(List.class);
verify(client, atLeastOnce()).log(logCaptor.capture());
Map<String, SaveLogRQ> logs = logCaptor
.getAllValues().
stream()
.flatMap(rq -> extractJsonParts((List<MultipartBody.Part>) rq).stream())
.filter(rq -> LogLevel.INFO.name().equals(rq.getLevel()))
.collect(Collectors.toMap(SaveLogRQ::getItemUuid, v -> v));

List<String> stepIdList = stepIds.stream().flatMap(e -> e.getValue().stream()).collect(Collectors.toList());
assertThat(logs.keySet(), hasSize(stepIdList.size()));
stepIdList.forEach(id -> assertThat(logs, hasKey(id)));
assertThat(logs.values().stream().map(SaveLogRQ::getMessage).collect(Collectors.toList()),
everyItem(startsWith("Parameters:")));
}
}
33 changes: 33 additions & 0 deletions src/test/java/com/epam/reportportal/karate/utils/TestUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,17 +5,24 @@
import com.epam.reportportal.service.ReportPortal;
import com.epam.reportportal.service.ReportPortalClient;
import com.epam.reportportal.util.test.CommonUtils;
import com.epam.reportportal.utils.http.HttpRequestUtils;
import com.epam.ta.reportportal.ws.model.BatchSaveOperatingRS;
import com.epam.ta.reportportal.ws.model.Constants;
import com.epam.ta.reportportal.ws.model.OperationCompletionRS;
import com.epam.ta.reportportal.ws.model.item.ItemCreatedRS;
import com.epam.ta.reportportal.ws.model.launch.StartLaunchRS;
import com.epam.ta.reportportal.ws.model.log.SaveLogRQ;
import com.fasterxml.jackson.core.type.TypeReference;
import com.intuit.karate.Results;
import io.reactivex.Maybe;
import okhttp3.MultipartBody;
import okio.Buffer;
import org.apache.commons.lang3.tuple.Pair;
import org.mockito.stubbing.Answer;

import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import java.io.IOException;
import java.util.*;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
Expand Down Expand Up @@ -169,4 +176,30 @@ public static void mockNestedSteps(final ReportPortalClient client, final List<P
any()
)).thenAnswer((Answer<Maybe<OperationCompletionRS>>) invocation -> Maybe.just(new OperationCompletionRS())));
}

public static List<SaveLogRQ> extractJsonParts(List<MultipartBody.Part> parts) {
return parts.stream()
.filter(p -> ofNullable(p.headers()).map(headers -> headers.get("Content-Disposition"))
.map(h -> h.contains(Constants.LOG_REQUEST_JSON_PART))
.orElse(false))
.map(MultipartBody.Part::body)
.map(b -> {
Buffer buf = new Buffer();
try {
b.writeTo(buf);
} catch (IOException ignore) {
}
return buf.readByteArray();
})
.map(b -> {
try {
return HttpRequestUtils.MAPPER.readValue(b, new TypeReference<>() {
});
} catch (IOException e) {
return Collections.<SaveLogRQ>emptyList();
}
})
.flatMap(Collection::stream)
.collect(Collectors.toList());
}
}

0 comments on commit 27c370c

Please sign in to comment.