PromucFlow_constructor/app/client/src/transformers/RestActionTransformers.test.ts
Ankita Kinger 9b7944e7ee
feat: migrate organisation to workspace (#13863)
* 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>
2022-06-15 21:07:41 +05:30

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);
});
});