Merge branch 'release' of github.com:appsmithorg/appsmith into release
This commit is contained in:
commit
52d5c4bdcd
8
.github/workflows/client.yml
vendored
8
.github/workflows/client.yml
vendored
|
|
@ -153,6 +153,10 @@ jobs:
|
||||||
CYPRESS_URL: ${{ secrets.CYPRESS_URL }}
|
CYPRESS_URL: ${{ secrets.CYPRESS_URL }}
|
||||||
CYPRESS_USERNAME: ${{ secrets.CYPRESS_USERNAME }}
|
CYPRESS_USERNAME: ${{ secrets.CYPRESS_USERNAME }}
|
||||||
CYPRESS_PASSWORD: ${{ secrets.CYPRESS_PASSWORD }}
|
CYPRESS_PASSWORD: ${{ secrets.CYPRESS_PASSWORD }}
|
||||||
|
CYPRESS_TESTUSERNAME1: ${{ secrets.CYPRESS_TESTUSERNAME1 }}
|
||||||
|
CYPRESS_TESTPASSWORD1: ${{ secrets.CYPRESS_TESTPASSWORD1 }}
|
||||||
|
CYPRESS_TESTUSERNAME2: ${{ secrets.CYPRESS_TESTUSERNAME2 }}
|
||||||
|
CYPRESS_TESTPASSWORD2: ${{ secrets.CYPRESS_TESTPASSWORD1 }}
|
||||||
run: |
|
run: |
|
||||||
./cypress/setup-test.sh
|
./cypress/setup-test.sh
|
||||||
|
|
||||||
|
|
@ -164,6 +168,10 @@ jobs:
|
||||||
CYPRESS_PROJECT_ID: ${{ secrets.CYPRESS_PROJECT_ID }}
|
CYPRESS_PROJECT_ID: ${{ secrets.CYPRESS_PROJECT_ID }}
|
||||||
CYPRESS_USERNAME: ${{ secrets.CYPRESS_USERNAME }}
|
CYPRESS_USERNAME: ${{ secrets.CYPRESS_USERNAME }}
|
||||||
CYPRESS_PASSWORD: ${{ secrets.CYPRESS_PASSWORD }}
|
CYPRESS_PASSWORD: ${{ secrets.CYPRESS_PASSWORD }}
|
||||||
|
CYPRESS_TESTUSERNAME1: ${{ secrets.CYPRESS_TESTUSERNAME1 }}
|
||||||
|
CYPRESS_TESTPASSWORD1: ${{ secrets.CYPRESS_TESTPASSWORD1 }}
|
||||||
|
CYPRESS_TESTUSERNAME2: ${{ secrets.CYPRESS_TESTUSERNAME2 }}
|
||||||
|
CYPRESS_TESTPASSWORD2: ${{ secrets.CYPRESS_TESTPASSWORD1 }}
|
||||||
with:
|
with:
|
||||||
browser: chrome
|
browser: chrome
|
||||||
headless: true
|
headless: true
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
"methods": "users",
|
"methods": "users",
|
||||||
"headerKey": "Content-Type",
|
"headerKey": "Content-Type",
|
||||||
"headerValue": "application/json",
|
"headerValue": "application/json",
|
||||||
"headerValueBlank": " ",
|
"headerValueBlank": "",
|
||||||
"queryKey": "page",
|
"queryKey": "page",
|
||||||
"queryValue": "2",
|
"queryValue": "2",
|
||||||
"queryAndValue": "users?page=2",
|
"queryAndValue": "users?page=2",
|
||||||
|
|
|
||||||
|
|
@ -112,8 +112,8 @@ describe("API Panel Test Functionality", function() {
|
||||||
cy.EnterSourceDetailsWithHeader(
|
cy.EnterSourceDetailsWithHeader(
|
||||||
testdata.baseUrl,
|
testdata.baseUrl,
|
||||||
testdata.methods,
|
testdata.methods,
|
||||||
testdata.headerKey,
|
testdata.headerValueBlank,
|
||||||
testdata.headerValue,
|
testdata.headerValueBlank,
|
||||||
);
|
);
|
||||||
cy.RunAPI();
|
cy.RunAPI();
|
||||||
cy.ResponseStatusCheck(testdata.successStatusCode);
|
cy.ResponseStatusCheck(testdata.successStatusCode);
|
||||||
|
|
@ -142,8 +142,8 @@ describe("API Panel Test Functionality", function() {
|
||||||
cy.EnterSourceDetailsWithQueryParam(
|
cy.EnterSourceDetailsWithQueryParam(
|
||||||
testdata.baseUrl,
|
testdata.baseUrl,
|
||||||
testdata.methods,
|
testdata.methods,
|
||||||
testdata.headerKey,
|
testdata.headerValueBlank,
|
||||||
testdata.headerValue,
|
testdata.headerValueBlank,
|
||||||
testdata.queryKey,
|
testdata.queryKey,
|
||||||
testdata.queryValue,
|
testdata.queryValue,
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -1,35 +1,39 @@
|
||||||
/// <reference types="Cypress" />
|
/*
|
||||||
const testdata = require("../../../fixtures/testdata.json");
|
* Commenting because CE does not have marketplace anymore
|
||||||
const apiwidget = require("../../../locators/apiWidgetslocator.json");
|
*
|
||||||
describe("API Panel Test Functionality ", function() {
|
* */
|
||||||
it("Test Market place API by adding to a page", function() {
|
// /// <reference types="Cypress" />
|
||||||
cy.log("Login Successful");
|
// const testdata = require("../../../fixtures/testdata.json");
|
||||||
cy.NavigateToAPI_Panel();
|
// const apiwidget = require("../../../locators/apiWidgetslocator.json");
|
||||||
cy.wait("@getCategories");
|
// describe("API Panel Test Functionality ", function() {
|
||||||
cy.wait("@getTemplateCollections");
|
// it("Test Market place API by adding to a page", function() {
|
||||||
cy.wait("@get3PProviders");
|
// cy.log("Login Successful");
|
||||||
cy.log("Navigation to API Panel screen successful");
|
// cy.NavigateToAPI_Panel();
|
||||||
cy.get(apiwidget.marketPlaceapi)
|
// cy.wait("@getCategories");
|
||||||
.first()
|
// cy.wait("@getTemplateCollections");
|
||||||
.click();
|
// cy.wait("@get3PProviders");
|
||||||
cy.wait("@get3PProviderTemplates");
|
// cy.log("Navigation to API Panel screen successful");
|
||||||
cy.get(".apiName")
|
// cy.get(apiwidget.marketPlaceapi)
|
||||||
.first()
|
// .first()
|
||||||
.invoke("text")
|
// .click();
|
||||||
.then(ApiName => {
|
// cy.wait("@get3PProviderTemplates");
|
||||||
cy.get(apiwidget.addPageButton)
|
// cy.get(".apiName")
|
||||||
.first()
|
// .first()
|
||||||
.click();
|
// .invoke("text")
|
||||||
const searchApiName = ApiName.replace(/\s/g, "");
|
// .then(ApiName => {
|
||||||
cy.log(searchApiName);
|
// cy.get(apiwidget.addPageButton)
|
||||||
cy.wait("@getActions");
|
// .first()
|
||||||
cy.SearchAPIandClick(searchApiName);
|
// .click();
|
||||||
cy.get(apiwidget.apidocumentaionLink)
|
// const searchApiName = ApiName.replace(/\s/g, "");
|
||||||
.invoke("text")
|
// cy.log(searchApiName);
|
||||||
.then(apidocumentation => {
|
// cy.wait("@getActions");
|
||||||
cy.log(apidocumentation);
|
// cy.SearchAPIandClick(searchApiName);
|
||||||
expect(apidocumentation).to.eq("API documentation");
|
// cy.get(apiwidget.apidocumentaionLink)
|
||||||
});
|
// .invoke("text")
|
||||||
});
|
// .then(apidocumentation => {
|
||||||
});
|
// cy.log(apidocumentation);
|
||||||
});
|
// expect(apidocumentation).to.eq("API documentation");
|
||||||
|
// });
|
||||||
|
// });
|
||||||
|
// });
|
||||||
|
// });
|
||||||
|
|
|
||||||
|
|
@ -1307,10 +1307,8 @@ Cypress.Commands.add("startServerAndRoutes", () => {
|
||||||
cy.route("POST", "/api/v1/applications/publish/*").as("publishApp");
|
cy.route("POST", "/api/v1/applications/publish/*").as("publishApp");
|
||||||
cy.route("PUT", "/api/v1/layouts/*/pages/*").as("updateLayout");
|
cy.route("PUT", "/api/v1/layouts/*/pages/*").as("updateLayout");
|
||||||
|
|
||||||
cy.route("PUT", "/api/v1/actions/*").as("putActions");
|
|
||||||
cy.route("POST", "/track/*").as("postTrack");
|
cy.route("POST", "/track/*").as("postTrack");
|
||||||
cy.route("POST", "/api/v1/actions/execute").as("postExecute");
|
cy.route("POST", "/api/v1/actions/execute").as("postExecute");
|
||||||
cy.route("POST", "/api/v1/actions").as("postaction");
|
|
||||||
|
|
||||||
cy.route("POST", "/api/v1/actions").as("createNewApi");
|
cy.route("POST", "/api/v1/actions").as("createNewApi");
|
||||||
cy.route("POST", "/api/v1/import?type=CURL&pageId=*&name=*").as("curlImport");
|
cy.route("POST", "/api/v1/import?type=CURL&pageId=*&name=*").as("curlImport");
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@ import {
|
||||||
ReduxAction,
|
ReduxAction,
|
||||||
ReduxActionErrorTypes,
|
ReduxActionErrorTypes,
|
||||||
} from "constants/ReduxActionConstants";
|
} from "constants/ReduxActionConstants";
|
||||||
import { Action, RestAction } from "entities/Action";
|
import { Action } from "entities/Action";
|
||||||
import { batchAction } from "actions/batchActions";
|
import { batchAction } from "actions/batchActions";
|
||||||
|
|
||||||
export const createActionRequest = (payload: Partial<Action>) => {
|
export const createActionRequest = (payload: Partial<Action>) => {
|
||||||
|
|
@ -50,7 +50,7 @@ export const fetchActionsForPage = (pageId: string) => {
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
export const fetchActionsForPageSuccess = (actions: RestAction[]) => {
|
export const fetchActionsForPageSuccess = (actions: Action[]) => {
|
||||||
return {
|
return {
|
||||||
type: ReduxActionTypes.FETCH_ACTIONS_FOR_PAGE_SUCCESS,
|
type: ReduxActionTypes.FETCH_ACTIONS_FOR_PAGE_SUCCESS,
|
||||||
payload: actions,
|
payload: actions,
|
||||||
|
|
@ -74,7 +74,7 @@ export const updateAction = (payload: { id: string }) => {
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
export const updateActionSuccess = (payload: { data: RestAction }) => {
|
export const updateActionSuccess = (payload: { data: Action }) => {
|
||||||
return {
|
return {
|
||||||
type: ReduxActionTypes.UPDATE_ACTION_SUCCESS,
|
type: ReduxActionTypes.UPDATE_ACTION_SUCCESS,
|
||||||
payload,
|
payload,
|
||||||
|
|
@ -107,7 +107,7 @@ export const moveActionRequest = (payload: {
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
export const moveActionSuccess = (payload: RestAction) => {
|
export const moveActionSuccess = (payload: Action) => {
|
||||||
return {
|
return {
|
||||||
type: ReduxActionTypes.MOVE_ACTION_SUCCESS,
|
type: ReduxActionTypes.MOVE_ACTION_SUCCESS,
|
||||||
payload,
|
payload,
|
||||||
|
|
@ -135,10 +135,7 @@ export const copyActionRequest = (payload: {
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
export const copyActionSuccess = (payload: {
|
export const copyActionSuccess = (payload: Action) => {
|
||||||
id: string;
|
|
||||||
destinationPageId: string;
|
|
||||||
}) => {
|
|
||||||
return {
|
return {
|
||||||
type: ReduxActionTypes.COPY_ACTION_SUCCESS,
|
type: ReduxActionTypes.COPY_ACTION_SUCCESS,
|
||||||
payload,
|
payload,
|
||||||
|
|
|
||||||
|
|
@ -46,35 +46,17 @@ type Props = EditorProps &
|
||||||
|
|
||||||
class EmbeddedDatasourcePathComponent extends React.Component<Props> {
|
class EmbeddedDatasourcePathComponent extends React.Component<Props> {
|
||||||
handleDatasourceUrlUpdate = (datasourceUrl: string) => {
|
handleDatasourceUrlUpdate = (datasourceUrl: string) => {
|
||||||
const { datasource, pluginId, orgId, datasourceList } = this.props;
|
const { datasource, pluginId, orgId } = this.props;
|
||||||
const urlHasUpdated =
|
const urlHasUpdated =
|
||||||
datasourceUrl !== datasource.datasourceConfiguration?.url;
|
datasourceUrl !== datasource.datasourceConfiguration?.url;
|
||||||
if (urlHasUpdated) {
|
if (urlHasUpdated) {
|
||||||
if ("id" in datasource && datasource.id) {
|
this.props.updateDatasource({
|
||||||
this.props.updateDatasource({
|
...DEFAULT_DATASOURCE(pluginId, orgId),
|
||||||
...DEFAULT_DATASOURCE(pluginId, orgId),
|
datasourceConfiguration: {
|
||||||
datasourceConfiguration: {
|
...datasource.datasourceConfiguration,
|
||||||
...datasource.datasourceConfiguration,
|
url: datasourceUrl,
|
||||||
url: datasourceUrl,
|
},
|
||||||
},
|
});
|
||||||
});
|
|
||||||
} else {
|
|
||||||
const matchesExistingDatasource = _.find(
|
|
||||||
datasourceList,
|
|
||||||
d => d.datasourceConfiguration?.url === datasourceUrl,
|
|
||||||
);
|
|
||||||
if (matchesExistingDatasource) {
|
|
||||||
this.props.updateDatasource(matchesExistingDatasource);
|
|
||||||
} else {
|
|
||||||
this.props.updateDatasource({
|
|
||||||
...DEFAULT_DATASOURCE(pluginId, orgId),
|
|
||||||
datasourceConfiguration: {
|
|
||||||
...datasource.datasourceConfiguration,
|
|
||||||
url: datasourceUrl,
|
|
||||||
},
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -113,7 +95,7 @@ class EmbeddedDatasourcePathComponent extends React.Component<Props> {
|
||||||
const matches = value.match(urlGroupsRegexExp);
|
const matches = value.match(urlGroupsRegexExp);
|
||||||
if (matches && matches.length) {
|
if (matches && matches.length) {
|
||||||
datasourceUrl = matches[1];
|
datasourceUrl = matches[1];
|
||||||
path = `${matches[2]}${matches[3]}`;
|
path = `${matches[2] || ""}${matches[3] || ""}`;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
datasourceUrl = value;
|
datasourceUrl = value;
|
||||||
|
|
|
||||||
|
|
@ -249,6 +249,7 @@ const actionsReducer = createReducer(initialState, {
|
||||||
...a,
|
...a,
|
||||||
config: {
|
config: {
|
||||||
...a.config,
|
...a.config,
|
||||||
|
id: "TEMP_COPY_ID",
|
||||||
name: action.payload.name,
|
name: action.payload.name,
|
||||||
pageId: action.payload.destinationPageId,
|
pageId: action.payload.destinationPageId,
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -384,7 +384,7 @@ export function* refactorActionName(
|
||||||
}
|
}
|
||||||
|
|
||||||
function* saveApiNameSaga(action: ReduxAction<{ id: string; name: string }>) {
|
function* saveApiNameSaga(action: ReduxAction<{ id: string; name: string }>) {
|
||||||
// Takes from drafts, checks if the name isValid, saves
|
// Takes from state, checks if the name isValid, saves
|
||||||
const apiId = action.payload.id;
|
const apiId = action.payload.id;
|
||||||
const api = yield select(state =>
|
const api = yield select(state =>
|
||||||
state.entities.actions.find(
|
state.entities.actions.find(
|
||||||
|
|
|
||||||
|
|
@ -49,7 +49,7 @@ cd $boot_script_path
|
||||||
sudo curl -O https://raw.githubusercontent.com/appsmithorg/appsmith/release/deploy/configure-ssl.sh
|
sudo curl -O https://raw.githubusercontent.com/appsmithorg/appsmith/release/deploy/configure-ssl.sh
|
||||||
sudo chown ubuntu:ubuntu $boot_script_path/$config_ssl_file_name && sudo chmod +x $boot_script_path/$config_ssl_file_name
|
sudo chown ubuntu:ubuntu $boot_script_path/$config_ssl_file_name && sudo chmod +x $boot_script_path/$config_ssl_file_name
|
||||||
|
|
||||||
sudo curl -O https://raw.githubusercontent.com/appsmithorg/appsmith/feature/deploy-script/deploy/aws/boot.sh
|
sudo curl -O https://raw.githubusercontent.com/appsmithorg/appsmith/release/deploy/aws/boot.sh
|
||||||
sudo chown ubuntu:ubuntu $boot_script_path/$boot_file_name && sudo chmod +x $boot_script_path/$boot_file_name
|
sudo chown ubuntu:ubuntu $boot_script_path/$boot_file_name && sudo chmod +x $boot_script_path/$boot_file_name
|
||||||
|
|
||||||
USER="ubuntu"
|
USER="ubuntu"
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user