@Override
  public Mono<GetCurrencyConversionsResponse> getCurrencyConversions(final GetCurrencyConversionsRequest request) {
    AuthenticationUtil.requireAuthenticatedDevice();

    final CurrencyConversionEntityList currencyConversionEntityList = currencyManager
        .getCurrencyConversions()
        .orElseThrow(Status.UNAVAILABLE::asRuntimeException);

    final List<GetCurrencyConversionsResponse.CurrencyConversionEntity> currencyConversionEntities = currencyConversionEntityList
        .getCurrencies()
        .stream()
        .map(cce -> GetCurrencyConversionsResponse.CurrencyConversionEntity.newBuilder()
            .setBase(cce.getBase())
            .putAllConversions(transformBigDecimalsToStrings(cce.getConversions()))
            .build())
        .toList();

    return Mono.just(GetCurrencyConversionsResponse.newBuilder()
        .addAllCurrencies(currencyConversionEntities).setTimestamp(currencyConversionEntityList.getTimestamp())
        .build());
  }
@Test
  void testUnavailable() {
    when(currencyManager.getCurrencyConversions()).thenReturn(Optional.empty());
    assertStatusException(Status.UNAVAILABLE, () -> authenticatedServiceStub().getCurrencyConversions(
        GetCurrencyConversionsRequest.newBuilder().build()));
  }