From dd0ba857c21228dd0acc4bea55672b3f5ada0b12 Mon Sep 17 00:00:00 2001 From: Shrikant Kandula Date: Tue, 16 Jun 2020 09:59:43 +0530 Subject: [PATCH 1/2] Fix cURL import when using `--url` argument Also fixes cases where there's a space between `-X` and `POST` and similar cases. --- .../server/services/CurlImporterService.java | 16 +++++++++++---- .../services/CurlImporterServiceTest.java | 20 +++++++++++++++++++ 2 files changed, 32 insertions(+), 4 deletions(-) diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/services/CurlImporterService.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/services/CurlImporterService.java index 1fbe002a7c..60e2febc82 100644 --- a/app/server/appsmith-server/src/main/java/com/appsmith/server/services/CurlImporterService.java +++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/services/CurlImporterService.java @@ -190,7 +190,9 @@ public class CurlImporterService extends BaseApiImporter { } else if (token.startsWith("-d")) { // `-dstuff` -> `--data stuff` normalizedTokens.add(ARG_DATA); - normalizedTokens.add(token.substring(2)); + if (token.length() > 2) { + normalizedTokens.add(token.substring(2)); + } } else if ("-H".equals(token)) { normalizedTokens.add(ARG_HEADER); @@ -198,7 +200,9 @@ public class CurlImporterService extends BaseApiImporter { } else if (token.startsWith("-H")) { // `-HContent-Type:application/json` -> `--header Content-Type:application/json` normalizedTokens.add(ARG_HEADER); - normalizedTokens.add(token.substring(2)); + if (token.length() > 2) { + normalizedTokens.add(token.substring(2)); + } } else if ("-X".equals(token)) { normalizedTokens.add(ARG_REQUEST); @@ -206,7 +210,9 @@ public class CurlImporterService extends BaseApiImporter { } else if (token.startsWith("-X")) { // `-XGET` -> `--request GET` normalizedTokens.add(ARG_REQUEST); - normalizedTokens.add(token.substring(2).toUpperCase()); + if (token.length() > 2) { + normalizedTokens.add(token.substring(2).toUpperCase()); + } } else if ("-b".equals(token)) { normalizedTokens.add(ARG_COOKIE); @@ -217,7 +223,9 @@ public class CurlImporterService extends BaseApiImporter { } else if ("-A".equals(token)) { normalizedTokens.add(ARG_USER_AGENT); - } else { + } else if (!"--url".equals(token)) { + // We skip the `--url` argument since it's superfluous and URLs are directly sniffed out of the argument + // list. The `--url` argument holds no special significance in cURL. normalizedTokens.add(token); } diff --git a/app/server/appsmith-server/src/test/java/com/appsmith/server/services/CurlImporterServiceTest.java b/app/server/appsmith-server/src/test/java/com/appsmith/server/services/CurlImporterServiceTest.java index 58b2a2d141..4042b287e0 100644 --- a/app/server/appsmith-server/src/test/java/com/appsmith/server/services/CurlImporterServiceTest.java +++ b/app/server/appsmith-server/src/test/java/com/appsmith/server/services/CurlImporterServiceTest.java @@ -518,6 +518,26 @@ public class CurlImporterServiceTest { assertEmptyBody(action); } + @Test + public void parseWithDashedUrlArgument() { + Action action = curlImporterService.curlToAction("curl --url http://api.sloths.com"); + assertMethod(action, HttpMethod.GET); + assertUrl(action, "http://api.sloths.com"); + assertEmptyPath(action); + assertEmptyHeaders(action); + assertEmptyBody(action); + } + + @Test + public void parseWithDashedUrlArgument2() { + Action action = curlImporterService.curlToAction("curl -X POST -d '{\"name\":\"test\",\"salary\":\"123\",\"age\":\"23\"}' --url http://dummy.restapiexample.com/api/v1/create"); + assertMethod(action, HttpMethod.POST); + assertUrl(action, "http://dummy.restapiexample.com"); + assertPath(action, "/api/v1/create"); + assertHeaders(action, new Property("Content-Type", "application/x-www-form-urlencoded")); + assertBody(action, "{\"name\":\"test\",\"salary\":\"123\",\"age\":\"23\"}"); + } + @Test @WithUserDetails(value = "api_user") public void importInvalidCurlCommand() { From a4132d584578c46bd2e0abb41703fd4e08914e43 Mon Sep 17 00:00:00 2001 From: Arpit Mohan Date: Tue, 16 Jun 2020 10:50:07 +0530 Subject: [PATCH 2/2] Adding the widget names set to the default layout for a page --- .../src/main/java/com/appsmith/server/constants/FieldName.java | 1 + .../main/java/com/appsmith/server/services/PageServiceImpl.java | 2 ++ .../test/java/com/appsmith/server/services/PageServiceTest.java | 1 + 3 files changed, 4 insertions(+) diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/constants/FieldName.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/constants/FieldName.java index 3b4d6531d8..1a3c0b3a7c 100644 --- a/app/server/appsmith-server/src/main/java/com/appsmith/server/constants/FieldName.java +++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/constants/FieldName.java @@ -25,6 +25,7 @@ public class FieldName { public static String CATEGORY = "category"; public static String PAGE = "page"; public static String SIZE = "size"; + public static String DEFAULT_WIDGET_NAME = "MainContainer"; public static String DEFAULT_PAGE_LAYOUT = "{\n" + " \"widgetName\": \"MainContainer\",\n" + " \"backgroundColor\": \"none\",\n" + diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/services/PageServiceImpl.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/services/PageServiceImpl.java index 1d76bdddb5..39d7a08ee9 100644 --- a/app/server/appsmith-server/src/main/java/com/appsmith/server/services/PageServiceImpl.java +++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/services/PageServiceImpl.java @@ -27,6 +27,7 @@ import reactor.core.scheduler.Scheduler; import javax.validation.Validator; import java.util.List; +import java.util.Set; @Service @Slf4j @@ -81,6 +82,7 @@ public class PageServiceImpl extends BaseService i layout.setId(id); try { layout.setDsl((JSONObject) new JSONParser(JSONParser.MODE_PERMISSIVE).parse(FieldName.DEFAULT_PAGE_LAYOUT)); + layout.setWidgetNames(Set.of(FieldName.DEFAULT_WIDGET_NAME)); } catch (ParseException e) { log.error("Unable to set the default page layout for id: {}", id); } diff --git a/app/server/appsmith-server/src/test/java/com/appsmith/server/services/PageServiceTest.java b/app/server/appsmith-server/src/test/java/com/appsmith/server/services/PageServiceTest.java index b58c5b94e2..4faae4f54f 100644 --- a/app/server/appsmith-server/src/test/java/com/appsmith/server/services/PageServiceTest.java +++ b/app/server/appsmith-server/src/test/java/com/appsmith/server/services/PageServiceTest.java @@ -96,6 +96,7 @@ public class PageServiceTest { assertThat("PageServiceTest TestApp".equals(page.getName())); assertThat(page.getLayouts()).isNotEmpty(); assertThat(page.getLayouts().get(0).getDsl()).isEqualTo(parsedJson); + assertThat(page.getLayouts().get(0).getWidgetNames()).isNotEmpty(); }) .verifyComplete(); }