From ba0faa9784bfe77abe3ca1cde5a639626a78a13b Mon Sep 17 00:00:00 2001 From: ivinokur Date: Thu, 9 May 2024 18:01:27 +0300 Subject: [PATCH] fixup! Support raw devfile urls without yaml extension --- .../RawDevfileUrlFactoryParameterResolver.java | 4 +++- ...DevfileUrlFactoryParameterResolverTest.java | 18 +++++++++++++++++- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/wsmaster/che-core-api-factory/src/main/java/org/eclipse/che/api/factory/server/RawDevfileUrlFactoryParameterResolver.java b/wsmaster/che-core-api-factory/src/main/java/org/eclipse/che/api/factory/server/RawDevfileUrlFactoryParameterResolver.java index 56525a0f44..241e65bb1f 100644 --- a/wsmaster/che-core-api-factory/src/main/java/org/eclipse/che/api/factory/server/RawDevfileUrlFactoryParameterResolver.java +++ b/wsmaster/che-core-api-factory/src/main/java/org/eclipse/che/api/factory/server/RawDevfileUrlFactoryParameterResolver.java @@ -77,7 +77,9 @@ public class RawDevfileUrlFactoryParameterResolver extends BaseFactoryParameterR String fetch = urlFetcher.fetch(requestURL); devfileParser.parseYaml(fetch); return true; - } catch (IOException | DevfileFormatException e) { + } catch (IOException e) { + return false; + } catch (DevfileFormatException e) { return !e.getMessage().startsWith("Cannot construct instance of"); } } diff --git a/wsmaster/che-core-api-factory/src/test/java/org/eclipse/che/api/factory/server/RawDevfileUrlFactoryParameterResolverTest.java b/wsmaster/che-core-api-factory/src/test/java/org/eclipse/che/api/factory/server/RawDevfileUrlFactoryParameterResolverTest.java index 5b5bce7709..1d1e7f0fd4 100644 --- a/wsmaster/che-core-api-factory/src/test/java/org/eclipse/che/api/factory/server/RawDevfileUrlFactoryParameterResolverTest.java +++ b/wsmaster/che-core-api-factory/src/test/java/org/eclipse/che/api/factory/server/RawDevfileUrlFactoryParameterResolverTest.java @@ -30,6 +30,7 @@ import static org.testng.Assert.fail; import static org.testng.AssertJUnit.assertEquals; import static org.testng.AssertJUnit.assertTrue; +import java.io.FileNotFoundException; import java.util.HashMap; import java.util.Map; import org.eclipse.che.api.core.BadRequestException; @@ -185,7 +186,7 @@ public class RawDevfileUrlFactoryParameterResolverTest { } @Test - public void shouldNotAcceptGitRepositoryUrl() throws Exception { + public void shouldNotAcceptPublicGitRepositoryUrl() throws Exception { // given String gitRepositoryUrl = "https://host/user/repo.git"; when(urlFetcher.fetch(eq(gitRepositoryUrl))).thenReturn("unsupported content"); @@ -201,6 +202,21 @@ public class RawDevfileUrlFactoryParameterResolverTest { assertFalse(result); } + @Test + public void shouldNotAcceptPrivateGitRepositoryUrl() throws Exception { + // given + String gitRepositoryUrl = "https://host/user/private-repo.git"; + when(urlFetcher.fetch(eq(gitRepositoryUrl))).thenThrow(new FileNotFoundException()); + + // when + boolean result = + rawDevfileUrlFactoryParameterResolver.accept( + singletonMap(URL_PARAMETER_NAME, gitRepositoryUrl)); + + // then + assertFalse(result); + } + @DataProvider(name = "invalidURLsProvider") private Object[][] invalidUrlsProvider() { return new Object[][] {