Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,6 @@
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.folio.HttpStatus;
import org.folio.okapi.common.XOkapiHeaders;
import org.folio.rest.jaxrs.model.EffectiveCallNumberComponents;
import org.folio.rest.jaxrs.model.Errors;
import org.folio.rest.jaxrs.model.HoldingsNote;
Expand Down Expand Up @@ -114,7 +113,6 @@
public class HoldingsStorageTest extends TestBaseWithInventoryUtil {
private static final Logger log = LogManager.getLogger();
private static final String TAG_VALUE = "test-tag";
private static final String X_OKAPI_URL = "X-Okapi-Url";
private static final String X_OKAPI_TENANT = "X-Okapi-Tenant";
private static final String CONSORTIUM_MEMBER_TENANT = "consortium";
private static final String TENANT_WITHOUT_USER_TENANTS_PERMISSIONS = "nopermissions";
Expand All @@ -130,10 +128,10 @@ public class HoldingsStorageTest extends TestBaseWithInventoryUtil {
INVALID_VALUE);

private final HoldingsEventMessageChecks holdingsMessageChecks
= new HoldingsEventMessageChecks(KAFKA_CONSUMER, mockServer.baseUrl());
= new HoldingsEventMessageChecks(KAFKA_CONSUMER);

private final ItemEventMessageChecks itemMessageChecks
= new ItemEventMessageChecks(KAFKA_CONSUMER, mockServer.baseUrl());
= new ItemEventMessageChecks(KAFKA_CONSUMER);

@SneakyThrows
@BeforeClass
Expand Down Expand Up @@ -433,8 +431,7 @@ public void cannotCreateHoldingWithInvalidStatisticalCodeIds() {
.create();
holdingToCreate.put(STATISTICAL_CODE_IDS_KEY, Set.of(INVALID_VALUE));

var response = holdingsClient.attemptToCreate("", holdingToCreate, TENANT_ID,
Map.of(XOkapiHeaders.URL, mockServer.baseUrl()));
var response = holdingsClient.attemptToCreate("", holdingToCreate, TENANT_ID);
assertThat(response.getStatusCode(), is(400));
assertThat(response.getBody(), containsString(INVALID_TYPE_ERROR_MESSAGE));
}
Expand All @@ -457,8 +454,7 @@ public void cannotUpdateHoldingWithInvalidStatisticalCodeIds() {
var holding = holdingToUpdate.getJson();
holding.put(STATISTICAL_CODE_IDS_KEY, Set.of(INVALID_VALUE));

var response = holdingsClient.attemptToReplace(holdingId.toString(), holding, TENANT_ID,
Map.of(XOkapiHeaders.URL, mockServer.baseUrl()));
var response = holdingsClient.attemptToReplace(holdingId.toString(), holding);

assertThat(response.getStatusCode(), is(400));
assertThat(response.getBody(), containsString(INVALID_TYPE_ERROR_MESSAGE));
Expand All @@ -474,8 +470,7 @@ public void cannotCreateHoldingWithInvalidInstanceId() {
.withPermanentLocation(MAIN_LIBRARY_LOCATION_ID)
.create();

var response = holdingsClient.attemptToCreate("", holdingToCreate, TENANT_ID,
Map.of(XOkapiHeaders.URL, mockServer.baseUrl()));
var response = holdingsClient.attemptToCreate("", holdingToCreate, TENANT_ID);
assertThat(response.getStatusCode(), is(422));
assertTrue(response.getBody().contains(String.format(
"Cannot set holdings_record.instanceid = %s because it does not exist in instance.id.", instanceId)));
Expand All @@ -494,7 +489,7 @@ public void canDeleteHolding() {

UUID holdingId = holdingResource.getId();

holdingsClient.delete(holdingId, Map.of(XOkapiHeaders.URL, mockServer.baseUrl()));
holdingsClient.delete(holdingId);

Response getResponse = holdingsClient.getById(holdingId);

Expand Down Expand Up @@ -641,7 +636,7 @@ public void canDeleteAllHoldings() {
.withSource(getPreparedHoldingSourceId())
.withPermanentLocation(MAIN_LIBRARY_LOCATION_ID).create());

holdingsClient.deleteAll(Map.of(XOkapiHeaders.URL, mockServer.baseUrl()));
holdingsClient.deleteAll();

List<JsonObject> allHoldings = holdingsClient.getAll();

Expand All @@ -660,7 +655,7 @@ public void canDeleteHoldingsByCql() {

var holdings = createFiveHoldingsWithHrids(instanceId1, instanceId2);

holdingsClient.deleteByQuery("hrid==12*", Map.of(XOkapiHeaders.URL, mockServer.baseUrl()));
holdingsClient.deleteByQuery("hrid==12*", Map.of());

assertHoldingsExistence(holdings);
assertDeletedMessagesPublished(holdings[0], holdings[2], holdings[4]);
Expand Down Expand Up @@ -787,11 +782,10 @@ public void shouldUpdateHoldingsIfNoChangesAndOptimizeUpdatesDisabled() {
assertThat(update(holding).getStatusCode(), is(204));

var updatedHolding = getById(holdingId).getJson();
//assert that there was no update in database
//assert that there was an update in database
assertThat(updatedHolding.getString("_version"), is("2"));
var kafkaEvents = KAFKA_CONSUMER.getMessagesForHoldings(holdingId);
//assert that there's only CREATE kafka message, no updates
assertThat(kafkaEvents.size(), is(1));
//assert that UPDATE kafka message was published
holdingsMessageChecks.updatedMessagePublished(holding, updatedHolding);
}

@Test
Expand Down Expand Up @@ -4045,7 +4039,7 @@ private Response postSynchronousBatch(String subPath, JsonArray holdingsArray, S
private Response postSynchronousBatch(URL url, JsonArray holdingsArray, String tenantId) {
JsonObject holdingsCollection = new JsonObject().put("holdingsRecords", holdingsArray);
CompletableFuture<Response> createCompleted = new CompletableFuture<>();
getClient().post(url, holdingsCollection, Map.of(X_OKAPI_URL, mockServer.baseUrl()), tenantId,
getClient().post(url, holdingsCollection, tenantId,
ResponseHandler.any(createCompleted));
try {
return createCompleted.get(10, SECONDS);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,6 @@
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.folio.HttpStatus;
import org.folio.okapi.common.XOkapiHeaders;
import org.folio.rest.jaxrs.model.Errors;
import org.folio.rest.jaxrs.model.Instance;
import org.folio.rest.jaxrs.model.InstanceDates;
Expand Down Expand Up @@ -545,11 +544,10 @@
assertThat(update(instance).getStatusCode(), is(204));

var updatedInstance = getById(id).getJson();
//assert that there was no update in database
//assert that there was an update in database
assertThat(updatedInstance.getString("_version"), is("2"));
var kafkaEvents = KAFKA_CONSUMER.getMessagesForInstance(id.toString());
//assert that there's only CREATE kafka message, no updates
assertThat(kafkaEvents.size(), is(1));
//assert that UPDATE kafka message was published
instanceMessageChecks.updatedMessagePublished(instance, updatedInstance);
}

@Test
Expand Down Expand Up @@ -2609,8 +2607,7 @@

CompletableFuture<Response> createCompleted = new CompletableFuture<>();

getClient().post(holdingsStorageUrl(""), holdingsToCreate,
Map.of(XOkapiHeaders.URL, mockServer.baseUrl()), TENANT_ID, json(createCompleted));
getClient().post(holdingsStorageUrl(""), holdingsToCreate, TENANT_ID, json(createCompleted));

Response response = createCompleted.get(2, SECONDS);

Expand Down Expand Up @@ -2831,7 +2828,7 @@
assertThat(identifiers.size(), is(1));
assertThat(identifiers, hasItem(identifierMatches(UUID_ISBN.toString(), "9781473619777")));
assertThat(instance.getJsonArray("natureOfContentTermIds"),
containsInAnyOrder(natureOfContentIds));

Check warning on line 2831 in mod-inventory-storage-server/src/test/java/org/folio/rest/api/InstanceStorageTest.java

View workflow job for this annotation

GitHub Actions / maven / Build / Build

non-varargs call of varargs method with inexact argument type for last parameter;
assertThat(instance.getBoolean(DISCOVERY_SUPPRESS), is(false));
}

Expand All @@ -2849,7 +2846,7 @@
assertThat(tags.size(), is(1));
assertThat(tags, hasItem(TAG_VALUE));
assertThat(instanceFromGet.getJsonArray("natureOfContentTermIds"),
containsInAnyOrder(natureOfContentIds));

Check warning on line 2849 in mod-inventory-storage-server/src/test/java/org/folio/rest/api/InstanceStorageTest.java

View workflow job for this annotation

GitHub Actions / maven / Build / Build

non-varargs call of varargs method with inexact argument type for last parameter;

assertThat(
instanceFromGet.getString(STATUS_UPDATED_DATE_PROPERTY), hasIsoFormat());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,14 +14,12 @@
import io.vertx.core.json.JsonArray;
import io.vertx.core.json.JsonObject;
import java.net.HttpURLConnection;
import java.util.Map;
import java.util.Objects;
import java.util.UUID;
import junitparams.JUnitParamsRunner;
import junitparams.Parameters;
import junitparams.naming.TestCaseName;
import org.apache.commons.lang3.StringUtils;
import org.folio.okapi.common.XOkapiHeaders;
import org.folio.rest.api.testdata.ItemEffectiveCallNumberComponentsTestData;
import org.folio.rest.api.testdata.ItemEffectiveCallNumberComponentsTestData.CallNumberComponentPropertyNames;
import org.folio.rest.support.IndividualResource;
Expand Down Expand Up @@ -304,7 +302,7 @@ private void updateItemIfNeeded(IndividualResource createdItem, String itemPrope
if (!Objects.equals(itemInitValue, itemTargetValue)) {
var itemAfterHoldingsUpdate = getById(createdItem.getJson());
itemsClient.replace(createdItem.getId(), itemAfterHoldingsUpdate.copy()
.put(itemPropertyName, itemTargetValue), Map.of(XOkapiHeaders.URL, mockServer.baseUrl()));
.put(itemPropertyName, itemTargetValue));

itemMessageChecks.updatedMessagePublished(itemAfterHoldingsUpdate,
itemsClient.getById(createdItem.getId()).getJson());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -579,11 +579,10 @@ public void shouldUpdateItemIfNoChangesAndOptimizeUpdatesDisabled() {
assertThat(update(item).getStatusCode(), is(204));

var updatedItem = getById(itemId).getJson();
//assert that there was no update in database
//assert that there was an update in database
assertThat(updatedItem.getString("_version"), is("2"));
var kafkaEvents = KAFKA_CONSUMER.getMessagesForItem(itemId.toString());
//assert that there's only CREATE kafka message, no updates
assertThat(kafkaEvents.size(), is(1));
//assert that UPDATE kafka message was published
itemMessageChecks.updatedMessagePublished(item, updatedItem);
}

@Test
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,13 +20,11 @@

import io.vertx.core.json.JsonObject;
import java.net.URL;
import java.util.Map;
import java.util.Objects;
import java.util.concurrent.CompletableFuture;
import java.util.function.Predicate;
import junitparams.JUnitParamsRunner;
import lombok.SneakyThrows;
import org.folio.okapi.common.XOkapiHeaders;
import org.folio.rest.support.Response;
import org.junit.BeforeClass;
import org.junit.Test;
Expand All @@ -46,8 +44,7 @@ public static void beforeClass() {
TestBase.beforeAll();

removeTenant(TENANT_ID);
prepareTenant(TENANT_ID, null, "mod-inventory-storage-1.0.0", true,
Map.of(XOkapiHeaders.URL, mockServer.baseUrl()));
prepareTenant(TENANT_ID, null, "mod-inventory-storage-1.0.0", true);
}

private static Predicate<JsonObject> hasId(String id) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,6 @@ public void cannotUpdateSettingWithInvalidType() {
.withValue("not a boolean")).encode());
var headers = new HashMap<String, String>();
headers.put(XOkapiHeaders.TENANT, TENANT_ID);
headers.put(XOkapiHeaders.URL, mockServer.baseUrl());
var updateResponse = settingsClient.attemptToUpdate(INVENTORY_OPTIMIZE_UPDATES_ENABLED.getValue(),
settingRequest, TENANT_ID, headers);

Expand Down Expand Up @@ -254,7 +253,6 @@ public void cannotUpdateNonExistentSetting() {
.withValue(true)).encode());
var headers = new HashMap<String, String>();
headers.put(XOkapiHeaders.TENANT, TENANT_ID);
headers.put(XOkapiHeaders.URL, mockServer.baseUrl());

var response = settingsClient.attemptToUpdate("non.existent.setting.key",
settingRequest, TENANT_ID, headers);
Expand All @@ -268,7 +266,6 @@ public void updateSettingWithNullValueShouldFail() {
var settingRequest = new JsonObject().putNull("value");
var headers = new HashMap<String, String>();
headers.put(XOkapiHeaders.TENANT, TENANT_ID);
headers.put(XOkapiHeaders.URL, mockServer.baseUrl());

var response = settingsClient.attemptToUpdate(INVENTORY_OPTIMIZE_UPDATES_ENABLED.getValue(),
settingRequest, TENANT_ID, headers);
Expand Down Expand Up @@ -428,7 +425,6 @@ private Response updateSettingByKeyForTenant(String key, boolean value, String t

var headers = new HashMap<String, String>();
headers.put(XOkapiHeaders.TENANT, tenantId);
headers.put(XOkapiHeaders.URL, mockServer.baseUrl());
return settingsClient.attemptToUpdate(key, settingRequest, tenantId, headers);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@
import java.util.concurrent.TimeoutException;
import junitparams.JUnitParamsRunner;
import lombok.SneakyThrows;
import org.folio.okapi.common.XOkapiHeaders;
import org.folio.rest.jaxrs.model.Subject;
import org.folio.rest.support.Response;
import org.folio.rest.support.http.ResourceClient;
Expand Down Expand Up @@ -271,15 +270,15 @@ private Response createSubjectSource(JsonObject object) {
}

private Response createSubjectSource(JsonObject object, String tenantId) {
return subjectSourceClient.attemptToCreate("", object, tenantId, Map.of(XOkapiHeaders.URL, mockServer.baseUrl()));
return subjectSourceClient.attemptToCreate("", object, tenantId);
}

private Response updateSubjectSource(String id, JsonObject object) {
return subjectSourceClient.attemptToReplace(id, object, TENANT_ID, Map.of(XOkapiHeaders.URL, mockServer.baseUrl()));
return subjectSourceClient.attemptToReplace(id, object);
}

private Response updateSubjectSource(String id, JsonObject object, String tenantId) {
return subjectSourceClient.attemptToReplace(id, object, tenantId, Map.of(XOkapiHeaders.URL, mockServer.baseUrl()));
return subjectSourceClient.attemptToReplace(id, object, tenantId, Map.of());
}

private Response deleteSubjectSource(UUID id) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@
import java.util.concurrent.TimeoutException;
import junitparams.JUnitParamsRunner;
import lombok.SneakyThrows;
import org.folio.okapi.common.XOkapiHeaders;
import org.folio.rest.jaxrs.model.Subject;
import org.folio.rest.support.Response;
import org.folio.rest.support.ResponseHandler;
Expand Down Expand Up @@ -275,15 +274,15 @@ private Response createSubjectType(JsonObject object) {
}

private Response createSubjectType(JsonObject object, String tenantId) {
return subjectTypeClient.attemptToCreate("", object, tenantId, Map.of(XOkapiHeaders.URL, mockServer.baseUrl()));
return subjectTypeClient.attemptToCreate("", object, tenantId);
}

private Response updateSubjectType(String id, JsonObject object) {
return subjectTypeClient.attemptToReplace(id, object, TENANT_ID, Map.of(XOkapiHeaders.URL, mockServer.baseUrl()));
return subjectTypeClient.attemptToReplace(id, object);
}

private Response updateSubjectType(String id, JsonObject object, String tenantId) {
return subjectTypeClient.attemptToReplace(id, object, tenantId, Map.of(XOkapiHeaders.URL, mockServer.baseUrl()));
return subjectTypeClient.attemptToReplace(id, object, tenantId, Map.of());
}

private Response deleteSubjectType(UUID id) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,9 @@
import static org.folio.rest.support.http.InterfaceUrls.instanceStatusesUrl;
import static org.folio.rest.support.http.InterfaceUrls.itemsStorageUrl;
import static org.folio.rest.support.http.InterfaceUrls.materialTypesStorageUrl;
import static org.folio.utility.ModuleUtility.clearOkapiUrl;
import static org.folio.utility.ModuleUtility.getClient;
import static org.folio.utility.ModuleUtility.setOkapiUrl;
import static org.folio.utility.RestUtility.CONSORTIUM_CENTRAL_TENANT;
import static org.folio.utility.RestUtility.CONSORTIUM_MEMBER_TENANT;
import static org.folio.utility.RestUtility.TENANT_ID;
Expand All @@ -20,7 +22,6 @@
import java.net.HttpURLConnection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Random;
import java.util.UUID;
import java.util.concurrent.CompletableFuture;
Expand All @@ -38,6 +39,7 @@
import org.folio.rest.support.builders.ItemRequestBuilder;
import org.folio.rest.support.client.MaterialTypesClient;
import org.folio.utility.LocationUtility;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.ClassRule;

Expand Down Expand Up @@ -104,12 +106,24 @@ public static void testBaseWithInvUtilBeforeClass() {
setupLoanTypes();
setupLocations();

// Route the default X-Okapi-Url header (and therefore the URL echoed into Kafka events)
// through WireMock, so it matches what the event message checks expect. The event checks
// in each subclass read this same value via ModuleUtility.okapiUrl().
setOkapiUrl(mockServer.baseUrl());

KAFKA_CONSUMER.discardAllMessages();
mockUserTenantsForNonConsortiumMember();

logger.info("finishing @BeforeClass testBaseWithInvUtilBeforeClass()");
}

@AfterClass
public static void testBaseWithInvUtilAfterClass() {
// Reset so a later class that does not set it up (e.g. a plain TestBase subclass) does not
// inherit this class's now-stopped WireMock URL.
clearOkapiUrl();
}

public static void mockUserTenantsForNonConsortiumMember() {
JsonObject emptyUserTenantsCollection = new JsonObject()
.put("userTenants", JsonArray.of());
Expand Down Expand Up @@ -280,7 +294,7 @@ protected static IndividualResource createHoldingRecord(JsonObject holdingsJson)
}

protected static IndividualResource createHoldingRecord(JsonObject holdingsJson, String tenantId) {
return holdingsClient.create(holdingsJson, tenantId, Map.of(XOkapiHeaders.URL, mockServer.baseUrl()));
return holdingsClient.create(holdingsJson, tenantId);
}

protected static void updateHoldingRecord(UUID id, Builder builder) {
Expand All @@ -289,8 +303,7 @@ protected static void updateHoldingRecord(UUID id, Builder builder) {

protected static void updateHoldingRecord(UUID id, JsonObject holdingJson) {
var holdingId = id != null ? id.toString() : null;
var putResponse = holdingsClient.attemptToReplace(holdingId, holdingJson, TENANT_ID,
Map.of(XOkapiHeaders.URL, mockServer.baseUrl()));
var putResponse = holdingsClient.attemptToReplace(holdingId, holdingJson);
assertThat(
String.format("Failed to update holding record %s: %s", id, putResponse.getBody()),
putResponse.getStatusCode(), is(HttpURLConnection.HTTP_NO_CONTENT));
Expand Down Expand Up @@ -399,7 +412,6 @@ protected static Response updateSettingByKey(String key, boolean value) {

var headers = new HashMap<String, String>();
headers.put(XOkapiHeaders.TENANT, TENANT_ID);
headers.put(XOkapiHeaders.URL, mockServer.baseUrl());
return settingsClient.attemptToUpdate(key, settingRequest, TENANT_ID, headers);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.folio.okapi.common.XOkapiHeaders;
import org.folio.utility.ModuleUtility;

public class HttpClient {
private static final Logger LOG = LogManager.getLogger();
Expand Down Expand Up @@ -284,7 +285,13 @@ private void addDefaultHeaders(HttpRequest<Buffer> request, URL url, String tena
}
if (url != null) {
String baseUrl = format("%s://%s", url.getProtocol(), url.getAuthority());
request.putHeader(XOkapiHeaders.URL, baseUrl);
// Prefer the suite-wide okapi URL override (when set) so the X-Okapi-Url that the
// module echoes into Kafka events matches what the event assertions expect. Falls
// back to the request's own base URL when no override is configured.
String okapiUrl = ModuleUtility.okapiUrlOverride() != null
? ModuleUtility.okapiUrlOverride()
: baseUrl;
request.putHeader(XOkapiHeaders.URL, okapiUrl);
request.putHeader(XOkapiHeaders.URL_TO, baseUrl);
}
request.putHeader(ACCEPT, APPLICATION_JSON + ", " + TEXT_PLAIN);
Expand Down
Loading
Loading