Загрязнение keyCloak simplehttp.response.asjson (класс type)JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Загрязнение keyCloak simplehttp.response.asjson (класс type)

Сообщение Anonymous »

У меня возникает проблема с затоплением метода simplehttp.response.asjson (class type). Вот DOC: KeyCloak SimpleHttp < /p>
Вот пример кода, который я хотел бы загрязнять: < /p>
SampleResponse sampleResp = response.asJson(SampleResponse.class);
< /code>
Вот метод, который я пытаюсь проверить: < /p>
public SampleResponse getCustomer(String clientID) throws ResponseFailureException {

String url = String.format("%s/customer", this.baseUrl);
Instant start = Instant.now();
try {
// Build request
//
SimpleHttp req = SimpleHttp
.doGet(url, httpClient)
.param("client_id", clientID)
.json(null);

// Fire the request
//
SimpleHttp.Response response = req.asResponse();
if (response.getStatus() != HttpStatus.SC_OK) {
throw new ResponseFailureException("Fail");
}

// Parse response
// Target code to stub
SampleResponse sampleResp = response.asJson(SampleResponse.class);

return sampleResp;
} catch (Exception e) {
throw new ResponseFailureException("Fail", e);
}
}
< /code>
Вот тест: < /p>
class ClientTest {

@Mock
private KeycloakSession keycloakSession;

@Mock
private HttpClientProvider httpClientProvider;

@Mock
private CloseableHttpClient httpClient;

@Mock
private SimpleHttp simpleHttp;

@Mock
private SimpleHttp.Response response;

private Client testClient;

@BeforeEach
void setUp() {
when(keycloakSession.getProvider(HttpClientProvider.class)).thenReturn(httpClientProvider);
when(httpClientProvider.getHttpClient()).thenReturn(httpClient);
testClient = new Client(keycloakSession, "https://api.example.com", "BASIC", "user", "pass");
}

@Test
void getCustomer_shouldReturnResponse_whenValidInputsProvided() throws Exception {
// Mock `SimpleHttp.doGet()` correctly with KeycloakSession

try (MockedStatic mockedSimpleHttp = mockStatic(SimpleHttp.class)) {
mockedSimpleHttp.when(() -> SimpleHttp.doGet(eq("https://api.example.com/customer"), eq(httpClient)))
.thenReturn(simpleHttp);

// Mock behavior of the SimpleHttp instance
when(simpleHttp.header(anyString(), anyString())).thenReturn(simpleHttp);
when(simpleHttp.param(anyString(), anyString())).thenReturn(simpleHttp);
when(simpleHttp.json(null)).thenReturn(simpleHttp);
when(simpleHttp.asResponse()).thenReturn(response);

String jsonResponse = "{\"customerInfo\": {\"name\": \"testName\", \"permissions\": \"admin\"}}";

ObjectMapper mapper = new ObjectMapper();
JsonNode node = mapper.readTree(jsonResponse);

// Mock the response
when(response.getStatus()).thenReturn(200);
when(response.asJson()).thenReturn(node);
SampleResponse sampleResponse = new SampleResponse();

// Stub the asJson method
// Errors in this line of code
when(response.asJson(any(SampleResponse.class))).thenReturn(sampleResponse);

// Call the actual method
SampleResponse result = testClient.getCustomer("client123");

// Verify the expected result
assertNotNull(result);
}
}
}
< /code>
Я попытался спросить CHATGPT для решений, однако предоставленное решение все еще не удается. Вот образец решения: < /p>
SampleResponse sampleResponse = new SampleResponse();
when(response.asJson(any(SampleResponse.class))).thenReturn(sampleResponse);
< /code>
возвращает эту ошибку: < /p>
org.mockito.exceptions.misusing.NotAMockException: Argument passed to Mockito.mockingDetails() should be a mock, but is an instance of class java.lang.Class!
< /code>
Я также попробовал это решение: < /p>
when(response.asJson(any(SampleResponse.class))).thenReturn(sampleResponse);
< /code>
он все еще терпит неудачу и возвращает эту ошибку: < /p>
no suitable method found for asJson(sampleResponse)
method org.keycloak.broker.provider.util.SimpleHttp.Response.asJson(java.lang.Class) is not applicable
(inference variable T has incompatible bounds
equality constraints: sampleResponse
lower bounds: java.lang.Object,java.lang.Class)
method org.keycloak.broker.provider.util.SimpleHttp.Response.asJson(com.fasterxml.jackson.core.type.TypeReference) is not applicable
(inference variable T has incompatible bounds
equality constraints: sampleResponse
lower bounds: java.lang.Object,com.fasterxml.jackson.core.type.TypeReference


Подробнее здесь: https://stackoverflow.com/questions/794 ... lasst-type
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Загрязнение keyCloak simplehttp.response.asjson (класс type)
    Anonymous » » в форуме JAVA
    0 Ответы
    21 Просмотры
    Последнее сообщение Anonymous
  • Загрязнение keyCloak simplehttp.response.asjson (класс type)
    Anonymous » » в форуме JAVA
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Загрязнение keyCloak simplehttp.response.asjson (класс type)
    Anonymous » » в форуме JAVA
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Как отправить сигнал "ctrl+c" / sigint, чтобы Gradle javaexec type type type jvm?
    Anonymous » » в форуме JAVA
    0 Ответы
    24 Просмотры
    Последнее сообщение Anonymous
  • Незаконченное загрязнение, обнаруженное в Mockito
    Anonymous » » в форуме JAVA
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous

Вернуться в «JAVA»