Do not throw an error on token refresh when starting a workspace
parent
92b37d2b6e
commit
379ce02be2
|
|
@ -43,6 +43,8 @@ import org.eclipse.che.api.factory.server.scm.exception.UnknownScmProviderExcept
|
|||
import org.eclipse.che.api.factory.server.scm.exception.UnsatisfiedScmPreconditionException;
|
||||
import org.eclipse.che.api.factory.shared.dto.FactoryMetaDto;
|
||||
import org.eclipse.che.security.oauth.AuthorisationRequestManager;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
/**
|
||||
* Defines Factory REST API.
|
||||
|
|
@ -61,6 +63,8 @@ public class FactoryService extends Service {
|
|||
/** Validate query parameter. If true, factory will be validated */
|
||||
public static final String VALIDATE_QUERY_PARAMETER = "validate";
|
||||
|
||||
private static final Logger LOG = LoggerFactory.getLogger(FactoryService.class);
|
||||
|
||||
private final FactoryAcceptValidator acceptValidator;
|
||||
private final FactoryParametersResolverHolder factoryParametersResolverHolder;
|
||||
private final AdditionalFilenamesProvider additionalFilenamesProvider;
|
||||
|
|
@ -160,7 +164,8 @@ public class FactoryService extends Service {
|
|||
| ScmConfigurationPersistenceException
|
||||
| UnknownScmProviderException
|
||||
| UnsatisfiedScmPreconditionException e) {
|
||||
throw new ApiException(e);
|
||||
// Do not throw an exception here, proceed the workspace start.
|
||||
LOG.debug("Failed to update the OAuth token", e);
|
||||
} catch (ScmUnauthorizedException e) {
|
||||
throw toApiException(e);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -55,6 +55,10 @@ import org.eclipse.che.api.factory.server.FactoryService.FactoryParametersResolv
|
|||
import org.eclipse.che.api.factory.server.builder.FactoryBuilder;
|
||||
import org.eclipse.che.api.factory.server.impl.SourceStorageParametersValidator;
|
||||
import org.eclipse.che.api.factory.server.scm.PersonalAccessTokenManager;
|
||||
import org.eclipse.che.api.factory.server.scm.exception.ScmCommunicationException;
|
||||
import org.eclipse.che.api.factory.server.scm.exception.ScmConfigurationPersistenceException;
|
||||
import org.eclipse.che.api.factory.server.scm.exception.UnknownScmProviderException;
|
||||
import org.eclipse.che.api.factory.server.scm.exception.UnsatisfiedScmPreconditionException;
|
||||
import org.eclipse.che.api.factory.server.urlfactory.RemoteFactoryUrl;
|
||||
import org.eclipse.che.api.factory.shared.dto.FactoryDto;
|
||||
import org.eclipse.che.api.user.server.PreferenceManager;
|
||||
|
|
@ -72,6 +76,7 @@ import org.mockito.InjectMocks;
|
|||
import org.mockito.Mock;
|
||||
import org.mockito.testng.MockitoTestNGListener;
|
||||
import org.testng.annotations.BeforeMethod;
|
||||
import org.testng.annotations.DataProvider;
|
||||
import org.testng.annotations.Listeners;
|
||||
import org.testng.annotations.Test;
|
||||
|
||||
|
|
@ -309,6 +314,48 @@ public class FactoryServiceTest {
|
|||
"Factory url required");
|
||||
}
|
||||
|
||||
@Test(dataProvider = "exceptionProvider")
|
||||
public void shouldNotThrowExceptionOtherThenScmUnauthorizedException(
|
||||
Class<Throwable> throwableClass) throws Exception {
|
||||
// given
|
||||
final FactoryParametersResolverHolder dummyHolder = spy(factoryParametersResolverHolder);
|
||||
FactoryParametersResolver factoryParametersResolver = mock(FactoryParametersResolver.class);
|
||||
doReturn(factoryParametersResolver).when(dummyHolder).getFactoryParametersResolver(anyMap());
|
||||
RemoteFactoryUrl remoteFactoryUrl = mock(RemoteFactoryUrl.class);
|
||||
when(factoryParametersResolver.parseFactoryUrl(eq("someUrl"))).thenReturn(remoteFactoryUrl);
|
||||
when(remoteFactoryUrl.getProviderUrl()).thenReturn(scmServerUrl);
|
||||
when(authorisationRequestManager.isStored(any())).thenReturn(false);
|
||||
when(personalAccessTokenManager.getAndStore(any())).thenThrow(throwableClass);
|
||||
service =
|
||||
new FactoryService(
|
||||
acceptValidator,
|
||||
dummyHolder,
|
||||
additionalFilenamesProvider,
|
||||
personalAccessTokenManager,
|
||||
authorisationRequestManager);
|
||||
|
||||
// when
|
||||
Response response =
|
||||
given()
|
||||
.contentType(ContentType.JSON)
|
||||
.when()
|
||||
.queryParam("url", "someUrl")
|
||||
.post(SERVICE_PATH + "/token/refresh");
|
||||
|
||||
// then
|
||||
assertEquals(response.getStatusCode(), 204);
|
||||
}
|
||||
|
||||
@DataProvider(name = "exceptionProvider")
|
||||
private Object[] exceptionClasses() {
|
||||
return new Class[] {
|
||||
ScmCommunicationException.class,
|
||||
ScmConfigurationPersistenceException.class,
|
||||
UnknownScmProviderException.class,
|
||||
UnsatisfiedScmPreconditionException.class
|
||||
};
|
||||
}
|
||||
|
||||
@Test
|
||||
public void shouldReturnDefaultFactoryParameterResolver() throws Exception {
|
||||
// given
|
||||
|
|
|
|||
Loading…
Reference in New Issue