package com.jaspersoft.jasperserver.jaxrs.client.apiadapters.serverInfo;
import com.jaspersoft.jasperserver.jaxrs.client.core.JerseyRequest;
import com.jaspersoft.jasperserver.jaxrs.client.core.RequestBuilder;
import com.jaspersoft.jasperserver.jaxrs.client.core.SessionStorage;
import com.jaspersoft.jasperserver.jaxrs.client.core.operationresult.OperationResult;
import com.jaspersoft.jasperserver.dto.serverinfo.ServerInfo;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.testng.PowerMockTestCase;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import static org.mockito.Matchers.eq;
import static org.mockito.Mockito.reset;
import static org.mockito.Mockito.times;
import static org.mockito.MockitoAnnotations.initMocks;
import static org.powermock.api.mockito.PowerMockito.verifyStatic;
import static org.testng.Assert.assertSame;
@PrepareForTest({JerseyRequest.class, ServerInfoService.class})
public class ServerInfoServiceTest extends PowerMockTestCase {
@Mock
private SessionStorage sessionStorageMock;
@Mock
private JerseyRequest<String> requestMock;
@Mock
private RequestBuilder<String> builderMock;
@Mock
private OperationResult<String> operationResultMock;
@Mock
private JerseyRequest<ServerInfo> serverInfoJerseyRequest;
@Mock
private OperationResult<ServerInfo> serverInfoOperationResult;
private ServerInfoService service;
@BeforeMethod
public void before() {
initMocks(this);
service = PowerMockito.spy(new ServerInfoService(sessionStorageMock));
}
@Test
public void should_return_date_time_format_pattern() throws Exception {
PowerMockito.doReturn(requestMock).when(service, "buildServerInfoRequest", "datetimeFormatPattern");
PowerMockito.doReturn(operationResultMock).when(requestMock).get();
OperationResult<String> retrieved = service.dateTimeFormatPattern();
PowerMockito.verifyPrivate(service, times(1)).invoke("buildServerInfoRequest", "datetimeFormatPattern");
assertSame(retrieved, operationResultMock);
}
@Test
public void should_return_proper_date_format_pattern() throws Exception {
ServerInfoService service = PowerMockito.spy(new ServerInfoService(sessionStorageMock));
PowerMockito.doReturn(requestMock).when(service, "buildServerInfoRequest", "dateFormatPattern");
PowerMockito.doReturn(operationResultMock).when(requestMock).get();
OperationResult<String> retrieved = service.dateFormatPattern();
PowerMockito.verifyPrivate(service, times(1)).invoke("buildServerInfoRequest", "dateFormatPattern");
assertSame(retrieved, operationResultMock);
}
@Test
public void should_return_proper_expiration() throws Exception {
ServerInfoService service = PowerMockito.spy(new ServerInfoService(sessionStorageMock));
PowerMockito.doReturn(requestMock).when(service, "buildServerInfoRequest", "expiration");
PowerMockito.doReturn(operationResultMock).when(requestMock).get();
OperationResult<String> retrieved = service.expiration();
PowerMockito.verifyPrivate(service, times(1)).invoke("buildServerInfoRequest", "expiration");
assertSame(retrieved, operationResultMock);
}
@Test
public void should_return_proper_licence_type() throws Exception {
ServerInfoService service = PowerMockito.spy(new ServerInfoService(sessionStorageMock));
PowerMockito.doReturn(requestMock).when(service, "buildServerInfoRequest", "licenseType");
PowerMockito.doReturn(operationResultMock).when(requestMock).get();
OperationResult<String> retrieved = service.licenseType();
PowerMockito.verifyPrivate(service, times(1)).invoke("buildServerInfoRequest", "licenseType");
assertSame(retrieved, operationResultMock);
}
@Test
public void should_return_proper_edition_name() throws Exception {
ServerInfoService service = PowerMockito.spy(new ServerInfoService(sessionStorageMock));
PowerMockito.doReturn(requestMock).when(service, "buildServerInfoRequest", "editionName");
PowerMockito.doReturn(operationResultMock).when(requestMock).get();
OperationResult<String> retrieved = service.editionName();
PowerMockito.verifyPrivate(service, times(1)).invoke("buildServerInfoRequest", "editionName");
assertSame(retrieved, operationResultMock);
}
@Test
public void should_return_proper_features() throws Exception {
ServerInfoService service = PowerMockito.spy(new ServerInfoService(sessionStorageMock));
PowerMockito.doReturn(requestMock).when(service, "buildServerInfoRequest", "features");
PowerMockito.doReturn(operationResultMock).when(requestMock).get();
OperationResult<String> retrieved = service.features();
PowerMockito.verifyPrivate(service, times(1)).invoke("buildServerInfoRequest", "features");
assertSame(retrieved, operationResultMock);
}
@Test
public void should_return_proper_build() throws Exception {
ServerInfoService service = PowerMockito.spy(new ServerInfoService(sessionStorageMock));
PowerMockito.doReturn(requestMock).when(service, "buildServerInfoRequest", "build");
PowerMockito.doReturn(operationResultMock).when(requestMock).get();
OperationResult<String> retrieved = service.build();
PowerMockito.verifyPrivate(service, times(1)).invoke("buildServerInfoRequest", "build");
assertSame(retrieved, operationResultMock);
}
@Test
public void should_return_proper_server_version() throws Exception {
ServerInfoService service = PowerMockito.spy(new ServerInfoService(sessionStorageMock));
PowerMockito.doReturn(requestMock).when(service, "buildServerInfoRequest", "version");
PowerMockito.doReturn(operationResultMock).when(requestMock).get();
OperationResult<String> retrieved = service.version();
PowerMockito.verifyPrivate(service, times(1)).invoke("buildServerInfoRequest", "version");
assertSame(retrieved, operationResultMock);
}
@Test
public void should_return_proper_server_details() {
PowerMockito.mockStatic(JerseyRequest.class);
PowerMockito.when(JerseyRequest.buildRequest(eq(sessionStorageMock),
eq(ServerInfo.class),
eq(new String[]{"serverInfo"}))).thenReturn(serverInfoJerseyRequest);
PowerMockito.doReturn(serverInfoOperationResult).when(serverInfoJerseyRequest).get();
ServerInfoService service = new ServerInfoService(sessionStorageMock);
OperationResult<ServerInfo> details = service.details();
assertSame(details, serverInfoOperationResult);
verifyStatic(times(1));
JerseyRequest.buildRequest(eq(sessionStorageMock), eq(ServerInfo.class), eq(new String[]{"serverInfo"}));
}
@Test
public void should_return_proper_edition() {
// Given
final String path = "edition";
PowerMockito.mockStatic(JerseyRequest.class);
PowerMockito.when(JerseyRequest.buildRequest(eq(sessionStorageMock), eq(String.class), eq(new String[]{"serverInfo", path}))).thenReturn(requestMock);
PowerMockito.doReturn(builderMock).when(requestMock).setAccept("text/plain");
PowerMockito.doReturn(operationResultMock).when(requestMock).get();
// When
ServerInfoService service = new ServerInfoService(sessionStorageMock);
OperationResult<String> edition = service.edition();
// Then
verifyStatic(times(1));
JerseyRequest.buildRequest(eq(sessionStorageMock), eq(String.class), eq(new String[]{"serverInfo", path}));
assertSame(edition, operationResultMock);
Mockito.verify(requestMock).setAccept("text/plain");
Mockito.verify(requestMock).get();
}
@AfterMethod
public void after() {
reset(sessionStorageMock, requestMock, builderMock, operationResultMock, serverInfoJerseyRequest, serverInfoOperationResult);
}
}