### Question:
HashLockRepositoryOkHttpImpl extends AbstractRepositoryOkHttpImpl implements HashLockRepository { @Override public Observable<HashLockInfo> getHashLock(String hash) { Callable<HashLockInfoDTO> callback = () -> getClient().getHashLock(hash); return this.call(callback, this::toHashLockInfo); } HashLockRepositoryOkHttpImpl(ApiClient apiClient); @Override Observable<HashLockInfo> getHashLock(String hash); @Override Observable<Page<HashLockInfo>> search(HashLockSearchCriteria criteria); HashLockRoutesApi getClient();  }### Answer:
@Test public void shouldGetHashLockInfo() throws Exception { Address address = Address.generateRandom(this.networkType); MosaicId mosaicId = MosaicId.createFromNonce(MosaicNonce.createRandom(), address); HashLockEntryDTO lockHashDto = new HashLockEntryDTO(); lockHashDto.setOwnerAddress(encodeAddress(address)); lockHashDto.setAmount(BigInteger.ONE); lockHashDto.setEndHeight(BigInteger.TEN); lockHashDto.setHash("ABC"); lockHashDto.setMosaicId(mosaicId.getIdAsHex()); lockHashDto.setStatus(2); HashLockInfoDTO hashLockInfoDTO = new HashLockInfoDTO(); hashLockInfoDTO.setLock(lockHashDto); hashLockInfoDTO.setId("123"); mockRemoteCall(hashLockInfoDTO); HashLockInfo resolvedHashLockInfo = repository.getHashLock("abc").toFuture().get(); Assertions.assertEquals(address, resolvedHashLockInfo.getOwnerAddress()); Assertions.assertEquals(hashLockInfoDTO.getId(), resolvedHashLockInfo.getRecordId().get()); Assertions.assertEquals(address, resolvedHashLockInfo.getOwnerAddress()); Assertions.assertEquals(lockHashDto.getHash(), resolvedHashLockInfo.getHash()); Assertions.assertEquals(lockHashDto.getStatus(), resolvedHashLockInfo.getStatus()); Assertions.assertEquals(mosaicId, resolvedHashLockInfo.getMosaicId()); Assertions.assertEquals(lockHashDto.getAmount(), resolvedHashLockInfo.getAmount()); Assertions.assertEquals(lockHashDto.getEndHeight(), resolvedHashLockInfo.getEndHeight()); }