* migration from organization to workspace on code level * updated a few more files * fixed runtime errors * update org settings URL * Renamed organizationId in domain objects * changed field named from organization to workspace * Reverted AppsmithRole changes * fixed migrations * recreating indexes * migration update * seed data runs before migration, undo changes * mock commit * seedmongo to populate upgraded data, datasource upgrade * fixed two test cases * updated migrations * updated prop name * Upgraded AclPermission * comment * migrated AppsmithRole * more changes * final set of changes * variable name changes * update cypress variable name * Update app/server/appsmith-server/src/main/java/com/appsmith/server/controllers/ce/ApplicationControllerCE.java * Update app/server/appsmith-interfaces/src/main/java/com/appsmith/external/models/Datasource.java Co-authored-by: Trisha Anand <trisha@appsmith.com> * reverting encryption handler change * migrated a few missed out org to workspace * migrated a few missed out org to workspace * migration changes * Removed Permission import * fixed AppsmithRole * mongodb version update * fixed compile error * fixed compile issue * fixed some tests * simplified embedded mongodb config * updated a cypress test Co-authored-by: Sidhant Goel <sidhant@appsmith.com> Co-authored-by: Trisha Anand <trisha@appsmith.com> Co-authored-by: Sidhant Goel <sidhant@hexcod.in>
330 lines
8.2 KiB
TypeScript
330 lines
8.2 KiB
TypeScript
import { transformRestAction } from "transformers/RestActionTransformer";
|
|
import { PluginType, ApiAction } from "entities/Action";
|
|
import {
|
|
MultiPartOptionTypes,
|
|
POST_BODY_FORMAT_OPTIONS,
|
|
// POST_BODY_FORMAT_OPTIONS_ENUM,
|
|
} from "constants/ApiEditorConstants";
|
|
|
|
// jest.mock("POST_");
|
|
|
|
const BASE_ACTION: ApiAction = {
|
|
dynamicBindingPathList: [],
|
|
cacheResponse: "",
|
|
executeOnLoad: false,
|
|
invalids: [],
|
|
isValid: false,
|
|
workspaceId: "",
|
|
pageId: "",
|
|
pluginId: "",
|
|
id: "testId",
|
|
datasource: {
|
|
id: "testDataSource",
|
|
},
|
|
name: "testName",
|
|
pluginType: PluginType.API,
|
|
actionConfiguration: {
|
|
httpMethod: "GET",
|
|
encodeParamsToggle: true,
|
|
path: "users",
|
|
headers: [],
|
|
formData: {
|
|
apiContentType: "none",
|
|
},
|
|
timeoutInMillisecond: 5000,
|
|
},
|
|
jsonPathKeys: [],
|
|
};
|
|
|
|
describe("Api action transformer", () => {
|
|
it("Removes params from path", () => {
|
|
const input: ApiAction = {
|
|
...BASE_ACTION,
|
|
actionConfiguration: {
|
|
...BASE_ACTION.actionConfiguration,
|
|
path: "users?page=1",
|
|
queryParameters: [
|
|
{
|
|
key: "page",
|
|
value: "1",
|
|
},
|
|
],
|
|
},
|
|
};
|
|
|
|
const output = {
|
|
...BASE_ACTION,
|
|
actionConfiguration: {
|
|
...BASE_ACTION.actionConfiguration,
|
|
path: "users",
|
|
queryParameters: [
|
|
{
|
|
key: "page",
|
|
value: "1",
|
|
},
|
|
],
|
|
},
|
|
};
|
|
const result = transformRestAction(input);
|
|
expect(result).toEqual(output);
|
|
});
|
|
|
|
it("Sets the correct body for JSON display type", () => {
|
|
const input = {
|
|
...BASE_ACTION,
|
|
actionConfiguration: {
|
|
...BASE_ACTION.actionConfiguration,
|
|
httpMethod: "POST",
|
|
headers: [{ key: "content-type", value: "application/json" }],
|
|
body: "{ name: 'test' }",
|
|
},
|
|
};
|
|
const output = {
|
|
...BASE_ACTION,
|
|
actionConfiguration: {
|
|
...BASE_ACTION.actionConfiguration,
|
|
httpMethod: "POST",
|
|
headers: [{ key: "content-type", value: "application/json" }],
|
|
body: "{ name: 'test' }",
|
|
},
|
|
};
|
|
const result = transformRestAction(input);
|
|
expect(result).toEqual(output);
|
|
});
|
|
|
|
it("bodyFormData should not be reset for non xxx-form-encoded-data type", () => {
|
|
const input = {
|
|
...BASE_ACTION,
|
|
actionConfiguration: {
|
|
...BASE_ACTION.actionConfiguration,
|
|
httpMethod: "POST",
|
|
headers: [{ key: "content-type", value: "application/json" }],
|
|
body: "{ name: 'test' }",
|
|
bodyFormData: [
|
|
{
|
|
key: "hey",
|
|
value: "ho",
|
|
editable: true,
|
|
mandatory: false,
|
|
description: "I been tryin to do it right",
|
|
type: "",
|
|
},
|
|
],
|
|
},
|
|
};
|
|
const output = {
|
|
...BASE_ACTION,
|
|
actionConfiguration: {
|
|
...BASE_ACTION.actionConfiguration,
|
|
httpMethod: "POST",
|
|
headers: [{ key: "content-type", value: "application/json" }],
|
|
body: "{ name: 'test' }",
|
|
bodyFormData: [
|
|
{
|
|
key: "hey",
|
|
value: "ho",
|
|
editable: true,
|
|
mandatory: false,
|
|
description: "I been tryin to do it right",
|
|
type: "",
|
|
},
|
|
],
|
|
},
|
|
};
|
|
const result = transformRestAction(input);
|
|
expect(result).toEqual(output);
|
|
});
|
|
|
|
it("body should not be reset for xxx-form-encoded-data type", () => {
|
|
const input = {
|
|
...BASE_ACTION,
|
|
actionConfiguration: {
|
|
...BASE_ACTION.actionConfiguration,
|
|
httpMethod: "POST",
|
|
headers: [
|
|
{
|
|
key: "content-type",
|
|
value: POST_BODY_FORMAT_OPTIONS.FORM_URLENCODED,
|
|
},
|
|
],
|
|
bodyFormData: [
|
|
{
|
|
key: "hey",
|
|
value: "ho",
|
|
editable: true,
|
|
mandatory: false,
|
|
description: "I been tryin to do it right",
|
|
type: "",
|
|
},
|
|
],
|
|
body: "{ name: 'test' }",
|
|
},
|
|
};
|
|
const output = {
|
|
...BASE_ACTION,
|
|
actionConfiguration: {
|
|
...BASE_ACTION.actionConfiguration,
|
|
httpMethod: "POST",
|
|
headers: [
|
|
{
|
|
key: "content-type",
|
|
value: POST_BODY_FORMAT_OPTIONS.FORM_URLENCODED,
|
|
},
|
|
],
|
|
body: "{ name: 'test' }",
|
|
bodyFormData: [
|
|
{
|
|
key: "hey",
|
|
value: "ho",
|
|
editable: true,
|
|
mandatory: false,
|
|
description: "I been tryin to do it right",
|
|
type: "",
|
|
},
|
|
],
|
|
},
|
|
};
|
|
const result = transformRestAction(input);
|
|
expect(result).toEqual(output);
|
|
});
|
|
|
|
it("Sets the correct body for xxx-form-encoded-data display type", () => {
|
|
const input = {
|
|
...BASE_ACTION,
|
|
actionConfiguration: {
|
|
...BASE_ACTION.actionConfiguration,
|
|
httpMethod: "POST",
|
|
headers: [
|
|
{
|
|
key: "content-type",
|
|
value: POST_BODY_FORMAT_OPTIONS.FORM_URLENCODED,
|
|
},
|
|
],
|
|
bodyFormData: [
|
|
{
|
|
key: "hey",
|
|
value: "ho",
|
|
editable: true,
|
|
mandatory: false,
|
|
description: "I been tryin to do it right",
|
|
type: "",
|
|
},
|
|
],
|
|
},
|
|
};
|
|
const output = {
|
|
...BASE_ACTION,
|
|
actionConfiguration: {
|
|
...BASE_ACTION.actionConfiguration,
|
|
httpMethod: "POST",
|
|
headers: [
|
|
{
|
|
key: "content-type",
|
|
value: POST_BODY_FORMAT_OPTIONS.FORM_URLENCODED,
|
|
},
|
|
],
|
|
body: "",
|
|
bodyFormData: [
|
|
{
|
|
key: "hey",
|
|
value: "ho",
|
|
editable: true,
|
|
mandatory: false,
|
|
description: "I been tryin to do it right",
|
|
type: "",
|
|
},
|
|
],
|
|
},
|
|
};
|
|
const result = transformRestAction(input);
|
|
expect(result).toEqual(output);
|
|
});
|
|
|
|
it("Sets the correct body for custom/raw display type", () => {
|
|
const input = {
|
|
...BASE_ACTION,
|
|
actionConfiguration: {
|
|
...BASE_ACTION.actionConfiguration,
|
|
headers: [{ key: "content-type", value: "text/html" }],
|
|
httpMethod: "POST",
|
|
body: "raw body",
|
|
},
|
|
};
|
|
const output = {
|
|
...BASE_ACTION,
|
|
actionConfiguration: {
|
|
...BASE_ACTION.actionConfiguration,
|
|
headers: [{ key: "content-type", value: "text/html" }],
|
|
httpMethod: "POST",
|
|
body: "raw body",
|
|
},
|
|
};
|
|
const result = transformRestAction(input);
|
|
expect(result).toEqual(output);
|
|
});
|
|
|
|
it("filters empty pairs from form data", () => {
|
|
const input: ApiAction = {
|
|
...BASE_ACTION,
|
|
actionConfiguration: {
|
|
...BASE_ACTION.actionConfiguration,
|
|
httpMethod: "POST",
|
|
headers: [
|
|
{
|
|
key: "content-type",
|
|
value: POST_BODY_FORMAT_OPTIONS.MULTIPART_FORM_DATA,
|
|
},
|
|
],
|
|
body: "",
|
|
bodyFormData: [
|
|
{
|
|
key: "hey",
|
|
value: "ho",
|
|
type: MultiPartOptionTypes.TEXT,
|
|
editable: true,
|
|
mandatory: false,
|
|
description: "I been tryin to do it right",
|
|
},
|
|
{
|
|
key: "",
|
|
value: "",
|
|
editable: true,
|
|
mandatory: false,
|
|
description: "I been tryin to do it right",
|
|
type: "",
|
|
},
|
|
],
|
|
},
|
|
};
|
|
|
|
// output object should not include the second bodyFormData object
|
|
// as its key, value and type are empty
|
|
const output: ApiAction = {
|
|
...BASE_ACTION,
|
|
actionConfiguration: {
|
|
...BASE_ACTION.actionConfiguration,
|
|
httpMethod: "POST",
|
|
headers: [
|
|
{
|
|
key: "content-type",
|
|
value: POST_BODY_FORMAT_OPTIONS.MULTIPART_FORM_DATA,
|
|
},
|
|
],
|
|
body: "",
|
|
bodyFormData: [
|
|
{
|
|
key: "hey",
|
|
value: "ho",
|
|
type: MultiPartOptionTypes.TEXT,
|
|
editable: true,
|
|
mandatory: false,
|
|
description: "I been tryin to do it right",
|
|
},
|
|
],
|
|
},
|
|
};
|
|
const result = transformRestAction(input);
|
|
expect(result).toEqual(output);
|
|
});
|
|
});
|