From 78dafd3ce89a2b7948bee0075ed3dc02a2daf108 Mon Sep 17 00:00:00 2001 From: Geronimo Ortiz Date: Thu, 22 Aug 2024 15:36:12 -0300 Subject: [PATCH] Issue 29259 (#29656) The issue was being generated because of the addition of an image as dotAsset, if it was a File Asset, then everything was working ok. - To solve the removal of the image a check was added to see if it is a dotAsset, then avoid to cache the data. - To solve the missing data in the related content, "fileAsset" was added into the dotAsset properties with the data that "asset" property had, this workaround is to make the mapping of the fields like a File Asset. --- .../transform/strategy/FileViewStrategy.java | 1 + .../fileassets/business/FileAssetAPIImpl.java | 6 +- .../resources/postman/PagesResourceTests.json | 14157 ++++++++-------- 3 files changed, 7347 insertions(+), 6817 deletions(-) diff --git a/dotCMS/src/main/java/com/dotmarketing/portlets/contentlet/transform/strategy/FileViewStrategy.java b/dotCMS/src/main/java/com/dotmarketing/portlets/contentlet/transform/strategy/FileViewStrategy.java index eea9e99ab61e..be2202cc0505 100644 --- a/dotCMS/src/main/java/com/dotmarketing/portlets/contentlet/transform/strategy/FileViewStrategy.java +++ b/dotCMS/src/main/java/com/dotmarketing/portlets/contentlet/transform/strategy/FileViewStrategy.java @@ -111,6 +111,7 @@ public Map transform(final Field field, final Contentlet content //This does always assume we're getting a fileAsset we don't want to miss a dotAsset final Contentlet incoming = fileAsContentOptional.get(); if(incoming.isDotAsset()){ + incoming.setProperty(FileAssetAPI.BINARY_FIELD, Try.of(()->incoming.getBinary("asset")).getOrNull()); fileAsset = convertToFileAsset(incoming, fileAssetAPI); } else { fileAsset = fileAssetAPI.fromContentlet(incoming); diff --git a/dotCMS/src/main/java/com/dotmarketing/portlets/fileassets/business/FileAssetAPIImpl.java b/dotCMS/src/main/java/com/dotmarketing/portlets/fileassets/business/FileAssetAPIImpl.java index 0c7164a6fd3a..4d6726c17396 100644 --- a/dotCMS/src/main/java/com/dotmarketing/portlets/fileassets/business/FileAssetAPIImpl.java +++ b/dotCMS/src/main/java/com/dotmarketing/portlets/fileassets/business/FileAssetAPIImpl.java @@ -268,11 +268,13 @@ public FileAsset fromContentlet(final Contentlet con) throws DotStateException { throw new DotStateException("Content -> FileAsset Copy Failed :" + e.getMessage(), e); } fileAsset.setHost(con.getHost()); + Contentlet originalContentlet = null; if(UtilMethods.isSet(con.getFolder())){ try{ final Identifier ident = APILocator.getIdentifierAPI().find(con); final Host host = APILocator.getHostAPI().find(con.getHost(), APILocator.systemUser() , false); final Folder folder = APILocator.getFolderAPI().findFolderByPath(ident.getParentPath(), host, APILocator.systemUser(), false); + originalContentlet = APILocator.getContentletAPI().find(con.getInode(), APILocator.systemUser(), false); fileAsset.setFolder(folder.getInode()); }catch(Exception e){ try{ @@ -285,7 +287,9 @@ public FileAsset fromContentlet(final Contentlet con) throws DotStateException { } fileAsset.setVariantId(con.getVariantId()); - this.contentletCache.add(fileAsset); + if (null != originalContentlet && !originalContentlet.isDotAsset()){ + this.contentletCache.add(fileAsset); + } return fileAsset; } diff --git a/dotcms-postman/src/main/resources/postman/PagesResourceTests.json b/dotcms-postman/src/main/resources/postman/PagesResourceTests.json index fd72b5ac289c..e82d93fd4a40 100644 --- a/dotcms-postman/src/main/resources/postman/PagesResourceTests.json +++ b/dotcms-postman/src/main/resources/postman/PagesResourceTests.json @@ -1,6817 +1,7342 @@ - { - "info": { - "_postman_id": "5d246a25-bf38-49f7-86c8-1fafb5d88b0f", - "name": "Page API - [api/v1/page]", - "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json", - "_exporter_id": "30436704" - }, - "item": [ - { - "name": "CreateTestContext", - "item": [ - { - "name": "Delete Image ContentType", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code should be ok 200\", function () {", - " pm.response.to.have.status(200);", - "});" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "DELETE", - "header": [], - "url": { - "raw": "{{serverURL}}/api/v1/contenttype/id/2c46b6586c38852ac08a824a303ced80", - "host": [ - "{{serverURL}}" - ], - "path": [ - "api", - "v1", - "contenttype", - "id", - "2c46b6586c38852ac08a824a303ced80" - ] - }, - "description": "Given a content type ID.\nExpect that code is 200.\nExpect content type is deleted successfully." - }, - "response": [] - }, - { - "name": "Delete Video ContentType", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code should be ok 200\", function () {", - " pm.response.to.have.status(200);", - "});" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "DELETE", - "header": [], - "url": { - "raw": "{{serverURL}}/api/v1/contenttype/id/c77450b834901a20c8193ef9d561ee5b", - "host": [ - "{{serverURL}}" - ], - "path": [ - "api", - "v1", - "contenttype", - "id", - "c77450b834901a20c8193ef9d561ee5b" - ] - }, - "description": "Given a content type ID.\nExpect that code is 200.\nExpect content type is deleted successfully." - }, - "response": [] - }, - { - "name": "pre_ImportBundleWithContext", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Bundle uploaded sucessfully\", function () {", - " pm.response.to.have.status(200);", - "", - " var jsonData = pm.response.json();", - " console.log(jsonData);", - "", - " pm.expect(jsonData[\"bundleName\"]).to.eql(\"assets.tar.gz\");", - " pm.expect(jsonData[\"status\"]).to.eql(\"SUCCESS\");", - "});" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "POST", - "header": [ - { - "key": "Content-Type", - "value": "application/octet-stream" - }, - { - "key": "Content-Disposition", - "value": "attachment" - } - ], - "body": { - "mode": "formdata", - "formdata": [ - { - "key": "file", - "type": "file", - "src": "resources/GraphQL/assets.tar.gz" - } - ] - }, - "url": { - "raw": "{{serverURL}}/api/bundle/sync", - "host": [ - "{{serverURL}}" - ], - "path": [ - "api", - "bundle", - "sync" - ], - "query": [ - { - "key": "AUTH_TOKEN", - "value": "", - "disabled": true - } - ] - }, - "description": "Imports a Bundle that includes:\n* HTMLPage /blog/index\n* HTMLPage /blog/destinations/costa-rica\n* Contentlet [Blog] Ecotourism in Costa Rica\n* Blog Detail Page /blog/blog-detail" - }, - "response": [] - } - ], - "description": "Imports a Bundle that includes:\n* HTMLPage /blog/index\n* HTMLPage /blog/destinations/costa-rica\n* Contentlet [Blog] Ecotourism in Costa Rica\n* Blog Detail Page /blog/blog-detail", - "event": [ - { - "listen": "prerequest", - "script": { - "type": "text/javascript", - "exec": [ - "" - ] - } - }, - { - "listen": "test", - "script": { - "type": "text/javascript", - "exec": [ - "" - ] - } - } - ] - }, - { - "name": "JSON [api/v1/page/json]", - "item": [ - { - "name": "Using Actual Page URIs", - "item": [ - { - "name": "Invalidate Session", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 200\", function () {", - " pm.response.to.have.status(200);", - "});" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{serverURL}}/api/v1/logout", - "host": [ - "{{serverURL}}" - ], - "path": [ - "api", - "v1", - "logout" - ] - } - }, - "response": [] - }, - { - "name": "Get Page Metadata With Invalid User", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "", - "pm.test(\"Status code is 401, Need credentials\", function () {", - " pm.response.to.have.status(401);", - "});", - "", - "", - "", - "pm.test(\"Response body matches\", function () {", - " pm.expect(pm.response.text()).to.eq(\"Invalid User\");", - "});", - "" - ], - "type": "text/javascript" - } - } - ], - "request": { - "auth": { - "type": "noauth" - }, - "method": "GET", - "header": [], - "url": { - "raw": "{{serverURL}}/api/v1/page/json/destinations/costa-rica", - "host": [ - "{{serverURL}}" - ], - "path": [ - "api", - "v1", - "page", - "json", - "destinations", - "costa-rica" - ] - }, - "description": "Given no user, should return 401 and \"Invalid User\" message" - }, - "response": [] - }, - { - "name": "Switch to 'demo.dotcms.com'", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 200 \", function () {", - " pm.response.to.have.status(200);", - "});", - "", - "pm.test(\"Valid response\", function () {", - " var jsonData = pm.response.json();", - " pm.expect(jsonData.entity.hostSwitched).equal(true);", - "});", - "", - "pm.environment.set(\"forcePreRequestScript\", false);", - "", - "" - ], - "type": "text/javascript", - "packages": {} - } - }, - { - "listen": "prerequest", - "script": { - "exec": [ - "pm.environment.set(\"forcePreRequestScript\", true);", - "", - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "PUT", - "header": [ - { - "key": "Content-Type", - "value": "application/json" - } - ], - "body": { - "mode": "raw", - "raw": "" - }, - "url": { - "raw": "{{serverURL}}/api/v1/site/switch/48190c8c-42c4-46af-8d1a-0cd5db894797", - "host": [ - "{{serverURL}}" - ], - "path": [ - "api", - "v1", - "site", - "switch", - "48190c8c-42c4-46af-8d1a-0cd5db894797" - ] - } - }, - "response": [] - }, - { - "name": "Get Valid HTML Page Metadata", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "", - "pm.test(\"Status code is 200\", function () {", - " pm.response.to.have.status(200);", - "});", - "", - "", - "", - "pm.test(\"Include template\", function () {", - " pm.expect(pm.response.text()).to.include(\"template\");", - "});", - "", - "pm.test(\"Include layout\", function () {", - " pm.expect(pm.response.text()).to.include(\"layout\");", - "});", - "", - "pm.test(\"Include Containers\", function () {", - " pm.expect(pm.response.text()).to.include(\"containers\");", - "});", - "", - "pm.test(\"'page' element includes all properties\", function () {", - " var jsonData = pm.response.json();", - " var page = jsonData[\"entity\"][\"page\"];", - " pm.expect(page[\"__icon__\"]).equal(\"pageIcon\");", - " pm.expect(page[\"archived\"], 'FAILED:[archived]').equal(false);", - " pm.expect(page[\"baseType\"]).equal(\"HTMLPAGE\");", - " pm.expect(page[\"cachettl\"]).equal(\"0\");", - " pm.expect(page[\"canEdit\"], 'FAILED:[canEdit]').equal(true);", - " pm.expect(page[\"canLock\"], 'FAILED:[canLock]').equal(true);", - " pm.expect(page[\"canRead\"], 'FAILED:[canRead]').equal(true);", - " pm.expect(page[\"deleted\"], 'FAILED:[deleted]').equal(false);", - " pm.expect(page[\"extension\"]).equal(\"page\");", - " pm.expect(page[\"folder\"]).equal(\"6c8a2ac4-36a7-4b01-b9c0-c2c1d91ddfdb\");", - " pm.expect(page[\"friendlyName\"]).equal(\"Costa Rica Rain Forest\");", - " pm.expect(page[\"hasLiveVersion\"], 'FAILED:[hasLiveVersion]').equal(true);", - " pm.expect(page[\"hasTitleImage\"], 'FAILED:[hasTitleImage]').equal(true);", - " pm.expect(page[\"host\"]).equal(\"48190c8c-42c4-46af-8d1a-0cd5db894797\");", - " pm.expect(page[\"hostName\"]).equal(\"demo.dotcms.com\");", - " ////", - " pm.expect(page[\"httpsRequired\"], 'FAILED:[httpsRequired]').equal(false);", - " pm.expect(page[\"identifier\"]).equal(\"bec7b960-a8bf-4f14-a22b-0d94caf217f0\");", - " pm.expect(page[\"image\"]).equal(\"/dA/bec7b960-a8bf-4f14-a22b-0d94caf217f0/image/costa-rica-tree-frog.jpg\");", - " pm.expect(page[\"imageContentAsset\"]).equal(\"bec7b960-a8bf-4f14-a22b-0d94caf217f0/image\");", - " pm.expect(page[\"inode\"]).not.equal(null)", - " pm.expect(page[\"isContentlet\"], 'FAILED:[isContentlet]').equal(true);", - " pm.expect(page[\"languageId\"]).equal(1);", - " pm.expect(page[\"live\"], 'FAILED:[live]').equal(true);", - " pm.expect(page[\"liveInode\"]).not.equal(null)", - " pm.expect(page[\"locked\"], 'FAILED:[locked]').equal(false);", - " pm.expect(page[\"mimeType\"]).equal(\"application/dotpage\");", - " pm.expect(page[\"modDate\"]).not.equal(null)", - " ///", - " pm.expect(page[\"modUser\"]).equal(\"system\");", - " pm.expect(page[\"modUserName\"]).equal(\"system user system user\");", - " pm.expect(page[\"name\"]).equal(\"costa-rica\");", - " pm.expect(page[\"owner\"]).equal(\"dotcms.org.1\");", - " pm.expect(page[\"pageURI\"]).equal(\"/destinations/costa-rica\");", - " pm.expect(page[\"pageUrl\"]).equal(\"costa-rica\");", - " pm.expect(page[\"path\"]).equal(\"/destinations/costa-rica\");", - " pm.expect(page[\"publishDate\"]).not.equal(null)", - " pm.expect(page[\"seoTitle\"]).equal(\"Costa Rica Travel Destinations\");", - " pm.expect(page[\"seodescription\"]).equal(\"Visit Costa Rica a rugged, rainforested Central American country with coastlines on the Caribbean and Pacific.\");", - " pm.expect(page[\"shortDescription\"]).equal(\"Costa Rica is a rugged, rainforested Central American country with coastlines on the Caribbean and Pacific. Costa Rica is known for its beaches, volcanoes, and biodiversity. Roughly a quarter of its area is made up of protected jungle, teeming with wildlife including spider monkeys and quetzal birds.\");", - " pm.expect(page[\"shortyLive\"]).not.equal(null)", - " //", - " pm.expect(page[\"shortyWorking\"]).not.equal(null)", - " pm.expect(page[\"sortOrder\"]).equal(0);", - " pm.expect(page[\"stInode\"]).equal(\"91812c8b-0441-4139-8d4d-7423cfb0e979\");", - " pm.expect(page[\"statusIcons\"]).equal(\"\");", - " pm.expect(page[\"tags\"]).equal(\"diving\");", - " pm.expect(page[\"template\"]).equal(\"0c556e37-99e0-4458-a2cd-d42cc7a11045\");", - " pm.expect(page[\"title\"]).equal(\"Costa Rica Rain Forest\");", - " pm.expect(page[\"titleImage\"]).equal(\"image\");", - " pm.expect(page[\"type\"]).equal(\"htmlpage\");", - " pm.expect(page[\"url\"]).equal(\"/destinations/costa-rica\");", - " pm.expect(page[\"working\"], 'FAILED:[working]').equal(true);", - " pm.expect(page[\"workingInode\"]).not.equal(null)", - "", - "});", - "", - "" - ], - "type": "text/javascript", - "packages": {} - } - }, - { - "listen": "prerequest", - "script": { - "exec": [ - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{serverURL}}/api/v1/page/json/destinations/costa-rica", - "host": [ - "{{serverURL}}" - ], - "path": [ - "api", - "v1", - "page", - "json", - "destinations", - "costa-rica" - ] - }, - "description": "http://localhost:8080/api/v1/page/json/{page-url}" - }, - "response": [] - }, - { - "name": "Invalidate Session", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 200\", function () {", - " pm.response.to.have.status(200);", - "});" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{serverURL}}/api/v1/logout", - "host": [ - "{{serverURL}}" - ], - "path": [ - "api", - "v1", - "logout" - ] - } - }, - "response": [] - }, - { - "name": "Get Non-Existing HTML Page", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "", - "pm.test(\"Status code is 404\", function () {", - " pm.response.to.have.status(404);", - "});", - "", - "", - "", - "pm.test(\"Valid response\", function () {", - " pm.expect(pm.response.text()).to.include(\"Page \\'about-us/index2\\' not found\");", - "});", - "", - "", - "", - "" - ], - "type": "text/javascript", - "packages": {} - } - }, - { - "listen": "prerequest", - "script": { - "exec": [ - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{serverURL}}/api/v1/page/json/about-us/index2", - "host": [ - "{{serverURL}}" - ], - "path": [ - "api", - "v1", - "page", - "json", - "about-us", - "index2" - ] - } - }, - "response": [] - }, - { - "name": "Get Metadata From URL Map", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"No errors\", function () {", - " ", - " var jsonData = pm.response.json();", - " pm.expect(jsonData.errors.length).to.eql(0);", - "});", - "", - "pm.test(\"Status code is 200\", function () {", - " pm.response.to.have.status(200);", - "}); ", - "", - "pm.test(\"Has Rows and Columns\", function () {", - " ", - " var jsonData = pm.response.json();", - " ", - " pm.expect(jsonData.entity.layout.body.rows.length).to.equal(2);", - " pm.expect(jsonData.entity.layout.body.rows[0].columns.length).to.equal(1);", - " ", - "});", - "", - "pm.test(\"Number of Contents\", function () {", - " ", - " var jsonData = pm.response.json();", - " ", - " pm.expect(jsonData.entity.numberContents).to.equal(2);", - " ", - " ", - "});", - "", - "pm.test(\"Page checks\", function () {", - " ", - " var jsonData = pm.response.json();", - " ", - " pm.expect(jsonData.entity.page.pageURI).to.equal('/blog/index');", - " pm.expect(jsonData.entity.page.title).to.equal('Blogs');", - " pm.expect(jsonData.entity.page.type).to.equal('htmlpage');", - " ", - "});", - "", - "pm.test(\"Site checks\", function () {", - " ", - " var jsonData = pm.response.json();", - " ", - " pm.expect(jsonData.entity.site.hostname).to.equal('demo.dotcms.com');", - " pm.expect(jsonData.entity.site.type).to.equal('contentlet');", - " ", - "});", - "", - "pm.test(\"Template checks\", function () {", - " ", - " var jsonData = pm.response.json();", - " ", - " pm.expect(jsonData.entity.template.title).to.equal('anonymous_layout_1571406924828');", - " pm.expect(jsonData.entity.template.type).to.equal('template');", - " ", - "});", - "", - "pm.test(\"Contentlets checks\", function () {", - " ", - " var jsonData = pm.response.json();", - " pm.expect(jsonData.entity.containers[\"//demo.dotcms.com/application/containers/default/\"].contentlets[\"uuid-1\"][0].title).to.equal('Travel Blog Header');", - " pm.expect(jsonData.entity.containers[\"//demo.dotcms.com/application/containers/default/\"].contentlets[\"uuid-1\"][0].contentType).to.equal('webPageContent');", - "});", - "", - "", - "", - "", - "", - "", - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{serverURL}}/api/v1/page/json/blog/index", - "host": [ - "{{serverURL}}" - ], - "path": [ - "api", - "v1", - "page", - "json", - "blog", - "index" - ] - }, - "description": "Gets an Url content map" - }, - "response": [] - } - ], - "description": "Tests calling the `json` method passing down the actual URI of an HTML Page.", - "event": [ - { - "listen": "prerequest", - "script": { - "type": "text/javascript", - "packages": {}, - "exec": [ - "" - ] - } - }, - { - "listen": "test", - "script": { - "type": "text/javascript", - "packages": {}, - "exec": [ - "" - ] - } - } - ] - }, - { - "name": "Using Vanity URLs", - "item": [ - { - "name": "Create Test Forward Vanity URL", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Test Forward Vanity URL was created successfully\", function () {", - " var jsonData = pm.response.json().entity;", - " pm.expect(jsonData.summary.failCount).to.eql(0, \"An error occurred when creating the test Vanity URL\");", - " pm.expect(jsonData.summary.successCount).to.eql(1, \"One piece of content should have been created\");", - "});", - "" - ], - "type": "text/javascript", - "packages": {} - } - }, - { - "listen": "prerequest", - "script": { - "exec": [ - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "POST", - "header": [], - "body": { - "mode": "raw", - "raw": "{\n \"contentlets\": [\n {\n \"contentType\": \"Vanityurl\",\n \"languageId\": 1,\n \"title\": \"Test Forward Vanity URL\",\n \"site\": \"demo.dotcms.com\",\n \"uri\": \"/forward-json\",\n \"action\": 200,\n \"forwardTo\": \"/destinations/costa-rica\",\n \"order\": 0\n }\n ]\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{serverURL}}/api/v1/workflow/actions/default/fire/PUBLISH", - "host": [ - "{{serverURL}}" - ], - "path": [ - "api", - "v1", - "workflow", - "actions", - "default", - "fire", - "PUBLISH" - ] - }, - "description": "Create the original Contentlet." - }, - "response": [] - }, - { - "name": "Create Test Temporary Redirect Vanity URL", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Test Temporary Redirect Vanity URL was created successfully\", function () {", - " var jsonData = pm.response.json().entity;", - " pm.expect(jsonData.summary.failCount).to.eql(0, \"An error occurred when creating the test Vanity URL\");", - " pm.expect(jsonData.summary.successCount).to.eql(1, \"One piece of content should have been created\");", - "});", - "" - ], - "type": "text/javascript", - "packages": {} - } - }, - { - "listen": "prerequest", - "script": { - "exec": [ - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "POST", - "header": [], - "body": { - "mode": "raw", - "raw": "{\n \"contentlets\": [\n {\n \"contentType\": \"Vanityurl\",\n \"languageId\": 1,\n \"title\": \"Test Temporary Vanity URL\",\n \"site\": \"demo.dotcms.com\",\n \"uri\": \"/temporary-json\",\n \"action\": 302,\n \"forwardTo\": \"/destinations/costa-rica\",\n \"order\": 0\n }\n ]\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{serverURL}}/api/v1/workflow/actions/default/fire/PUBLISH", - "host": [ - "{{serverURL}}" - ], - "path": [ - "api", - "v1", - "workflow", - "actions", - "default", - "fire", - "PUBLISH" - ] - }, - "description": "Create the original Contentlet." - }, - "response": [] - }, - { - "name": "Create Test Permanent Redirect Vanity URL", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Test Permanent Redirect Vanity URL was created successfully\", function () {", - " var jsonData = pm.response.json().entity;", - " pm.expect(jsonData.summary.failCount).to.eql(0, \"An error occurred when creating the test Vanity URL\");", - " pm.expect(jsonData.summary.successCount).to.eql(1, \"One piece of content should have been created\");", - "});", - "" - ], - "type": "text/javascript", - "packages": {} - } - }, - { - "listen": "prerequest", - "script": { - "exec": [ - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "POST", - "header": [], - "body": { - "mode": "raw", - "raw": "{\n \"contentlets\": [\n {\n \"contentType\": \"Vanityurl\",\n \"languageId\": 1,\n \"title\": \"Test Permanent Vanity URL\",\n \"site\": \"demo.dotcms.com\",\n \"uri\": \"/permanent-json\",\n \"action\": 301,\n \"forwardTo\": \"/destinations/costa-rica\",\n \"order\": 0\n }\n ]\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{serverURL}}/api/v1/workflow/actions/default/fire/PUBLISH", - "host": [ - "{{serverURL}}" - ], - "path": [ - "api", - "v1", - "workflow", - "actions", - "default", - "fire", - "PUBLISH" - ] - }, - "description": "Create the original Contentlet." - }, - "response": [] - }, - { - "name": "Get HTML Page Metadata - Forward", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Response body contains the 'uuid' attribute\", function () {", - " pm.expect(pm.response.text()).to.include(\"uuid\");", - "});", - "", - "pm.test(\"The 'page' element includes all the expected properties\", function () {", - " var jsonData = pm.response.json();", - " var page = jsonData[\"entity\"][\"page\"];", - " pm.expect(page[\"__icon__\"]).equal(\"pageIcon\");", - " pm.expect(page[\"archived\"], 'FAILED:[archived]').equal(false);", - " pm.expect(page[\"baseType\"]).equal(\"HTMLPAGE\");", - " pm.expect(page[\"cachettl\"]).equal(\"0\");", - " pm.expect(page[\"canEdit\"], 'FAILED:[canEdit]').equal(true);", - " pm.expect(page[\"canLock\"], 'FAILED:[canLock]').equal(true);", - " pm.expect(page[\"canRead\"], 'FAILED:[canRead]').equal(true);", - " pm.expect(page[\"deleted\"], 'FAILED:[deleted]').equal(false);", - " pm.expect(page[\"extension\"]).equal(\"page\");", - " pm.expect(page[\"folder\"]).equal(\"6c8a2ac4-36a7-4b01-b9c0-c2c1d91ddfdb\");", - " pm.expect(page[\"friendlyName\"]).equal(\"Costa Rica Rain Forest\");", - " pm.expect(page[\"hasLiveVersion\"], 'FAILED:[hasLiveVersion]').equal(true);", - " pm.expect(page[\"hasTitleImage\"], 'FAILED:[hasTitleImage]').equal(true);", - " pm.expect(page[\"host\"]).equal(\"48190c8c-42c4-46af-8d1a-0cd5db894797\");", - " pm.expect(page[\"hostName\"]).equal(\"demo.dotcms.com\");", - " ////", - " pm.expect(page[\"httpsRequired\"], 'FAILED:[httpsRequired]').equal(false);", - " pm.expect(page[\"identifier\"]).equal(\"bec7b960-a8bf-4f14-a22b-0d94caf217f0\");", - " pm.expect(page[\"image\"]).equal(\"/dA/bec7b960-a8bf-4f14-a22b-0d94caf217f0/image/costa-rica-tree-frog.jpg\");", - " pm.expect(page[\"imageContentAsset\"]).equal(\"bec7b960-a8bf-4f14-a22b-0d94caf217f0/image\");", - " pm.expect(page[\"inode\"]).not.equal(null)", - " pm.expect(page[\"isContentlet\"], 'FAILED:[isContentlet]').equal(true);", - " pm.expect(page[\"languageId\"]).equal(1);", - " pm.expect(page[\"live\"], 'FAILED:[live]').equal(true);", - " pm.expect(page[\"liveInode\"]).not.equal(null)", - " pm.expect(page[\"locked\"], 'FAILED:[locked]').equal(false);", - " pm.expect(page[\"mimeType\"]).equal(\"application/dotpage\");", - " pm.expect(page[\"modDate\"]).not.equal(null)", - " ///", - " pm.expect(page[\"modUser\"]).equal(\"system\");", - " pm.expect(page[\"modUserName\"]).equal(\"system user system user\");", - " pm.expect(page[\"name\"]).equal(\"costa-rica\");", - " pm.expect(page[\"owner\"]).equal(\"dotcms.org.1\");", - " pm.expect(page[\"pageURI\"]).equal(\"/destinations/costa-rica\");", - " pm.expect(page[\"pageUrl\"]).equal(\"costa-rica\");", - " pm.expect(page[\"path\"]).equal(\"/destinations/costa-rica\");", - " pm.expect(page[\"publishDate\"]).not.equal(null)", - " pm.expect(page[\"seoTitle\"]).equal(\"Costa Rica Travel Destinations\");", - " pm.expect(page[\"seodescription\"]).equal(\"Visit Costa Rica a rugged, rainforested Central American country with coastlines on the Caribbean and Pacific.\");", - " pm.expect(page[\"shortDescription\"]).equal(\"Costa Rica is a rugged, rainforested Central American country with coastlines on the Caribbean and Pacific. Costa Rica is known for its beaches, volcanoes, and biodiversity. Roughly a quarter of its area is made up of protected jungle, teeming with wildlife including spider monkeys and quetzal birds.\");", - " pm.expect(page[\"shortyLive\"]).not.equal(null)", - " //", - " pm.expect(page[\"shortyWorking\"]).not.equal(null)", - " pm.expect(page[\"sortOrder\"]).equal(0);", - " pm.expect(page[\"stInode\"]).equal(\"91812c8b-0441-4139-8d4d-7423cfb0e979\");", - " pm.expect(page[\"statusIcons\"]).equal(\"\");", - " pm.expect(page[\"tags\"]).equal(\"diving\");", - " pm.expect(page[\"template\"]).equal(\"0c556e37-99e0-4458-a2cd-d42cc7a11045\");", - " pm.expect(page[\"title\"]).equal(\"Costa Rica Rain Forest\");", - " pm.expect(page[\"titleImage\"]).equal(\"image\");", - " pm.expect(page[\"type\"]).equal(\"htmlpage\");", - " pm.expect(page[\"url\"]).equal(\"/destinations/costa-rica\");", - " pm.expect(page[\"working\"], 'FAILED:[working]').equal(true);", - " pm.expect(page[\"workingInode\"]).not.equal(null)", - "});", - "", - "pm.test(\"The 'Forward' Vanity URL data must be present\", function() {", - " var entity = pm.response.json().entity;", - " pm.expect(entity.vanityUrl).not.not.equal(undefined, \"The 'vanityUrl' attribute is missing\");", - " pm.expect(entity.vanityUrl.url).to.be.equal(\"/forward-json\", \"The 'url' attribute is NOT the expected one\");", - " pm.expect(entity.vanityUrl.response).to.be.equal(200, \"The 'response' attribute must be 200\");", - "});", - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{serverURL}}/api/v1/page/json/forward-json", - "host": [ - "{{serverURL}}" - ], - "path": [ - "api", - "v1", - "page", - "json", - "forward-json" - ] - } - }, - "response": [] - }, - { - "name": "Get HTML Page Metadata - Temporary Redirect", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"The 'Temporary Redirect' Vanity URL data must be present\", function() {", - " var entity = pm.response.json().entity;", - " pm.expect(entity.vanityUrl).to.not.equal(undefined, \"The 'vanityUrl' attribute must be present\");", - " pm.expect(entity.vanityUrl.response).to.be.equal(302, \"The 'response' attribute must be 302\");", - " pm.expect(entity.vanityUrl.temporaryRedirect).to.equal(true, \"The returned Vanity URL MUST be a temporary redirect\");", - " pm.expect(entity.vanityUrl.permanentRedirect).to.equal(false, \"The returned Vanity URL MUST NOT be a permanent redirect\");", - " pm.expect(entity.vanityUrl.forward).to.equal(false, \"The returned Vanity URL MUST NOT be a forward\");", - "});", - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{serverURL}}/api/v1/page/json/temporary-json", - "host": [ - "{{serverURL}}" - ], - "path": [ - "api", - "v1", - "page", - "json", - "temporary-json" - ] - } - }, - "response": [] - }, - { - "name": "Get HTML Page Metadata - Permanent Redirect", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"The 'Permanent Redirect' Vanity URL must be present\", function() {", - " var entity = pm.response.json().entity;", - " pm.expect(entity.vanityUrl).to.not.equal(undefined, \"The 'vanityUrl' attribute must be present\");", - " pm.expect(entity.vanityUrl.response).to.be.equal(301, \"The 'response' attribute must be 301\");", - " pm.expect(entity.vanityUrl.permanentRedirect).to.equal(true, \"The returned Vanity URL MUST be a permanent redirect\");", - " pm.expect(entity.vanityUrl.temporaryRedirect).to.equal(false, \"The returned Vanity URL MUST NOT be a temporary redirect\");", - " pm.expect(entity.vanityUrl.forward).to.equal(false, \"The returned Vanity URL MUST NOT be a forward\");", - "});", - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{serverURL}}/api/v1/page/json/permanent-json", - "host": [ - "{{serverURL}}" - ], - "path": [ - "api", - "v1", - "page", - "json", - "permanent-json" - ] - } - }, - "response": [] - } - ], - "description": "Tests calling the `json` method passing down a Vanity URL that references an HTML Page, using the three redirect options:\n\n1. Forward.\n \n2. Temporary Redirect.\n \n3. Permanent Redirect.", - "event": [ - { - "listen": "prerequest", - "script": { - "type": "text/javascript", - "packages": {}, - "exec": [ - "" - ] - } - }, - { - "listen": "test", - "script": { - "type": "text/javascript", - "packages": {}, - "exec": [ - "pm.test(\"HTTP Status must be 200\", function() {", - " pm.response.to.have.status(200);", - "});", - "" - ] - } - } - ] - } - ], - "description": "Returns the metadata in JSON format of the objects that make up an HTML Page in the system.\n\nhttp://localhost:8080/api/v1/page/json/{page-url}", - "event": [ - { - "listen": "prerequest", - "script": { - "type": "text/javascript", - "exec": [ - "" - ] - } - }, - { - "listen": "test", - "script": { - "type": "text/javascript", - "exec": [ - "" - ] - } - } - ] - }, - { - "name": "Render [api/v1/page/render]", - "item": [ - { - "name": "Using Actual Page URIs", - "item": [ - { - "name": "Invalidate Session", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 200\", function () {", - " pm.response.to.have.status(200);", - "});" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{serverURL}}/api/v1/logout", - "host": [ - "{{serverURL}}" - ], - "path": [ - "api", - "v1", - "logout" - ] - } - }, - "response": [] - }, - { - "name": "Get Page Metadata With Invalid User", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "", - "pm.test(\"Status code is 401, Need credentials\", function () {", - " pm.response.to.have.status(401);", - "});", - "", - "pm.test(\"Response body matches\", function () {", - " pm.expect(pm.response.text()).to.include(\"Invalid User\");", - "});", - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "auth": { - "type": "noauth" - }, - "method": "GET", - "header": [], - "url": { - "raw": "{{serverURL}}/api/v1/page/render/destinations/costa-rica", - "host": [ - "{{serverURL}}" - ], - "path": [ - "api", - "v1", - "page", - "render", - "destinations", - "costa-rica" - ] - } - }, - "response": [] - }, - { - "name": "Switch to 'demo.dotcms.com'", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 200 \", function () {", - " pm.response.to.have.status(200);", - "});", - "", - "pm.test(\"Valid response\", function () {", - " var jsonData = pm.response.json();", - "", - " pm.expect(jsonData.entity.hostSwitched).equal(true);", - "});" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "PUT", - "header": [ - { - "key": "Content-Type", - "value": "application/json" - } - ], - "body": { - "mode": "raw", - "raw": "" - }, - "url": { - "raw": "{{serverURL}}/api/v1/site/switch/48190c8c-42c4-46af-8d1a-0cd5db894797", - "host": [ - "{{serverURL}}" - ], - "path": [ - "api", - "v1", - "site", - "switch", - "48190c8c-42c4-46af-8d1a-0cd5db894797" - ] - } - }, - "response": [] - }, - { - "name": "Get Valid HTML Page Metadata", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "", - "pm.test(\"Status code is 200\", function () {", - " pm.response.to.have.status(200);", - "});", - "", - "pm.test(\"Response body contains\", function () {", - " pm.expect(pm.response.text()).to.include(\"rendered\");", - "});", - "", - "pm.test(\"Response body contains\", function () {", - " pm.expect(pm.response.text()).to.include(\"uuid\");", - "});", - "", - "pm.test(\"'page' element includes all properties\", function () {", - " var jsonData = pm.response.json();", - " var page = jsonData[\"entity\"][\"page\"];", - " pm.expect(page[\"__icon__\"]).equal(\"pageIcon\");", - " pm.expect(page[\"archived\"], 'FAILED:[archived]').equal(false);", - " pm.expect(page[\"baseType\"]).equal(\"HTMLPAGE\");", - " pm.expect(page[\"cachettl\"]).equal(\"0\");", - " pm.expect(page[\"canEdit\"], 'FAILED:[canEdit]').equal(true);", - " pm.expect(page[\"canLock\"], 'FAILED:[canLock]').equal(true);", - " pm.expect(page[\"canRead\"], 'FAILED:[canRead]').equal(true);", - " pm.expect(page[\"deleted\"], 'FAILED:[deleted]').equal(false);", - " pm.expect(page[\"extension\"]).equal(\"page\");", - " pm.expect(page[\"folder\"]).equal(\"6c8a2ac4-36a7-4b01-b9c0-c2c1d91ddfdb\");", - " pm.expect(page[\"friendlyName\"]).equal(\"Costa Rica Rain Forest\");", - " pm.expect(page[\"hasLiveVersion\"], 'FAILED:[hasLiveVersion]').equal(true);", - " pm.expect(page[\"hasTitleImage\"], 'FAILED:[hasTitleImage]').equal(true);", - " pm.expect(page[\"host\"]).equal(\"48190c8c-42c4-46af-8d1a-0cd5db894797\");", - " pm.expect(page[\"hostName\"]).equal(\"demo.dotcms.com\");", - " ////", - " pm.expect(page[\"httpsRequired\"], 'FAILED:[httpsRequired]').equal(false);", - " pm.expect(page[\"identifier\"]).equal(\"bec7b960-a8bf-4f14-a22b-0d94caf217f0\");", - " pm.expect(page[\"image\"]).equal(\"/dA/bec7b960-a8bf-4f14-a22b-0d94caf217f0/image/costa-rica-tree-frog.jpg\");", - " pm.expect(page[\"imageContentAsset\"]).equal(\"bec7b960-a8bf-4f14-a22b-0d94caf217f0/image\");", - " pm.expect(page[\"inode\"]).not.equal(null)", - " pm.expect(page[\"isContentlet\"], 'FAILED:[isContentlet]').equal(true);", - " pm.expect(page[\"languageId\"]).equal(1);", - " pm.expect(page[\"live\"], 'FAILED:[live]').equal(true);", - " pm.expect(page[\"liveInode\"]).not.equal(null)", - " pm.expect(page[\"locked\"], 'FAILED:[locked]').equal(false);", - " pm.expect(page[\"mimeType\"]).equal(\"application/dotpage\");", - " pm.expect(page[\"modDate\"]).not.equal(null)", - " ///", - " pm.expect(page[\"modUser\"]).equal(\"system\");", - " pm.expect(page[\"modUserName\"]).equal(\"system user system user\");", - " pm.expect(page[\"name\"]).equal(\"costa-rica\");", - " pm.expect(page[\"owner\"]).equal(\"dotcms.org.1\");", - " pm.expect(page[\"pageURI\"]).equal(\"/destinations/costa-rica\");", - " pm.expect(page[\"pageUrl\"]).equal(\"costa-rica\");", - " pm.expect(page[\"path\"]).equal(\"/destinations/costa-rica\");", - " pm.expect(page[\"publishDate\"]).not.equal(null)", - " pm.expect(page[\"seoTitle\"]).equal(\"Costa Rica Travel Destinations\");", - " pm.expect(page[\"seodescription\"]).equal(\"Visit Costa Rica a rugged, rainforested Central American country with coastlines on the Caribbean and Pacific.\");", - " pm.expect(page[\"shortDescription\"]).equal(\"Costa Rica is a rugged, rainforested Central American country with coastlines on the Caribbean and Pacific. Costa Rica is known for its beaches, volcanoes, and biodiversity. Roughly a quarter of its area is made up of protected jungle, teeming with wildlife including spider monkeys and quetzal birds.\");", - " pm.expect(page[\"shortyLive\"]).not.equal(null)", - " //", - " pm.expect(page[\"shortyWorking\"]).not.equal(null)", - " pm.expect(page[\"sortOrder\"]).equal(0);", - " pm.expect(page[\"stInode\"]).equal(\"91812c8b-0441-4139-8d4d-7423cfb0e979\");", - " pm.expect(page[\"statusIcons\"]).equal(\"\");", - " pm.expect(page[\"tags\"]).equal(\"diving\");", - " pm.expect(page[\"template\"]).equal(\"0c556e37-99e0-4458-a2cd-d42cc7a11045\");", - " pm.expect(page[\"title\"]).equal(\"Costa Rica Rain Forest\");", - " pm.expect(page[\"titleImage\"]).equal(\"image\");", - " pm.expect(page[\"type\"]).equal(\"htmlpage\");", - " pm.expect(page[\"url\"]).equal(\"/destinations/costa-rica\");", - " pm.expect(page[\"working\"], 'FAILED:[working]').equal(true);", - " pm.expect(page[\"workingInode\"]).not.equal(null)", - "", - "});" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{serverURL}}/api/v1/page/render/destinations/costa-rica", - "host": [ - "{{serverURL}}" - ], - "path": [ - "api", - "v1", - "page", - "render", - "destinations", - "costa-rica" - ] - } - }, - "response": [] - }, - { - "name": "Get Metadata From Non-Existing HTML Page", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "", - "pm.test(\"Status code is 404\", function () {", - " pm.response.to.have.status(404);", - "});", - "", - "", - "pm.test(\"Response body contains\", function () {", - " ", - " pm.expect( pm.response.json().message).to.eq(\"Page 'about-us/index2' not found\");", - "});", - "", - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{serverURL}}/api/v1/page/render/about-us/index2", - "host": [ - "{{serverURL}}" - ], - "path": [ - "api", - "v1", - "page", - "render", - "about-us", - "index2" - ] - } - }, - "response": [] - }, - { - "name": "Reset workflow for contentlet", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 200 \", function () {", - " pm.response.to.have.status(200);", - "});", - "", - "", - "", - "pm.test(\"Correct identifier\", function () {", - " pm.expect(pm.response.json().entity.identifier).equal(\"57ee7cd3-66fc-4f01-9b7e-11e53553c220\");", - "});", - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "PUT", - "header": [ - { - "key": "Content-Type", - "value": "application/json" - } - ], - "body": { - "mode": "raw", - "raw": "" - }, - "url": { - "raw": "{{serverURL}}/api/v1/workflow/actions/2d1dc7718f/fire?identifier=57ee7cd3-66fc-4f01-9b7e-11e53553c220", - "host": [ - "{{serverURL}}" - ], - "path": [ - "api", - "v1", - "workflow", - "actions", - "2d1dc7718f", - "fire" - ], - "query": [ - { - "key": "identifier", - "value": "57ee7cd3-66fc-4f01-9b7e-11e53553c220" - } - ] - }, - "description": "The piece of content \"Ecoturism in Costarica\" gets somehow archived at this point after being imported in a previous bundle. This resets its workflow so it can be published in the next request" - }, - "response": [] - }, - { - "name": "Publish Archived Content", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 200 \", function () {", - " pm.response.to.have.status(200);", - "});", - "", - "", - "", - "pm.test(\"Correct identifier\", function () {", - " pm.expect(pm.response.json().entity.identifier).equal(\"57ee7cd3-66fc-4f01-9b7e-11e53553c220\");", - "});", - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "PUT", - "header": [ - { - "key": "Content-Type", - "value": "application/json" - } - ], - "body": { - "mode": "raw", - "raw": "" - }, - "url": { - "raw": "{{serverURL}}/api/v1/workflow/actions/175009d69e/fire?identifier=57ee7cd3-66fc-4f01-9b7e-11e53553c220", - "host": [ - "{{serverURL}}" - ], - "path": [ - "api", - "v1", - "workflow", - "actions", - "175009d69e", - "fire" - ], - "query": [ - { - "key": "identifier", - "value": "57ee7cd3-66fc-4f01-9b7e-11e53553c220" - } - ] - }, - "description": "This publishes the content `Ecotourism in Costa Rica` so it can be tested in the next request" - }, - "response": [] - }, - { - "name": "Get Metadata From URL Map", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"No errors\", function () {", - " ", - " var jsonData = pm.response.json();", - " pm.expect(jsonData.errors.length).to.eql(0);", - "});", - "", - "pm.test(\"Status code is 200\", function () {", - " pm.response.to.have.status(200);", - "}); ", - "", - "pm.test(\"Has Rows and Columns\", function () {", - " ", - " var jsonData = pm.response.json();", - " ", - " pm.expect(jsonData.entity.layout.body.rows.length).to.equal(1);", - " pm.expect(jsonData.entity.layout.body.rows[0].columns.length).to.equal(1);", - " ", - "});", - "", - "pm.test(\"Number of Contents\", function () {", - " ", - " var jsonData = pm.response.json();", - " ", - " pm.expect(jsonData.entity.numberContents).to.equal(1);", - " ", - " ", - "});", - "", - "pm.test(\"Page checks\", function () {", - " ", - " var jsonData = pm.response.json();", - " ", - " pm.expect(jsonData.entity.page.pageURI).to.equal('/blog/post/ecotourism-in-costa-rica');", - " pm.expect(jsonData.entity.page.title).to.equal('Blog Detail');", - " pm.expect(jsonData.entity.page.type).to.equal('htmlpage');", - " ", - "});", - "", - "pm.test(\"Site checks\", function () {", - " ", - " var jsonData = pm.response.json();", - " ", - " pm.expect(jsonData.entity.site.hostname).to.equal('demo.dotcms.com');", - " pm.expect(jsonData.entity.site.type).to.equal('contentlet');", - " ", - "});", - "", - "pm.test(\"Template checks\", function () {", - " ", - " var jsonData = pm.response.json();", - " ", - " pm.expect(jsonData.entity.template.title).to.equal('anonymous_layout_1582562696562');", - " pm.expect(jsonData.entity.template.type).to.equal('template');", - " ", - "});", - "", - "pm.test(\"Url Content Map checks\", function () {", - " ", - " var jsonData = pm.response.json();", - "", - " pm.expect(jsonData.entity.urlContentMap.hostName).to.equal('demo.dotcms.com');", - " pm.expect(jsonData.entity.urlContentMap.baseType).to.equal('CONTENT');", - " pm.expect(jsonData.entity.urlContentMap.contentType).to.equal('Blog');", - " pm.expect(jsonData.entity.urlContentMap.urlTitle).to.equal('ecotourism-in-costa-rica');", - " pm.expect(jsonData.entity.urlContentMap['URL_MAP_FOR_CONTENT']).to.equal('/blog/post/ecotourism-in-costa-rica');", - " pm.expect(jsonData.entity.urlContentMap['urlMap']).to.equal('/blog/post/ecotourism-in-costa-rica');", - "});", - "", - "", - "", - "", - "", - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{serverURL}}/api/v1/page/render/blog/post/ecotourism-in-costa-rica?mode=EDIT_MODE", - "host": [ - "{{serverURL}}" - ], - "path": [ - "api", - "v1", - "page", - "render", - "blog", - "post", - "ecotourism-in-costa-rica" - ], - "query": [ - { - "key": "mode", - "value": "EDIT_MODE" - } - ] - }, - "description": "Gets an Url content map" - }, - "response": [] - } - ], - "description": "Tests calling the `render` method passing down the actual URI of an HTML Page." - }, - { - "name": "Using Vanity URLs", - "item": [ - { - "name": "Create Test Forward Vanity URL", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Test Forward Vanity URL was created successfully\", function () {", - " var jsonData = pm.response.json().entity;", - " pm.expect(jsonData.summary.failCount).to.eql(0, \"An error occurred when creating the test Vanity URL\");", - " pm.expect(jsonData.summary.successCount).to.eql(1, \"One piece of content should have been created\");", - "});", - "" - ], - "type": "text/javascript", - "packages": {} - } - }, - { - "listen": "prerequest", - "script": { - "exec": [ - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "POST", - "header": [], - "body": { - "mode": "raw", - "raw": "{\n \"contentlets\": [\n {\n \"contentType\": \"Vanityurl\",\n \"languageId\": 1,\n \"title\": \"Test Forward Vanity URL\",\n \"site\": \"demo.dotcms.com\",\n \"uri\": \"/forward-render\",\n \"action\": 200,\n \"forwardTo\": \"/destinations/costa-rica\",\n \"order\": 0\n }\n ]\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{serverURL}}/api/v1/workflow/actions/default/fire/PUBLISH", - "host": [ - "{{serverURL}}" - ], - "path": [ - "api", - "v1", - "workflow", - "actions", - "default", - "fire", - "PUBLISH" - ] - }, - "description": "Create the original Contentlet." - }, - "response": [] - }, - { - "name": "Create Test Temporary Redirect Vanity URL", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Test Temporary Redirect Vanity URL was created successfully\", function () {", - " var jsonData = pm.response.json().entity;", - " pm.expect(jsonData.summary.failCount).to.eql(0, \"An error occurred when creating the test Vanity URL\");", - " pm.expect(jsonData.summary.successCount).to.eql(1, \"One piece of content should have been created\");", - "});", - "" - ], - "type": "text/javascript", - "packages": {} - } - }, - { - "listen": "prerequest", - "script": { - "exec": [ - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "POST", - "header": [], - "body": { - "mode": "raw", - "raw": "{\n \"contentlets\": [\n {\n \"contentType\": \"Vanityurl\",\n \"languageId\": 1,\n \"title\": \"Test Temporary Vanity URL\",\n \"site\": \"demo.dotcms.com\",\n \"uri\": \"/temporary-render\",\n \"action\": 302,\n \"forwardTo\": \"/destinations/costa-rica\",\n \"order\": 0\n }\n ]\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{serverURL}}/api/v1/workflow/actions/default/fire/PUBLISH", - "host": [ - "{{serverURL}}" - ], - "path": [ - "api", - "v1", - "workflow", - "actions", - "default", - "fire", - "PUBLISH" - ] - }, - "description": "Create the original Contentlet." - }, - "response": [] - }, - { - "name": "Create Test Permanent Redirect Vanity URL", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Test Permanent Redirect Vanity URL was created successfully\", function () {", - " var jsonData = pm.response.json().entity;", - " pm.expect(jsonData.summary.failCount).to.eql(0, \"An error occurred when creating the test Vanity URL\");", - " pm.expect(jsonData.summary.successCount).to.eql(1, \"One piece of content should have been created\");", - "});", - "" - ], - "type": "text/javascript", - "packages": {} - } - }, - { - "listen": "prerequest", - "script": { - "exec": [ - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "POST", - "header": [], - "body": { - "mode": "raw", - "raw": "{\n \"contentlets\": [\n {\n \"contentType\": \"Vanityurl\",\n \"languageId\": 1,\n \"title\": \"Test Permanent Vanity URL\",\n \"site\": \"demo.dotcms.com\",\n \"uri\": \"/permanent-render\",\n \"action\": 301,\n \"forwardTo\": \"/destinations/costa-rica\",\n \"order\": 0\n }\n ]\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{serverURL}}/api/v1/workflow/actions/default/fire/PUBLISH", - "host": [ - "{{serverURL}}" - ], - "path": [ - "api", - "v1", - "workflow", - "actions", - "default", - "fire", - "PUBLISH" - ] - }, - "description": "Create the original Contentlet." - }, - "response": [] - }, - { - "name": "Get HTML Page Metadata - Forward", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Response body contains the 'rendered' attribute\", function () {", - " pm.expect(pm.response.text()).to.include(\"rendered\");", - "});", - "", - "pm.test(\"Response body contains the 'uuid' attribute\", function () {", - " pm.expect(pm.response.text()).to.include(\"uuid\");", - "});", - "", - "pm.test(\"The 'page' element includes all the expected properties\", function () {", - " var jsonData = pm.response.json();", - " var page = jsonData[\"entity\"][\"page\"];", - " pm.expect(page[\"__icon__\"]).equal(\"pageIcon\");", - " pm.expect(page[\"archived\"], 'FAILED:[archived]').equal(false);", - " pm.expect(page[\"baseType\"]).equal(\"HTMLPAGE\");", - " pm.expect(page[\"cachettl\"]).equal(\"0\");", - " pm.expect(page[\"canEdit\"], 'FAILED:[canEdit]').equal(true);", - " pm.expect(page[\"canLock\"], 'FAILED:[canLock]').equal(true);", - " pm.expect(page[\"canRead\"], 'FAILED:[canRead]').equal(true);", - " pm.expect(page[\"deleted\"], 'FAILED:[deleted]').equal(false);", - " pm.expect(page[\"extension\"]).equal(\"page\");", - " pm.expect(page[\"folder\"]).equal(\"6c8a2ac4-36a7-4b01-b9c0-c2c1d91ddfdb\");", - " pm.expect(page[\"friendlyName\"]).equal(\"Costa Rica Rain Forest\");", - " pm.expect(page[\"hasLiveVersion\"], 'FAILED:[hasLiveVersion]').equal(true);", - " pm.expect(page[\"hasTitleImage\"], 'FAILED:[hasTitleImage]').equal(true);", - " pm.expect(page[\"host\"]).equal(\"48190c8c-42c4-46af-8d1a-0cd5db894797\");", - " pm.expect(page[\"hostName\"]).equal(\"demo.dotcms.com\");", - " ////", - " pm.expect(page[\"httpsRequired\"], 'FAILED:[httpsRequired]').equal(false);", - " pm.expect(page[\"identifier\"]).equal(\"bec7b960-a8bf-4f14-a22b-0d94caf217f0\");", - " pm.expect(page[\"image\"]).equal(\"/dA/bec7b960-a8bf-4f14-a22b-0d94caf217f0/image/costa-rica-tree-frog.jpg\");", - " pm.expect(page[\"imageContentAsset\"]).equal(\"bec7b960-a8bf-4f14-a22b-0d94caf217f0/image\");", - " pm.expect(page[\"inode\"]).not.equal(null)", - " pm.expect(page[\"isContentlet\"], 'FAILED:[isContentlet]').equal(true);", - " pm.expect(page[\"languageId\"]).equal(1);", - " pm.expect(page[\"live\"], 'FAILED:[live]').equal(true);", - " pm.expect(page[\"liveInode\"]).not.equal(null)", - " pm.expect(page[\"locked\"], 'FAILED:[locked]').equal(false);", - " pm.expect(page[\"mimeType\"]).equal(\"application/dotpage\");", - " pm.expect(page[\"modDate\"]).not.equal(null)", - " ///", - " pm.expect(page[\"modUser\"]).equal(\"system\");", - " pm.expect(page[\"modUserName\"]).equal(\"system user system user\");", - " pm.expect(page[\"name\"]).equal(\"costa-rica\");", - " pm.expect(page[\"owner\"]).equal(\"dotcms.org.1\");", - " pm.expect(page[\"pageURI\"]).equal(\"/destinations/costa-rica\");", - " pm.expect(page[\"pageUrl\"]).equal(\"costa-rica\");", - " pm.expect(page[\"path\"]).equal(\"/destinations/costa-rica\");", - " pm.expect(page[\"publishDate\"]).not.equal(null)", - " pm.expect(page[\"seoTitle\"]).equal(\"Costa Rica Travel Destinations\");", - " pm.expect(page[\"seodescription\"]).equal(\"Visit Costa Rica a rugged, rainforested Central American country with coastlines on the Caribbean and Pacific.\");", - " pm.expect(page[\"shortDescription\"]).equal(\"Costa Rica is a rugged, rainforested Central American country with coastlines on the Caribbean and Pacific. Costa Rica is known for its beaches, volcanoes, and biodiversity. Roughly a quarter of its area is made up of protected jungle, teeming with wildlife including spider monkeys and quetzal birds.\");", - " pm.expect(page[\"shortyLive\"]).not.equal(null)", - " //", - " pm.expect(page[\"shortyWorking\"]).not.equal(null)", - " pm.expect(page[\"sortOrder\"]).equal(0);", - " pm.expect(page[\"stInode\"]).equal(\"91812c8b-0441-4139-8d4d-7423cfb0e979\");", - " pm.expect(page[\"statusIcons\"]).equal(\"\");", - " pm.expect(page[\"tags\"]).equal(\"diving\");", - " pm.expect(page[\"template\"]).equal(\"0c556e37-99e0-4458-a2cd-d42cc7a11045\");", - " pm.expect(page[\"title\"]).equal(\"Costa Rica Rain Forest\");", - " pm.expect(page[\"titleImage\"]).equal(\"image\");", - " pm.expect(page[\"type\"]).equal(\"htmlpage\");", - " pm.expect(page[\"url\"]).equal(\"/destinations/costa-rica\");", - " pm.expect(page[\"working\"], 'FAILED:[working]').equal(true);", - " pm.expect(page[\"workingInode\"]).not.equal(null)", - "});", - "", - "pm.test(\"The 'Forward' Vanity URL data must be present\", function() {", - " var entity = pm.response.json().entity;", - " pm.expect(entity.vanityUrl).not.not.equal(undefined, \"The 'vanityUrl' attribute is missing\");", - " pm.expect(entity.vanityUrl.url).to.be.equal(\"/forward-render\", \"The 'url' attribute is NOT the expected one\");", - " pm.expect(entity.vanityUrl.response).to.be.equal(200, \"The 'response' attribute must be 200\");", - "});", - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{serverURL}}/api/v1/page/render/forward-render", - "host": [ - "{{serverURL}}" - ], - "path": [ - "api", - "v1", - "page", - "render", - "forward-render" - ] - } - }, - "response": [] - }, - { - "name": "Get HTML Page Metadata - Temporary Redirect", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"The 'Temporary Redirect' Vanity URL data must be present\", function() {", - " var entity = pm.response.json().entity;", - " pm.expect(entity.vanityUrl).to.not.equal(undefined, \"The 'vanityUrl' attribute must be present\");", - " pm.expect(entity.vanityUrl.response).to.be.equal(302, \"The 'response' attribute must be 302\");", - " pm.expect(entity.vanityUrl.temporaryRedirect).to.equal(true, \"The returned Vanity URL MUST be a temporary redirect\");", - " pm.expect(entity.vanityUrl.permanentRedirect).to.equal(false, \"The returned Vanity URL MUST NOT be a permanent redirect\");", - " pm.expect(entity.vanityUrl.forward).to.equal(false, \"The returned Vanity URL MUST NOT be a forward\");", - "});", - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{serverURL}}/api/v1/page/render/temporary-render", - "host": [ - "{{serverURL}}" - ], - "path": [ - "api", - "v1", - "page", - "render", - "temporary-render" - ] - } - }, - "response": [] - }, - { - "name": "Get HTML Page Metadata - Permanent Redirect", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"The 'Permanent Redirect' Vanity URL must be present\", function() {", - " var entity = pm.response.json().entity;", - " pm.expect(entity.vanityUrl).to.not.equal(undefined, \"The 'vanityUrl' attribute must be present\");", - " pm.expect(entity.vanityUrl.response).to.be.equal(301, \"The 'response' attribute must be 301\");", - " pm.expect(entity.vanityUrl.permanentRedirect).to.equal(true, \"The returned Vanity URL MUST be a permanent redirect\");", - " pm.expect(entity.vanityUrl.temporaryRedirect).to.equal(false, \"The returned Vanity URL MUST NOT be a temporary redirect\");", - " pm.expect(entity.vanityUrl.forward).to.equal(false, \"The returned Vanity URL MUST NOT be a forward\");", - "});", - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{serverURL}}/api/v1/page/render/permanent-render", - "host": [ - "{{serverURL}}" - ], - "path": [ - "api", - "v1", - "page", - "render", - "permanent-render" - ] - } - }, - "response": [] - } - ], - "description": "Tests calling the `render` method passing down a Vanity URL that references an HTML Page, using the three redirect options:\n\n1. Forward.\n \n2. Temporary Redirect.\n \n3. Permanent Redirect.", - "event": [ - { - "listen": "prerequest", - "script": { - "type": "text/javascript", - "packages": {}, - "exec": [ - "" - ] - } - }, - { - "listen": "test", - "script": { - "type": "text/javascript", - "packages": {}, - "exec": [ - "pm.test(\"HTTP Status must be 200\", function() {", - " pm.response.to.have.status(200);", - "});", - "", - "" - ] - } - } - ] - } - ] - }, - { - "name": "Layout [/api/v1/page/{page-id}/layout]", - "item": [ - { - "name": "invalidateSession", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 200\", function () {", - " pm.response.to.have.status(200);", - "});" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{serverURL}}/api/v1/logout", - "host": [ - "{{serverURL}}" - ], - "path": [ - "api", - "v1", - "logout" - ] - } - }, - "response": [] - }, - { - "name": "GivenInvalidUser_ShouldReturn401", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "", - "pm.test(\"Status code is 401, Need credentials\", function () {", - " pm.response.to.have.status(401);", - "});", - "", - "", - "", - "pm.test(\"Response body matches\", function () {", - " pm.expect(pm.response.text()).to.include(\"Invalid User\");", - "});", - "" - ], - "type": "text/javascript" - } - } - ], - "request": { - "auth": { - "type": "noauth" - }, - "method": "POST", - "header": [ - { - "key": "Content-Type", - "value": "application/json" - } - ], - "body": { - "mode": "raw", - "raw": "{\"title\":null,\"layout\":{\"body\":{\"rows\":[{\"columns\":[{\"leftOffset\":1,\"width\":7,\"containers\":[{\"identifier\":\"a050073a-a31e-4aab-9307-86bfb248096a\",\"uuid\":\"1\"}]},{\"leftOffset\":8,\"width\":4,\"containers\":[{\"identifier\":\"5363c6c6-5ba0-4946-b7af-cf875188ac2e\",\"uuid\":\"1\"}]}]}]},\"header\":true,\"footer\":true,\"sidebar\":{\"location\":\"\",\"containers\":[],\"width\":\"small\"}}}" - }, - "url": { - "raw": "{{serverURL}}/api/v1/page/bec7b960-a8bf-4f14-a22b-0d94caf217f0/layout", - "host": [ - "{{serverURL}}" - ], - "path": [ - "api", - "v1", - "page", - "bec7b960-a8bf-4f14-a22b-0d94caf217f0", - "layout" - ] - }, - "description": "@Path(\"/{pageId}/layout\")" - }, - "response": [] - }, - { - "name": "GivenValidLayout_ShouldSaveLayout", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Response code is 200\", function () {", - " pm.response.to.have.status(200);", - "});", - "", - "pm.test(\"Response body contains 'rendered'\", function () {", - " pm.expect(pm.response.text()).to.include(\"rendered\");", - "});", - "", - "var jsonData = pm.response.json();", - "", - "pm.test(\"'Containers' section contains expected containers\", function () {", - " var containers = jsonData[\"entity\"][\"containers\"];", - " pm.expect(containers[\"//demo.dotcms.com/application/containers/default/\"].container.identifier).equal(\"69b3d24d-7e80-4be6-b04a-d352d16493ee\");", - "", - " pm.expect(containers[\"5a07f889-4536-4956-aa6e-e7967969ec3f\"].container.identifier).equal(\"5a07f889-4536-4956-aa6e-e7967969ec3f\");", - "});", - "", - "", - "var layout = jsonData[\"entity\"][\"layout\"];", - "var rows = layout[\"body\"][\"rows\"];", - "var columns = layout[\"body\"][\"rows\"][0][\"columns\"];", - "pm.expect(columns.length).equal(2);", - "", - "// column 1 ", - "var column1 = columns[0];", - "var containersColumn1 = column1[\"containers\"];", - "", - "// column 2", - "var column2 = columns[1];", - "var containersColumn2 = column2[\"containers\"];", - "", - "", - "", - "pm.test(\"Layout has 1 row\", function () {", - " pm.expect(rows.length).equal(1);", - "});", - "", - "pm.test(\"First row has 2 columns\", function () {", - " pm.expect(columns.length).equal(2);", - "});", - "", - "pm.test(\"First column has width of 7 \", function () {", - " pm.expect(column1[\"width\"]).equal(7);", - "}); ", - "", - "pm.test(\"First column has 1 container with expected identifier\", function () {", - " pm.expect(containersColumn1.length).equal(1);", - " pm.expect(containersColumn1[0].identifier).equal(\"//demo.dotcms.com/application/containers/default/\");", - "}); ", - "", - "pm.test(\"Second column has width of 4 \", function () {", - " pm.expect(column2[\"width\"]).equal(4);", - "}); ", - "", - "pm.test(\"Second column has 1 container with expected identifier\", function () {", - " pm.expect(containersColumn2.length).equal(1);", - " pm.expect(containersColumn2[0].identifier).equal(\"5a07f889-4536-4956-aa6e-e7967969ec3f\");", - "}); ", - "", - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "POST", - "header": [ - { - "key": "Content-Type", - "value": "application/json" - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"title\": null,\n \"layout\": {\n \"body\": {\n \"rows\": [\n {\n \"columns\": [\n {\n \"leftOffset\": 1,\n \"width\": 7,\n \"containers\": [\n {\n \"identifier\": \"//demo.dotcms.com/application/containers/default/\", \n \"uuid\": \"1\"\n }\n ]\n },\n {\n \"leftOffset\": 8,\n \"width\": 4,\n \"containers\": [\n {\n \"identifier\": \"5a07f889-4536-4956-aa6e-e7967969ec3f\",\n \"uuid\": \"1\"\n }\n ]\n }\n ]\n }\n ]\n },\n \"header\": true,\n \"footer\": true,\n \"sidebar\": {\n \"location\": \"\",\n \"containers\": [],\n \"width\": \"small\"\n }\n }\n}" - }, - "url": { - "raw": "{{serverURL}}/api/v1/page/bec7b960-a8bf-4f14-a22b-0d94caf217f0/layout", - "host": [ - "{{serverURL}}" - ], - "path": [ - "api", - "v1", - "page", - "bec7b960-a8bf-4f14-a22b-0d94caf217f0", - "layout" - ] - }, - "description": "@Path(\"/{pageId}/layout\")" - }, - "response": [] - }, - { - "name": "GivenInvalidPageId_ShouldReturn404", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "", - "pm.test(\"Status code is 404\", function () {", - " pm.response.to.have.status(404);", - "});", - "", - "", - "", - "pm.test(\"Response body contains\", function () {", - " pm.expect(pm.response.text()).to.include(\"Unable to find page with Identifier: 2c12fe7e6-d338-49d5-973b-2d974d57015b\");", - "});", - "", - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "POST", - "header": [ - { - "key": "Content-Type", - "value": "application/json" - } - ], - "body": { - "mode": "raw", - "raw": "{\"title\":null,\"layout\":{\"body\":{\"rows\":[{\"columns\":[{\"leftOffset\":1,\"width\":7,\"containers\":[{\"identifier\":\"a050073a-a31e-4aab-9307-86bfb248096a\",\"uuid\":\"1\"}]},{\"leftOffset\":8,\"width\":4,\"containers\":[{\"identifier\":\"5363c6c6-5ba0-4946-b7af-cf875188ac2e\",\"uuid\":\"1\"}]}]}]},\"header\":true,\"footer\":true,\"sidebar\":{\"location\":\"\",\"containers\":[],\"width\":\"small\"}}}" - }, - "url": { - "raw": "{{serverURL}}/api/v1/page/2c12fe7e6-d338-49d5-973b-2d974d57015b/layout", - "host": [ - "{{serverURL}}" - ], - "path": [ - "api", - "v1", - "page", - "2c12fe7e6-d338-49d5-973b-2d974d57015b", - "layout" - ] - }, - "description": "@Path(\"/{pageId}/layout\")" - }, - "response": [] - }, - { - "name": "RequestWihoutParameters", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "", - "pm.test(\"Status code is 400\", function () {", - " pm.response.to.have.status(400);", - "});", - "", - "", - "", - "pm.test(\"Response body contains\", function () {", - " pm.expect(pm.response.text()).to.include(\"required\");", - "});", - "", - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "POST", - "header": [ - { - "key": "Content-Type", - "value": "application/json" - } - ], - "body": { - "mode": "raw", - "raw": "" - }, - "url": { - "raw": "{{serverURL}}/api/v1/page/bec7b960-a8bf-4f14-a22b-0d94caf217f0/layout", - "host": [ - "{{serverURL}}" - ], - "path": [ - "api", - "v1", - "page", - "bec7b960-a8bf-4f14-a22b-0d94caf217f0", - "layout" - ] - }, - "description": "@Path(\"/{pageId}/layout\")" - }, - "response": [] - }, - { - "name": "BadRequest", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "", - "pm.test(\"Status code is 400\", function () {", - " pm.response.to.have.status(400);", - "});", - "", - "", - "", - "pm.test(\"Response body contains\", function () {", - " pm.expect(pm.response.text()).to.include(\"Unrecognized field\");", - "});", - "", - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "POST", - "header": [ - { - "key": "Content-Type", - "value": "application/json" - } - ], - "body": { - "mode": "raw", - "raw": "{\"2title\":null,\"layout\":{\"body\":{\"rows\":[{\"columns\":[{\"leftOffset\":1,\"width\":7,\"containers\":[{\"identifier\":\"a050073a-a31e-4aab-9307-86bfb248096a\",\"uuid\":\"1\"}]},{\"leftOffset\":8,\"width\":4,\"containers\":[{\"identifier\":\"5363c6c6-5ba0-4946-b7af-cf875188ac2e\",\"uuid\":\"1\"}]}]}]},\"header\":true,\"footer\":true,\"sidebar\":{\"location\":\"\",\"containers\":[],\"width\":\"small\"}}}" - }, - "url": { - "raw": "{{serverURL}}/api/v1/page/bec7b960-a8bf-4f14-a22b-0d94caf217f0/layout", - "host": [ - "{{serverURL}}" - ], - "path": [ - "api", - "v1", - "page", - "bec7b960-a8bf-4f14-a22b-0d94caf217f0", - "layout" - ] - }, - "description": "@Path(\"/{pageId}/layout\")" - }, - "response": [] - } - ], - "event": [ - { - "listen": "prerequest", - "script": { - "type": "text/javascript", - "exec": [ - "" - ] - } - }, - { - "listen": "test", - "script": { - "type": "text/javascript", - "exec": [ - "" - ] - } - } - ] - }, - { - "name": "Add Content [/api/v1/page/{page-id}/content]", - "item": [ - { - "name": "Test_RespectOrder", - "item": [ - { - "name": "ImportBundle", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Success import\", function () {", - " var jsonData = pm.response.json();", - " console.log(jsonData);", - " pm.expect(jsonData[\"status\"]).to.eql(\"SUCCESS\");", - "});" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "POST", - "header": [ - { - "key": "Content-Type", - "value": "application/octet-stream" - }, - { - "key": "Content-Disposition", - "value": "attachment" - } - ], - "body": { - "mode": "formdata", - "formdata": [ - { - "key": "file", - "type": "file", - "src": "resources/testRespectOrder_Bundle.tar.gz" - } - ] - }, - "url": { - "raw": "{{serverURL}}/api/bundle/sync", - "host": [ - "{{serverURL}}" - ], - "path": [ - "api", - "bundle", - "sync" - ], - "query": [ - { - "key": "AUTH_TOKEN", - "value": "", - "disabled": true - } - ] - }, - "description": "Imports a Bundle that includes:\n\n* Page (testRespectOrder)\n* 2 Content (testOrder1 and testOrder2)" - }, - "response": [] - }, - { - "name": "Get Page To Check Order", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Response reorder check\", function () {", - " pm.expect(pm.response.text()).to.include(\"

testOrder2

testOrder1

\");", - "", - "});" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{serverURL}}/api/v1/page/render/testrespectorder?language_id=1&host_id=8a7d5e23-da1e-420a-b4f0-471e7da8ea2d", - "host": [ - "{{serverURL}}" - ], - "path": [ - "api", - "v1", - "page", - "render", - "testrespectorder" - ], - "query": [ - { - "key": "language_id", - "value": "1" - }, - { - "key": "host_id", - "value": "8a7d5e23-da1e-420a-b4f0-471e7da8ea2d" - } - ] - } - }, - "response": [] - }, - { - "name": "ReorderContents", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Response body contains\", function () {", - " pm.expect(pm.response.text()).to.include(\"ok\");", - "});" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "POST", - "header": [ - { - "key": "Content-Type", - "value": "application/json" - } - ], - "body": { - "mode": "raw", - "raw": "[{\"identifier\":\"//default/application/containers/system/\",\"uuid\":\"1\",\"contentletsId\":[\"ffba6c6b2e90ce4dcc2a553c6b860822\",\"844cdd64de4fd9418613b3b53f860c6f\"]}]" - }, - "url": { - "raw": "{{serverURL}}/api/v1/page/773c1d064bfedacf26986a67ee90b490/content", - "host": [ - "{{serverURL}}" - ], - "path": [ - "api", - "v1", - "page", - "773c1d064bfedacf26986a67ee90b490", - "content" - ] - }, - "description": "Reorder the page contents." - }, - "response": [] - }, - { - "name": "Get Page To Check Reorder", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Response reorder check\", function () {", - " pm.expect(pm.response.text()).to.include(\"

testOrder1

testOrder2

\");", - "", - "});" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{serverURL}}/api/v1/page/render/testrespectorder?language_id=1&host_id=8a7d5e23-da1e-420a-b4f0-471e7da8ea2d", - "host": [ - "{{serverURL}}" - ], - "path": [ - "api", - "v1", - "page", - "render", - "testrespectorder" - ], - "query": [ - { - "key": "language_id", - "value": "1" - }, - { - "key": "host_id", - "value": "8a7d5e23-da1e-420a-b4f0-471e7da8ea2d" - } - ] - } - }, - "response": [] - } - ], - "event": [ - { - "listen": "prerequest", - "script": { - "type": "text/javascript", - "packages": {}, - "exec": [ - "" - ] - } - }, - { - "listen": "test", - "script": { - "type": "text/javascript", - "packages": {}, - "exec": [ - "pm.test(\"Status code is 200\", function () {", - " pm.response.to.have.status(200);", - "});", - "", - "" - ] - } - } - ] - }, - { - "name": "invalidateSession", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 200\", function () {", - " pm.response.to.have.status(200);", - "});" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{serverURL}}/api/v1/logout", - "host": [ - "{{serverURL}}" - ], - "path": [ - "api", - "v1", - "logout" - ] - } - }, - "response": [] - }, - { - "name": "UserAuthenticationValidation", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "", - "pm.test(\"Status code is 401, Need credentials\", function () {", - " pm.response.to.have.status(401);", - "});", - "", - "pm.test(\"Response body matches\", function () {", - " pm.expect(pm.response.text()).to.include(\"Invalid User\");", - "});", - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "auth": { - "type": "noauth" - }, - "method": "POST", - "header": [ - { - "key": "Content-Type", - "value": "application/json" - } - ], - "body": { - "mode": "raw", - "raw": "[{\"identifier\":\"a050073a-a31e-4aab-9307-86bfb248096a\",\"uuid\":\"1\",\"contentletsId\":[\"767509b1-2392-4661-a16b-e0e31ce27719\",\"3c30df49-ea78-417a-93ce-631cd25bc66c\"]},{\"identifier\":\"5363c6c6-5ba0-4946-b7af-cf875188ac2e\",\"uuid\":\"1\",\"contentletsId\":[\"2efc77b4-a54f-479b-8a81-a133b9e6da04\",\"5aef0c62-b7d6-4805-9e7c-77a67f4822f3\",\"66d47ebf-7b11-4076-85b0-b6c8c373d000\"]}]" - }, - "url": { - "raw": "{{serverURL}}/api/v1/page/bec7b960-a8bf-4f14-a22b-0d94caf217f0/content", - "host": [ - "{{serverURL}}" - ], - "path": [ - "api", - "v1", - "page", - "bec7b960-a8bf-4f14-a22b-0d94caf217f0", - "content" - ] - }, - "description": "@Path(\"{pageId}/content\")" - }, - "response": [] - }, - { - "name": "SuccessRequest", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 200\", function () {", - " pm.response.to.have.status(200);", - "});", - "", - "pm.test(\"Response body contains\", function () {", - " pm.expect(pm.response.text()).to.include(\"ok\");", - "});", - "", - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "POST", - "header": [ - { - "key": "Content-Type", - "value": "application/json" - } - ], - "body": { - "mode": "raw", - "raw": "[{\"identifier\":\"5a07f889-4536-4956-aa6e-e7967969ec3f\",\"uuid\":\"1\",\"contentletsId\":[\"d4ed1990-b151-42ca-9bca-0725b07260de\"]},{\"identifier\":\"//demo.dotcms.com/application/containers/default/\",\"uuid\":\"1\",\"contentletsId\":[\"f827c41a-5689-4733-b4d7-916d3a31c9c6\",\"7c9cb3a7-bb68-4fd0-b21d-03ec4be491a7\"]}]" - }, - "url": { - "raw": "{{serverURL}}/api/v1/page/bec7b960-a8bf-4f14-a22b-0d94caf217f0/content", - "host": [ - "{{serverURL}}" - ], - "path": [ - "api", - "v1", - "page", - "bec7b960-a8bf-4f14-a22b-0d94caf217f0", - "content" - ] - }, - "description": "Adds Content to a Page, the container, template, page and contentlets are imported.\n\n7c9cb3a7-bb68-4fd0-b21d-03ec4be491a7 = container Banner\n7c9cb3a7-bb68-4fd0-b21d-03ec4be491a7e = Banner contentlet\n7c9cb3a7-bb68-4fd0-b21d-03ec4be491a7 = Container as File Default\nf827c41a-5689-4733-b4d7-916d3a31c9c6 = Rich Text Contentlet\n7c9cb3a7-bb68-4fd0-b21d-03ec4be491a7 = Widget Contentlet" - }, - "response": [] - }, - { - "name": "Save Contentlets Not Valid BadRequest 400", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 400\", function () {", - " pm.response.to.have.status(400);", - "});" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "POST", - "header": [ - { - "key": "Content-Type", - "value": "application/json" - } - ], - "body": { - "mode": "raw", - "raw": "[{\"identifier\":\"5a07f889-4536-4956-aa6e-e7967969ec3f\",\"uuid\":\"1\",\"contentletsId\":[\"f827c41a-5689-4733-b4d7-916d3a31c9c6\"]}]" - }, - "url": { - "raw": "{{serverURL}}/api/v1/page/bec7b960-a8bf-4f14-a22b-0d94caf217f0/content", - "host": [ - "{{serverURL}}" - ], - "path": [ - "api", - "v1", - "page", - "bec7b960-a8bf-4f14-a22b-0d94caf217f0", - "content" - ] - }, - "description": "@Path(\"{pageId}/content\")" - }, - "response": [] - }, - { - "name": "InvalidPageId", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 404\", function () {", - " pm.response.to.have.status(404);", - "});", - "", - "pm.test(\"Response body contains\", function () {", - " pm.expect(pm.response.text()).to.include(\"Page '2c12fe7e6-d338-49d5-973b-2d974d57015b' not found\");", - "});", - "", - "", - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "POST", - "header": [ - { - "key": "Content-Type", - "value": "application/json" - } - ], - "body": { - "mode": "raw", - "raw": "[{\"identifier\":\"a050073a-a31e-4aab-9307-86bfb248096a\",\"uuid\":\"1\",\"contentletsId\":[\"767509b1-2392-4661-a16b-e0e31ce27719\",\"3c30df49-ea78-417a-93ce-631cd25bc66c\"]},{\"identifier\":\"5363c6c6-5ba0-4946-b7af-cf875188ac2e\",\"uuid\":\"1\",\"contentletsId\":[\"2efc77b4-a54f-479b-8a81-a133b9e6da04\",\"5aef0c62-b7d6-4805-9e7c-77a67f4822f3\",\"66d47ebf-7b11-4076-85b0-b6c8c373d000\"]}]" - }, - "url": { - "raw": "{{serverURL}}/api/v1/page/2c12fe7e6-d338-49d5-973b-2d974d57015b/content", - "host": [ - "{{serverURL}}" - ], - "path": [ - "api", - "v1", - "page", - "2c12fe7e6-d338-49d5-973b-2d974d57015b", - "content" - ] - }, - "description": "@Path(\"{pageId}/content\")" - }, - "response": [] - }, - { - "name": "RequestWihoutParameters", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "", - "pm.test(\"Status code is 400\", function () {", - " pm.response.to.have.status(400);", - "});", - "", - "pm.test(\"Layout is required\", function () {", - " pm.expect(pm.response.text()).to.include(\"Layout is required\");", - "});", - "", - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "POST", - "header": [ - { - "key": "Content-Type", - "value": "application/json" - } - ], - "body": { - "mode": "raw", - "raw": "" - }, - "url": { - "raw": "{{serverURL}}/api/v1/page/bec7b960-a8bf-4f14-a22b-0d94caf217f0/content", - "host": [ - "{{serverURL}}" - ], - "path": [ - "api", - "v1", - "page", - "bec7b960-a8bf-4f14-a22b-0d94caf217f0", - "content" - ] - }, - "description": "@Path(\"{pageId}/content\")" - }, - "response": [] - }, - { - "name": "BadRequest", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "", - "pm.test(\"Status code is 400\", function () {", - " pm.response.to.have.status(400);", - "});", - "", - "pm.test(\"Response body contains\", function () {", - " pm.expect(pm.response.text()).to.include(\"Container id and uuid are required\");", - "});", - "", - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "POST", - "header": [ - { - "key": "Content-Type", - "value": "application/json" - } - ], - "body": { - "mode": "raw", - "raw": "[{\"id222\":\"a050073a-a31e-4aab-9307-86bfb248096a\",\"uuid\":\"1\",\"contentlets\":[\"767509b1-2392-4661-a16b-e0e31ce27719\",\"3c30df49-ea78-417a-93ce-631cd25bc66c\"]},{\"id\":\"5363c6c6-5ba0-4946-b7af-cf875188ac2e\",\"uuid22\":\"1\",\"contentlets\":[\"2efc77b4-a54f-479b-8a81-a133b9e6da04\",\"5aef0c62-b7d6-4805-9e7c-77a67f4822f3\",\"66d47ebf-7b11-4076-85b0-b6c8c373d000\"]}]" - }, - "url": { - "raw": "{{serverURL}}/api/v1/page/bec7b960-a8bf-4f14-a22b-0d94caf217f0/content", - "host": [ - "{{serverURL}}" - ], - "path": [ - "api", - "v1", - "page", - "bec7b960-a8bf-4f14-a22b-0d94caf217f0", - "content" - ] - }, - "description": "@Path(\"{pageId}/content\")" - }, - "response": [] - }, - { - "name": "Save Content Upsert Duplicated Containers Body", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 200\", function () {", - " pm.response.to.have.status(200);", - "});", - "", - "pm.test(\"Response body contains\", function () {", - " pm.expect(pm.response.text()).to.include(\"ok\");", - "});", - "", - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "POST", - "header": [], - "body": { - "mode": "raw", - "raw": "[\n {\n \"identifier\":\"//demo.dotcms.com/application/containers/default/\",\n \"uuid\":\"1\",\n \"contentletsId\":[\"7c9cb3a7-bb68-4fd0-b21d-03ec4be491a7\"]\n },\n {\n \"identifier\":\"//demo.dotcms.com/application/containers/default/\",\n \"uuid\":\"1\",\n \"contentletsId\":[\"f827c41a-5689-4733-b4d7-916d3a31c9c6\"]\n },\n {\n \"identifier\":\"//demo.dotcms.com/application/containers/default/\",\n \"uuid\":\"1\",\n \"contentletsId\":[\"7c9cb3a7-bb68-4fd0-b21d-03ec4be491a7\"]\n }\n]", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{serverURL}}/api/v1/page/bec7b960-a8bf-4f14-a22b-0d94caf217f0/content", - "host": [ - "{{serverURL}}" - ], - "path": [ - "api", - "v1", - "page", - "bec7b960-a8bf-4f14-a22b-0d94caf217f0", - "content" - ] - }, - "description": "This test is for when users make a request sending at the Body the same container and uuid diff times.\nThis will merge all those contentlets and save the page successfully." - }, - "response": [] - } - ], - "description": " @Path(\"{pageId}/content\")", - "event": [ - { - "listen": "prerequest", - "script": { - "type": "text/javascript", - "exec": [ - "" - ] - } - }, - { - "listen": "test", - "script": { - "type": "text/javascript", - "exec": [ - "" - ] - } - } - ] - }, - { - "name": "Render HTML [/api/v1/page/renderHTML]", - "item": [ - { - "name": "invalidateSession", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 200\", function () {", - " pm.response.to.have.status(200);", - "});" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{serverURL}}/api/v1/logout", - "host": [ - "{{serverURL}}" - ], - "path": [ - "api", - "v1", - "logout" - ] - } - }, - "response": [] - }, - { - "name": "UserAuthenticationValidation", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "", - "pm.test(\"Status code is 401, Need credentials\", function () {", - " pm.response.to.have.status(401);", - "});", - "", - "pm.test(\"Invalid User\", function () {", - " pm.expect(pm.response.text()).to.include(\"Invalid User\");", - "});", - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "auth": { - "type": "noauth" - }, - "method": "GET", - "header": [], - "url": { - "raw": "{{serverURL}}/api/v1/page/renderHTML/destinations/costa-rica", - "host": [ - "{{serverURL}}" - ], - "path": [ - "api", - "v1", - "page", - "renderHTML", - "destinations", - "costa-rica" - ] - }, - "description": "@Path(\"/renderHTML/{uri: .*}\")" - }, - "response": [] - }, - { - "name": "pre_ImportBundleWithDemoHost", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Bundle uploaded sucessfully\", function () {", - " pm.response.to.have.status(200);", - "", - " var jsonData = pm.response.json();", - " console.log(jsonData);", - "", - " pm.expect(jsonData[\"bundleName\"]).to.eql(\"demo.dotcms.com.tar.gz\");", - " pm.expect(jsonData[\"status\"]).to.eql(\"SUCCESS\");", - "});" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "POST", - "header": [ - { - "key": "Content-Type", - "value": "application/octet-stream" - }, - { - "key": "Content-Disposition", - "value": "attachment" - } - ], - "body": { - "mode": "formdata", - "formdata": [ - { - "key": "file", - "type": "file", - "src": "resources/GraphQL/demo.dotcms.com.tar.gz" - } - ] - }, - "url": { - "raw": "{{serverURL}}/api/bundle/sync", - "host": [ - "{{serverURL}}" - ], - "path": [ - "api", - "bundle", - "sync" - ], - "query": [ - { - "key": "AUTH_TOKEN", - "value": "", - "disabled": true - } - ] - }, - "description": "Imports a Bundle that includes:\n* Imports demo.dotcms.com" - }, - "response": [] - }, - { - "name": "SuccessRequest", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 200\", function () {", - " pm.response.to.have.status(200);", - "});", - "", - "pm.test(\"renders expected HTML only\", function () {", - " pm.expect(pm.response.text().startsWith(\"\")).to.be.true;", - " pm.expect(pm.response.text()).to.include(\"body id=\\\"costa-rica-rain-forest\\\"\");", - "});", - "", - "", - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{serverURL}}/api/v1/page/renderHTML/destinations/costa-rica", - "host": [ - "{{serverURL}}" - ], - "path": [ - "api", - "v1", - "page", - "renderHTML", - "destinations", - "costa-rica" - ] - }, - "description": "@Path(\"/renderHTML/{uri: .*}\")" - }, - "response": [] - }, - { - "name": "InvalidPageURL", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 404\", function () {", - " pm.response.to.have.status(404);", - "});", - "", - "pm.test(\"Valid response\", function () {", - " pm.expect(pm.response.text()).to.include(\"Page \\'about-us/our-team/index2\\' not found\");", - "});", - "", - "", - "", - "", - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{serverURL}}/api/v1/page/renderHTML/about-us/our-team/index2", - "host": [ - "{{serverURL}}" - ], - "path": [ - "api", - "v1", - "page", - "renderHTML", - "about-us", - "our-team", - "index2" - ] - }, - "description": "@Path(\"/renderHTML/{uri: .*}\")" - }, - "response": [] - } - ], - "event": [ - { - "listen": "prerequest", - "script": { - "type": "text/javascript", - "exec": [ - "" - ] - } - }, - { - "listen": "test", - "script": { - "type": "text/javascript", - "exec": [ - "" - ] - } - } - ] - }, - { - "name": "Whats Changed", - "item": [ - { - "name": "pre_ImportBundle", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Bundle imported\", function () {", - " var jsonData = pm.response.json();", - " console.log(jsonData);", - "", - " pm.expect(jsonData[\"bundleName\"]).to.contains(\"testWhatsChanged\");", - " pm.expect(jsonData[\"status\"]).to.eql(\"SUCCESS\");", - "});" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "auth": { - "type": "basic", - "basic": [ - { - "key": "password", - "value": "admin", - "type": "string" - }, - { - "key": "username", - "value": "admin@dotcms.com", - "type": "string" - }, - { - "key": "saveHelperData", - "type": "any" - }, - { - "key": "showPassword", - "value": false, - "type": "boolean" - } - ] - }, - "method": "POST", - "header": [ - { - "key": "Content-Type", - "value": "application/octet-stream" - }, - { - "key": "Content-Disposition", - "value": "attachment" - } - ], - "body": { - "mode": "formdata", - "formdata": [ - { - "key": "file", - "type": "file", - "src": "resources/testWhatsChanged-01FTGYNEP672VF4KFRFWSX3RPT.tar.gz" - } - ] - }, - "url": { - "raw": "{{serverURL}}/api/bundle/sync", - "host": [ - "{{serverURL}}" - ], - "path": [ - "api", - "bundle", - "sync" - ], - "query": [ - { - "key": "AUTH_TOKEN", - "value": "", - "disabled": true - } - ] - }, - "description": "Imports a Bundle that includes: a page with content, the content has diff versions working and live" - }, - "response": [] - }, - { - "name": "Check Whats Changed Endpoint", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"There are diff between live and working page\", function () {", - " var jsonData = pm.response.json().entity;", - " pm.expect(jsonData[\"diff\"]).equal(true);", - "});" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{serverURL}}/api/v1/page/8afe50bc66533c6f0ed7711d74654b80/render/versions", - "host": [ - "{{serverURL}}" - ], - "path": [ - "api", - "v1", - "page", - "8afe50bc66533c6f0ed7711d74654b80", - "render", - "versions" - ] - } - }, - "response": [] - } - ], - "event": [ - { - "listen": "prerequest", - "script": { - "type": "text/javascript", - "packages": {}, - "exec": [ - "" - ] - } - }, - { - "listen": "test", - "script": { - "type": "text/javascript", - "packages": {}, - "exec": [ - "pm.test(\"Status code is 200\", function () {", - " pm.response.to.have.status(200);", - "});" - ] - } - } - ] - }, - { - "name": "TestHostVariables", - "item": [ - { - "name": "Create new Site For Test Host Variables", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "var jsonData = pm.response.json();", - "", - "pm.test(\"Host check\", function () {", - " pm.expect(jsonData.entity.siteName).to.eql('sitevariables.site.com');", - "});", - "", - "pm.collectionVariables.set(\"siteIdTestHost\", jsonData.entity.identifier);", - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "POST", - "header": [], - "body": { - "mode": "raw", - "raw": "{\n \"siteName\":\"sitevariables.site.com\"\n\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{serverURL}}/api/v1/site", - "host": [ - "{{serverURL}}" - ], - "path": [ - "api", - "v1", - "site" - ] - } - }, - "response": [] - }, - { - "name": "Publish Site", - "request": { - "method": "PUT", - "header": [], - "url": { - "raw": "{{serverURL}}/api/v1/site/{{siteIdTestHost}}/_publish", - "host": [ - "{{serverURL}}" - ], - "path": [ - "api", - "v1", - "site", - "{{siteIdTestHost}}", - "_publish" - ] - } - }, - "response": [] - }, - { - "name": "Add Site Variable", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code should be 200\", function () {", - " pm.response.to.have.status(200);", - "});", - "", - "var jsonData = pm.response.json();", - "", - "pm.test(\"Host check\", function () {", - " pm.expect(jsonData.entity.key).to.eql('onevar1');", - "});", - "", - "pm.collectionVariables.set(\"sitevariableIdTestHost\", jsonData.entity.id);", - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "PUT", - "header": [], - "body": { - "mode": "raw", - "raw": "{\n \"siteId\":\"{{siteIdTestHost}}\",\n \"name\":\"onevar1\",\n \"key\":\"onevar1\",\n \"value\":\"onevar-value\"\n}\n", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{serverURL}}/api/v1/site/variable", - "host": [ - "{{serverURL}}" - ], - "path": [ - "api", - "v1", - "site", - "variable" - ] - } - }, - "response": [] - }, - { - "name": "CreateNewContainer Test Host Variables", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"No errors\", function () {", - " ", - " var jsonData = pm.response.json();", - " pm.expect(jsonData.errors.length).to.eql(0);", - "});", - "", - "pm.test(\"Information Saved Correctly\", function () {", - " ", - " var jsonData = pm.response.json();", - " pm.expect(jsonData.entity.title).to.eql(\"TestContainerHostVariables\");", - " pm.expect(jsonData.entity.notes).to.eql(\"Notes\");", - " ", - " ", - "});", - "", - "var jsonData = pm.response.json();", - "pm.collectionVariables.set(\"containeridentifier\", jsonData.entity.identifier);", - "pm.collectionVariables.set(\"inode\", jsonData.entity.inode);", - "", - "", - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "POST", - "header": [ - { - "key": "Content-Type", - "value": "application/json" - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"title\":\"TestContainerHostVariables\",\n \"friendlyName\":\"TestContainer description HostVariables\",\n \"maxContentlets\":1,\n \"notes\":\"Notes\",\n \"preLoop\":\"preLoop $host_variable.onevar1\",\n \"postLoop\":\"postLoop xxxx\",\n \"containerStructures\":[\n {\n \"structureId\":\"webPageContent\",\n \"code\":\"$title on container\"\n }\n ]\n\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{serverURL}}/api/v1/containers", - "host": [ - "{{serverURL}}" - ], - "path": [ - "api", - "v1", - "containers" - ] - }, - "description": "Create a container" - }, - "response": [] - }, - { - "name": "SavePublishNewTemplateTestHostVariables", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "var jsonData = pm.response.json();", - "", - "pm.test(\"live check\", function () {", - " pm.expect(jsonData.entity.live).to.eql(true);", - "});", - "", - "", - "pm.test(\"Title check\", function () {", - " pm.expect(jsonData.entity.title).to.eql('PostMan Test Save Publish Test Host Variables');", - "});", - "", - "pm.collectionVariables.set(\"templateIdToPublishedHost\", jsonData.entity.identifier);", - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "PUT", - "header": [], - "body": { - "mode": "raw", - "raw": "{\n \"title\":\"PostMan Test Save Publish Test Host Variables\",\n \"friendlyName\":\"This is a postman test description\",\n \"body\":\"#parseContainer('{{containeridentifier}}','1659543155955')\"\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{serverURL}}/api/v1/templates/_savepublish", - "host": [ - "{{serverURL}}" - ], - "path": [ - "api", - "v1", - "templates", - "_savepublish" - ] - } - }, - "response": [] - }, - { - "name": "Create Page using the template", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "var jsonData = pm.response.json();", - "", - "pm.test(\"Path check\", function () {", - " pm.expect(jsonData.entity.path).to.eql(\"/testpagehostvariables\");", - "});", - "", - "", - "", - "var jsonData = pm.response.json();", - "pm.collectionVariables.set(\"pageUrlHostVariablestest\", pm.response.json().path);", - "", - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "PUT", - "header": [ - { - "key": "Content-Type", - "value": "application/json" - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"contentlet\": {\n \"contentType\": \"htmlpageasset\",\n \"hostFolder\": \"{{siteIdTestHost}}\",\n \"title\": \"Test Page Host variables\",\n \"url\": \"testpagehostvariables\",\n \"template\":\"{{templateIdToPublishedHost}}\",\n \"sortOrder\":1,\n \"cachettl\":\"0\",\n \"friendlyName\":\"testpagehostvariables\"\n\n }\n}" - }, - "url": { - "raw": "{{serverURL}}/api/v1/workflow/actions/default/fire/PUBLISH", - "host": [ - "{{serverURL}}" - ], - "path": [ - "api", - "v1", - "workflow", - "actions", - "default", - "fire", - "PUBLISH" - ] - }, - "description": "Fire any action using the actionId\n\nOptional: If you pass ?inode={inode}, you don't need body here.\n\n@Path(\"/actions/{actionId}/fire\")" - }, - "response": [] - }, - { - "name": "Test the host variables", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "var text = pm.response.text();", - "", - "pm.test(\"Path check\", function () {", - " pm.expect(text).to.include(\"onevar-value\");", - "});", - "", - "", - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{serverURL}}/api/v1/page/render/testpagehostvariables?language_id=1&host_id={{siteIdTestHost}}", - "host": [ - "{{serverURL}}" - ], - "path": [ - "api", - "v1", - "page", - "render", - "testpagehostvariables" - ], - "query": [ - { - "key": "language_id", - "value": "1" - }, - { - "key": "host_id", - "value": "{{siteIdTestHost}}" - } - ] - } - }, - "response": [] - } - ], - "description": "1. This test creates a Host with two variables\n2. Creates a container with the generic contentlet and use this two variables\n3. Creates a template that uses this container\n4. creates a page that uses this page\n5. Check that the page exists.", - "event": [ - { - "listen": "prerequest", - "script": { - "type": "text/javascript", - "packages": {}, - "exec": [ - "" - ] - } - }, - { - "listen": "test", - "script": { - "type": "text/javascript", - "packages": {}, - "exec": [ - "pm.test(\"Response code should be 200\", function () {", - " pm.response.to.have.status(200);", - "});" - ] - } - } - ] - }, - { - "name": "In-Place Content Copy", - "item": [ - { - "name": "Create Test Page", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Test Page created successfully\", function () {", - " var jsonData = pm.response.json();", - " pm.expect(jsonData.errors.length).to.eql(0);", - " pm.collectionVariables.set(\"pageIdentifier\", jsonData.entity.identifier);", - "});" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "PUT", - "header": [], - "body": { - "mode": "raw", - "raw": "{\n\t\n\t\"contentlet\": {\n\t\t\"contentType\":\"htmlpageasset\",\n \"title\":\"testPageCopy\",\n \"url\":\"testPageCopy\",\n \"hostFolder\":\"default\",\n \"template\":\"SYSTEM_TEMPLATE\",\n \"friendlyName\":\"testPageCopy\",\n \"cachettl\":0\n\t\t\n\t}\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{serverURL}}/api/v1/workflow/actions/default/fire/PUBLISH?indexPolicy=WAIT_FOR", - "host": [ - "{{serverURL}}" - ], - "path": [ - "api", - "v1", - "workflow", - "actions", - "default", - "fire", - "PUBLISH" - ], - "query": [ - { - "key": "indexPolicy", - "value": "WAIT_FOR" - } - ] - } - }, - "response": [] - }, - { - "name": "Create Test Rich Text Contentlet", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Test Rich Text created successfully\", function () {", - " var jsonData = pm.response.json();", - " pm.expect(jsonData.errors.length).to.eql(0);", - " pm.collectionVariables.set(\"richContentIdentifier\", jsonData.entity.identifier);", - "});" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "PUT", - "header": [], - "body": { - "mode": "raw", - "raw": "{\n\t\n\t\"contentlet\": {\n\t\t\"contentType\":\"webPageContent\",\n \"title\":\"textContent\",\n \"contentHost\":\"default\",\n \"body\":\"Text Content Body\"\n \n\t}\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{serverURL}}/api/v1/workflow/actions/default/fire/PUBLISH?indexPolicy=WAIT_FOR", - "host": [ - "{{serverURL}}" - ], - "path": [ - "api", - "v1", - "workflow", - "actions", - "default", - "fire", - "PUBLISH" - ], - "query": [ - { - "key": "indexPolicy", - "value": "WAIT_FOR" - } - ] - } - }, - "response": [] - }, - { - "name": "Add Test Content To Test Page", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Test Content added to Test Page successfuly\", function () {", - " var jsonData = pm.response.json();", - " pm.expect(jsonData.errors.length).to.eql(0);", - "});" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "POST", - "header": [], - "body": { - "mode": "raw", - "raw": "[\n {\n \"identifier\": \"SYSTEM_CONTAINER\",\n \"uuid\": \"1\",\n \"contentletsId\": [\n \"{{richContentIdentifier}}\"\n ]\n }\n]", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{serverURL}}/api/v1/page/{{pageIdentifier}}/content", - "host": [ - "{{serverURL}}" - ], - "path": [ - "api", - "v1", - "page", - "{{pageIdentifier}}", - "content" - ] - } - }, - "response": [] - }, - { - "name": "Check That Multi-Tree Data Is Correct", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Retrieving Multi-Tree data for test Contentlet\", function () {", - " var entity = pm.response.json().entity;", - " var testContentId = pm.collectionVariables.get(\"richContentIdentifier\");", - " var found = false;", - " entity.forEach((treeEntry) => {", - "", - " if (testContentId == treeEntry.contentId) {", - " pm.collectionVariables.set(\"containerId\", treeEntry.containerId);", - " pm.collectionVariables.set(\"contentId\", treeEntry.contentId);", - " pm.collectionVariables.set(\"pageId\", treeEntry.pageId);", - " pm.collectionVariables.set(\"personalization\", treeEntry.personalization);", - " pm.collectionVariables.set(\"relationType\", treeEntry.relationType);", - " pm.collectionVariables.set(\"treeOrder\", treeEntry.treeOrder);", - " pm.collectionVariables.set(\"variantId\", treeEntry.variantId);", - " found = true;", - " }", - "", - " });", - " if (!found) {", - " pm.expect.fail(\"Expected test Contentlet with ID '\" + testContentId + \"' was not found\");", - " }", - "});" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{serverURL}}/api/v1/page/{{pageIdentifier}}/content/tree", - "host": [ - "{{serverURL}}" - ], - "path": [ - "api", - "v1", - "page", - "{{pageIdentifier}}", - "content", - "tree" - ] - } - }, - "response": [] - }, - { - "name": "In-Place Copy Of Test Contentlet", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"HTTP Status code must be 200\", function () {", - " var jsonData = pm.response.json();", - " pm.expect(jsonData.entity.title).to.equal(\"textContent\");", - " pm.collectionVariables.set(\"copiedRichContentIdentifier\", jsonData.entity.identifier);", - "});", - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "PUT", - "header": [], - "body": { - "mode": "raw", - "raw": "{\n \"containerId\": \"{{containerId}}\",\n \"contentId\": \"{{contentId}}\",\n \"pageId\": \"{{pageId}}\",\n \"personalization\": \"{{personalization}}\",\n \"relationType\": \"{{relationType}}\",\n \"treeOrder\": \"{{treeOrder}}\",\n \"variantId\": \"{{variantId}}\"\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{serverURL}}/api/v1/page/copyContent", - "host": [ - "{{serverURL}}" - ], - "path": [ - "api", - "v1", - "page", - "copyContent" - ] - } - }, - "response": [] - }, - { - "name": "Check Multitree Data After In-Place Copy", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Checking that duplicate Contentlet has replaced the existing one\", function () {", - " var entity = pm.response.json().entity;", - "", - " var containerId = pm.collectionVariables.get(\"containerId\");", - " var contentId = pm.collectionVariables.get(\"copiedRichContentIdentifier\");", - " var pageId = pm.collectionVariables.get(\"pageId\");", - " var personalization = pm.collectionVariables.get(\"personalization\");", - " var relationType = pm.collectionVariables.get(\"relationType\");", - " var variantId = pm.collectionVariables.get(\"variantId\");", - " ", - " var found = false;", - " entity.forEach((treeEntry) => {", - "", - " if (contentId == treeEntry.contentId) {", - " found = true;", - " pm.expect(treeEntry.containerId).to.eql(containerId);", - " pm.expect(treeEntry.contentId).to.eql(contentId);", - " pm.expect(treeEntry.pageId).to.eql(pageId);", - " pm.expect(treeEntry.personalization).to.eql(personalization);", - " pm.expect(treeEntry.relationType).to.eql(relationType);", - " pm.expect(treeEntry.variantId).to.eql(variantId);", - " }", - "", - " });", - " if (!found) {", - " pm.expect.fail(\"Copied test Contentlet with ID '\" + contentId + \"' was not found\");", - " }", - "});" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{serverURL}}/api/v1/page/{{pageIdentifier}}/content/tree", - "host": [ - "{{serverURL}}" - ], - "path": [ - "api", - "v1", - "page", - "{{pageIdentifier}}", - "content", - "tree" - ] - } - }, - "response": [] - }, - { - "name": "Copy Non-Existing Contentlet", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Checking that the error message is present\", function () {", - " var jsonData = pm.response.json();", - " pm.expect(jsonData.message).not.eq(\"\");", - "});" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "PUT", - "header": [], - "body": { - "mode": "raw", - "raw": "{\n \"containerId\": \"{{containerId}}\",\n \"contentId\": \"{{contentId}}xxx\",\n \"pageId\": \"{{pageId}}\",\n \"personalization\": \"{{personalization}}\",\n \"relationType\": \"{{relationType}}\",\n \"treeOrder\": \"{{treeOrder}}\",\n \"variantId\": \"{{variantId}}\"\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{serverURL}}/api/v1/page/copyContent", - "host": [ - "{{serverURL}}" - ], - "path": [ - "api", - "v1", - "page", - "copyContent" - ] - } - }, - "response": [] - }, - { - "name": "Copy Contentlet to Non-Existing Container", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Checking that the error message is present\", function () {", - " var jsonData = pm.response.json();", - " pm.expect(jsonData.message).not.eq(\"\");", - "});" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "PUT", - "header": [], - "body": { - "mode": "raw", - "raw": "{\n \"containerId\": \"{{containerId}}xx\",\n \"contentId\": \"{{contentId}}\",\n \"pageId\": \"{{pageId}}\",\n \"personalization\": \"{{personalization}}\",\n \"relationType\": \"{{relationType}}\",\n \"treeOrder\": \"{{treeOrder}}\",\n \"variantId\": \"{{variantId}}\"\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{serverURL}}/api/v1/page/copyContent", - "host": [ - "{{serverURL}}" - ], - "path": [ - "api", - "v1", - "page", - "copyContent" - ] - } - }, - "response": [] - }, - { - "name": "Deep-Clone Test Page", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Validate page has been copied\", function () {", - " var jsonData = pm.response.json();", - " pm.expect(jsonData.entity.title).to.equal(\"testPageCopy\");", - " pm.collectionVariables.set(\"pageDeepCopyIdentifier\", jsonData.entity.identifier);", - "});" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "PUT", - "header": [], - "url": { - "raw": "{{serverURL}}/api/v1/page/{{pageIdentifier}}/_deepcopy", - "host": [ - "{{serverURL}}" - ], - "path": [ - "api", - "v1", - "page", - "{{pageIdentifier}}", - "_deepcopy" - ] - } - }, - "response": [] - }, - { - "name": "Check Multi-Tree Data For Deep-Copied Page", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Checking Multi-Tree data Deep-Copied Page\", function () {", - " var jsonData = pm.response.json();", - " var containerId = pm.collectionVariables.get(\"containerId\");", - " var contentId = pm.collectionVariables.get(\"contentId\");", - " var pageId = pm.collectionVariables.get(\"pageId\");", - " var personalization = pm.collectionVariables.get(\"personalization\");", - " var relationType = pm.collectionVariables.get(\"relationType\");", - "", - " pm.expect(jsonData.entity[0].containerId).to.eql(containerId);", - " pm.expect(jsonData.entity[0].contentId).to.not.eql(contentId);", - " pm.expect(jsonData.entity[0].pageId).to.not.eql(pageId);", - " pm.expect(jsonData.entity[0].personalization).to.eql(personalization);", - " pm.expect(jsonData.entity[0].relationType).to.eql(relationType);", - "});" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{serverURL}}/api/v1/page/{{pageDeepCopyIdentifier}}/content/tree", - "host": [ - "{{serverURL}}" - ], - "path": [ - "api", - "v1", - "page", - "{{pageDeepCopyIdentifier}}", - "content", - "tree" - ] - } - }, - "response": [] - } - ], - "description": "This Test Collection verifies that the In-Place Contentlet Copy works correctly.\n\nThere are times where a given Contentlet is referenced by several pages. Sometimes, users just want to edit the Contentlet in one specific page without affecting they way such a Contentlet looks like in the other pages. This feature allows them to (1) create an exact copy of the Contentlet -- which replaces the existing one -- and (2) edit that copied Contentlet.", - "event": [ - { - "listen": "prerequest", - "script": { - "type": "text/javascript", - "packages": {}, - "exec": [ - "" - ] - } - }, - { - "listen": "test", - "script": { - "type": "text/javascript", - "packages": {}, - "exec": [ - "pm.test(\"HTTP Status code must be 200 or 404\", function () {", - " pm.expect(pm.response.code).to.be.oneOf([200, 404]);", - "});" - ] - } - } - ] - }, - { - "name": "Number of Content References in Pages", - "item": [ - { - "name": "Get Default Site", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Getting 'default' Site ID\", function() {", - " var entity = pm.response.json().entity;", - " pm.collectionVariables.set(\"defaultSiteId\", entity.identifier);", - "});", - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "POST", - "header": [], - "body": { - "mode": "raw", - "raw": "{\n \"siteName\": \"default\"\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{serverURL}}/api/v1/site/_byname", - "host": [ - "{{serverURL}}" - ], - "path": [ - "api", - "v1", - "site", - "_byname" - ] - }, - "description": "Gets the Identifier of the \"default\" Site." - }, - "response": [] - }, - { - "name": "Create First Test Page", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"No page creation errors are present\", function() {", - " var jsonData = pm.response.json();", - " pm.expect(jsonData.errors.length).to.eql(0);", - " pm.collectionVariables.set(\"firstPageIdentifier\", jsonData.entity.identifier);", - "});", - "" - ], - "type": "text/javascript", - "packages": {} - } - }, - { - "listen": "prerequest", - "script": { - "exec": [ - "pm.collectionVariables.set(\"firstPageUrl\", \"first-test-page\" + Date.now());" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "PUT", - "header": [], - "body": { - "mode": "raw", - "raw": "{\n \"contentlet\": {\n \"contentType\": \"htmlpageasset\",\n \"title\": \"First Test Page\",\n \"url\": \"{{firstPageUrl}}\",\n \"hostFolder\": \"default\",\n \"template\": \"SYSTEM_TEMPLATE\",\n \"friendlyName\": \"First Test Page\",\n \"cachettl\": 0\n }\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{serverURL}}/api/v1/workflow/actions/default/fire/PUBLISH?indexPolicy=WAIT_FOR", - "host": [ - "{{serverURL}}" - ], - "path": [ - "api", - "v1", - "workflow", - "actions", - "default", - "fire", - "PUBLISH" - ], - "query": [ - { - "key": "indexPolicy", - "value": "WAIT_FOR" - } - ] - } - }, - "response": [] - }, - { - "name": "Create Test Rich Text Contentlet", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"No contentlet creation errors are present\", function() {", - " var jsonData = pm.response.json();", - " pm.expect(jsonData.errors.length).to.eql(0);", - " pm.collectionVariables.set(\"richContentIdentifier\", jsonData.entity.identifier);", - "});", - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "PUT", - "header": [], - "body": { - "mode": "raw", - "raw": "{\n \"contentlet\": {\n \"contentType\": \"webPageContent\",\n \"title\": \"Test Content\",\n \"contentHost\": \"default\",\n \"body\": \"Text Content Body\"\n }\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{serverURL}}/api/v1/workflow/actions/default/fire/PUBLISH?indexPolicy=WAIT_FOR", - "host": [ - "{{serverURL}}" - ], - "path": [ - "api", - "v1", - "workflow", - "actions", - "default", - "fire", - "PUBLISH" - ], - "query": [ - { - "key": "indexPolicy", - "value": "WAIT_FOR" - } - ] - } - }, - "response": [] - }, - { - "name": "Add Test Contentlet To First Page", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"No contentlet addition errors are present\", function() {", - " var jsonData = pm.response.json();", - " pm.expect(jsonData.errors.length).to.eql(0);", - "});", - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "POST", - "header": [], - "body": { - "mode": "raw", - "raw": "[\n {\n \"identifier\": \"SYSTEM_CONTAINER\",\n \"uuid\": \"1\",\n \"contentletsId\": [\n \"{{richContentIdentifier}}\"\n ]\n }\n]", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{serverURL}}/api/v1/page/{{firstPageIdentifier}}/content", - "host": [ - "{{serverURL}}" - ], - "path": [ - "api", - "v1", - "page", - "{{firstPageIdentifier}}", - "content" - ] - } - }, - "response": [] - }, - { - "name": "Check Property in First Page", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Only one Contentlet must be present\", function() {", - " var entity = pm.response.json().entity;", - " var contentletList = entity.containers.SYSTEM_CONTAINER.contentlets[\"uuid-1\"];", - " pm.expect(contentletList.length).to.eql(1);", - "});", - "", - "pm.test(\"Check the 'onNumberOfPages' property in the test Contentlet map in first Page\", function() {", - " var entity = pm.response.json().entity;", - " var contentlet = entity.containers.SYSTEM_CONTAINER.contentlets[\"uuid-1\"][0];", - " pm.expect(contentlet.onNumberOfPages).to.eql(1, \"The 'onNumberOfPages' counter must be 1 at this point\");", - "});", - "", - "pm.test(\"The rendered section should contain data attribute 'data-dot-on-number-of-pages' for the contentlet object\", function() {", - " var entity = pm.response.json().entity;", - " var contentletData = entity.containers.SYSTEM_CONTAINER.rendered[\"uuid-1\"];", - " console.log(contentletData);", - " pm.expect(contentletData).includes(\"data-dot-on-number-of-pages\");", - "});", - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{serverURL}}/api/v1/page/render/{{firstPageUrl}}?language_id=1&mode=EDIT_MODE&host_id={{defaultSiteId}}", - "host": [ - "{{serverURL}}" - ], - "path": [ - "api", - "v1", - "page", - "render", - "{{firstPageUrl}}" - ], - "query": [ - { - "key": "language_id", - "value": "1" - }, - { - "key": "mode", - "value": "EDIT_MODE" - }, - { - "key": "host_id", - "value": "{{defaultSiteId}}" - } - ] - } - }, - "response": [] - }, - { - "name": "Create Second Test Page", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"No page creation errors are present\", function() {", - " var jsonData = pm.response.json();", - " pm.expect(jsonData.errors.length).to.eql(0);", - " pm.collectionVariables.set(\"secondPageIdentifier\", jsonData.entity.identifier);", - "});", - "" - ], - "type": "text/javascript", - "packages": {} - } - }, - { - "listen": "prerequest", - "script": { - "exec": [ - "pm.collectionVariables.set(\"secondPageUrl\", \"second-test-page\" + Date.now());" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "PUT", - "header": [], - "body": { - "mode": "raw", - "raw": "{\n \"contentlet\": {\n \"contentType\": \"htmlpageasset\",\n \"title\": \"Second Test Page\",\n \"url\": \"{{secondPageUrl}}\",\n \"hostFolder\": \"default\",\n \"template\": \"SYSTEM_TEMPLATE\",\n \"friendlyName\": \"Second Test Page\",\n \"cachettl\": 0\n }\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{serverURL}}/api/v1/workflow/actions/default/fire/PUBLISH?indexPolicy=WAIT_FOR", - "host": [ - "{{serverURL}}" - ], - "path": [ - "api", - "v1", - "workflow", - "actions", - "default", - "fire", - "PUBLISH" - ], - "query": [ - { - "key": "indexPolicy", - "value": "WAIT_FOR" - } - ] - } - }, - "response": [] - }, - { - "name": "Add Test Contentlet To Second Page", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"No contentlet addition errors are present\", function() {", - " var jsonData = pm.response.json();", - " pm.expect(jsonData.errors.length).to.eql(0);", - "});", - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "POST", - "header": [], - "body": { - "mode": "raw", - "raw": "[\n {\n \"identifier\": \"SYSTEM_CONTAINER\",\n \"uuid\": \"1\",\n \"contentletsId\": [\n \"{{richContentIdentifier}}\"\n ]\n }\n]", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{serverURL}}/api/v1/page/{{secondPageIdentifier}}/content", - "host": [ - "{{serverURL}}" - ], - "path": [ - "api", - "v1", - "page", - "{{secondPageIdentifier}}", - "content" - ] - } - }, - "response": [] - }, - { - "name": "Check Property in Second Page", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Only one Contentlet must be present\", function() {", - " var entity = pm.response.json().entity;", - " var contentletList = entity.containers.SYSTEM_CONTAINER.contentlets[\"uuid-1\"];", - " pm.expect(contentletList.length).to.eql(1);", - "});", - "", - "pm.test(\"Check the 'onNumberOfPages' property in the test Contentlet map in second Page\", function() {", - " var entity = pm.response.json().entity;", - " var contentlet = entity.containers.SYSTEM_CONTAINER.contentlets[\"uuid-1\"][0];", - " pm.expect(contentlet.onNumberOfPages).to.eql(2, \"The 'onNumberOfPages' counter must be 2 at this point\");", - "});", - "", - "pm.test(\"The rendered section should contain data attribute 'data-dot-on-number-of-pages' for the contentlet object\", function() {", - " var entity = pm.response.json().entity;", - " var contentletData = entity.containers.SYSTEM_CONTAINER.rendered[\"uuid-1\"];", - " console.log(contentletData);", - " pm.expect(contentletData).includes(\"data-dot-on-number-of-pages\");", - "});", - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{serverURL}}/api/v1/page/render/{{secondPageUrl}}?language_id=1&mode=EDIT_MODE&host_id={{defaultSiteId}}", - "host": [ - "{{serverURL}}" - ], - "path": [ - "api", - "v1", - "page", - "render", - "{{secondPageUrl}}" - ], - "query": [ - { - "key": "language_id", - "value": "1" - }, - { - "key": "mode", - "value": "EDIT_MODE" - }, - { - "key": "host_id", - "value": "{{defaultSiteId}}" - } - ] - } - }, - "response": [] - } - ], - "description": "This Request Collection verifies that the \"onNumberOfPages\" property is added to the Page JSON response and calculated properly.\n\nThe \"onNumberOfPages\" provides the number of times that a given Contentlet is present in any HTML Page in dotCMS. This way, the Front-End Team can allow users to select whether they want to update that unique Contentlet, or if they want to (1) create a copy of it and (2) edit that new copy instead.", - "event": [ - { - "listen": "prerequest", - "script": { - "type": "text/javascript", - "exec": [ - "" - ] - } - }, - { - "listen": "test", - "script": { - "type": "text/javascript", - "exec": [ - "pm.test(\"HTTP Status code must be 200\", function () {", - " pm.response.to.have.status(200);", - "});", - "" - ] - } - } - ] - }, - { - "name": "Get Page Types", - "item": [ - { - "name": "Create new UrlMap Page", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "var jsonData = pm.response.json();", - "", - "pm.test(\"No errors\", function () {", - " ", - " var jsonData = pm.response.json();", - " pm.expect(jsonData.errors.length).to.eql(0);", - "});", - "", - "pm.collectionVariables.set(\"pageid\", jsonData.entity.identifier);", - "pm.collectionVariables.set(\"pagepath\", jsonData.entity.path);" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "PUT", - "header": [], - "body": { - "mode": "raw", - "raw": "{\n\t\n\t\"contentlet\": {\n\t\t\"contentType\":\"htmlpageasset\",\n \"title\":\"testPageCopy{{$randomBankAccount}}\",\n \"url\":\"testPageCopy{{$randomBankAccount}}\",\n \"hostFolder\":\"default\",\n \"template\":\"SYSTEM_TEMPLATE\",\n \"friendlyName\":\"testPageCopy{{$randomBankAccount}}\",\n \"cachettl\":0\n\t\t\n\t}\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{serverURL}}/api/v1/workflow/actions/default/fire/PUBLISH?indexPolicy=WAIT_FOR", - "host": [ - "{{serverURL}}" - ], - "path": [ - "api", - "v1", - "workflow", - "actions", - "default", - "fire", - "PUBLISH" - ], - "query": [ - { - "key": "indexPolicy", - "value": "WAIT_FOR" - } - ] - } - }, - "response": [] - }, - { - "name": "CreateNewTypeWithUrlMap", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "var jsonData = pm.response.json();", - "", - "pm.test(\"Check response\", function () {", - " pm.expect(jsonData.entity[0].description).to.eql(\"My Structure\");", - "});", - "", - "pm.test(\"Validate that the 'errors' array is empty\", function () {", - " // Check that the 'errors' array is defined and its length is 0", - " pm.expect(jsonData.errors).to.be.an('array').that.is.empty;", - "});", - "", - "", - "", - "", - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "POST", - "header": [], - "body": { - "mode": "raw", - "raw": "{\n\t\"clazz\": \"com.dotcms.contenttype.model.type.SimpleContentType\",\n \"detailPage\": \"{{pageid}}\",\n \"urlMapPattern\": \"/blog/wasabi/{urlTitle}\",\n\t\"description\": \"My Structure\",\n\t\"defaultType\": false,\n\t\"system\": false,\n\t\"folder\": \"SYSTEM_FOLDER\",\n\t\"name\": \"TestTypeUrlMap{{$randomBankAccount}}\",\n\t\"variable\": \"TestTypeUrlMap{{$randomBankAccount}}\",\n\t\"host\": \"SYSTEM_HOST\",\n\t\"fixed\": false,\n \"icon\": \"testIcon\",\n \"sortOrder\": 3,\n\t\"fields\": [\n\t\t{\n\t\t\t\"clazz\": \"com.dotcms.contenttype.model.field.TextField\",\n\t\t\t\"indexed\": true,\n\t\t\t\"dataType\": \"TEXT\",\n\t\t\t\"readOnly\": false,\n\t\t\t\"required\": true,\n\t\t\t\"searchable\": true,\n\t\t\t\"listed\": true,\n\t\t\t\"sortOrder\": 2,\n\t\t\t\"unique\": false,\n\t\t\t\"name\": \"Name\",\n\t\t\t\"variable\": \"name\",\n\t\t\t\"fixed\": true\n\t\t}\n\t],\n \"workflow\":[\"d61a59e1-a49c-46f2-a929-db2b4bfa88b2\"]\n}\n", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{serverURL}}/api/v1/contenttype", - "host": [ - "{{serverURL}}" - ], - "path": [ - "api", - "v1", - "contenttype" - ] - } - }, - "response": [] - }, - { - "name": "Create New Page Type", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "var jsonData = pm.response.json();", - "", - "pm.test(\"Check response\", function () {", - " pm.expect(jsonData.entity[0].baseType).to.eql(\"HTMLPAGE\");", - "});", - "", - "pm.test(\"Validate that the 'errors' array is empty\", function () {", - " // Check that the 'errors' array is defined and its length is 0", - " pm.expect(jsonData.errors).to.be.an('array').that.is.empty;", - "});", - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "POST", - "header": [], - "body": { - "mode": "raw", - "raw": "{\n \"defaultType\": false,\n \"icon\": null,\n \"fixed\": false,\n \"system\": false,\n \"clazz\": \"com.dotcms.contenttype.model.type.ImmutablePageContentType\",\n \"description\": \"\",\n \"host\": \"8a7d5e23-da1e-420a-b4f0-471e7da8ea2d\",\n \"folder\": \"SYSTEM_FOLDER\",\n \"name\": \"TestTypePage{{$randomBankAccount}}\",\n \"variable\": \"TestTypePage{{$randomBankAccount}}\"\n}\n", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{serverURL}}/api/v1/contenttype", - "host": [ - "{{serverURL}}" - ], - "path": [ - "api", - "v1", - "contenttype" - ] - } - }, - "response": [] - }, - { - "name": "Get Types", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "var jsonData = pm.response.json();", - "", - "pm.test(\"No errors\", function () {", - " ", - " var jsonData = pm.response.json();", - " pm.expect(jsonData.entity.length).to.greaterThan(2);", - "", - " const urlMapType = jsonData.entity.filter(item => item.variable.startsWith('TestTypeUrlMap'))", - " const pageType = jsonData.entity.filter(item => item.variable.startsWith('TestTypePage'))", - "", - " pm.expect(urlMapType).to.not.eql(null);", - " pm.expect(pageType).to.not.eql(null);", - "});", - "", - "" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "http://localhost:8080/api/v1/page/types", - "protocol": "http", - "host": [ - "localhost" - ], - "port": "8080", - "path": [ - "api", - "v1", - "page", - "types" - ] - } - }, - "response": [] - }, - { - "name": "Get Types Filtered", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "var jsonData = pm.response.json();", - "", - "pm.test(\"No errors\", function () {", - " ", - " var jsonData = pm.response.json();", - " pm.expect(jsonData.entity.length).to.greaterThan(1);", - "", - "});", - "", - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "http://localhost:8080/api/v1/page/types?filter=test", - "protocol": "http", - "host": [ - "localhost" - ], - "port": "8080", - "path": [ - "api", - "v1", - "page", - "types" - ], - "query": [ - { - "key": "filter", - "value": "test" - } - ] - } - }, - "response": [] - } - ], - "event": [ - { - "listen": "prerequest", - "script": { - "type": "text/javascript", - "packages": {}, - "exec": [ - "" - ] - } - }, - { - "listen": "test", - "script": { - "type": "text/javascript", - "packages": {}, - "exec": [ - "pm.test(\"Status code is 200\", function () {", - " pm.response.to.have.status(200);", - "});" - ] - } - } - ] - }, - { - "name": "Permissions", - "item": [ - { - "name": "CallLogout", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Check response\", function () {", - " pm.expect(pm.response.text()).to.include(\"Logout successfully\");", - "});" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{serverURL}}/api/v1/logout", - "host": [ - "{{serverURL}}" - ], - "path": [ - "api", - "v1", - "logout" - ] - } - }, - "response": [] - }, - { - "name": "Create Test Page Permission", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Test Page created successfully\", function () {", - " var jsonData = pm.response.json();", - " pm.expect(jsonData.errors.length).to.eql(0);", - " pm.collectionVariables.set(\"pageIdentifier\", jsonData.entity.identifier);", - " pm.collectionVariables.set(\"host_id\", jsonData.entity.host);", - "});" - ], - "type": "text/javascript", - "packages": {} - } - }, - { - "listen": "prerequest", - "script": { - "exec": [ - "const pagePost = Math.floor(Math.random()*100+1)", - "pm.globals.set(\"pagePost\", pagePost)" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "PUT", - "header": [], - "body": { - "mode": "raw", - "raw": "{\n\t\n\t\"contentlet\": {\n\t\t\"contentType\":\"htmlpageasset\",\n \"title\":\"testPagePermission{{pagePost}}\",\n \"url\":\"testPagePermission{{pagePost}}\",\n \"hostFolder\":\"default\",\n \"template\":\"SYSTEM_TEMPLATE\",\n \"friendlyName\":\"testPagePermission{{pagePost}}\",\n \"cachettl\":0\n\t\t\n\t}\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{serverURL}}/api/v1/workflow/actions/default/fire/PUBLISH?indexPolicy=WAIT_FOR", - "host": [ - "{{serverURL}}" - ], - "path": [ - "api", - "v1", - "workflow", - "actions", - "default", - "fire", - "PUBLISH" - ], - "query": [ - { - "key": "indexPolicy", - "value": "WAIT_FOR" - } - ] - } - }, - "response": [] - }, - { - "name": "CheckPermission", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Test Page created successfully\", function () {", - " var jsonData = pm.response.json();", - " pm.expect(jsonData.errors.length).to.eql(0);", - " pm.expect(jsonData.entity).to.eql(true);", - "});" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "POST", - "header": [], - "body": { - "mode": "raw", - "raw": "{\n \"url\":\"/testPagePermission{{pagePost}}\",\n \"type\":\"READ\",\n \"language_id\":\"1\",\n \"host_id\":\"{{host_id}}\"\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{serverURL}}/api/v1/page/_check-permission", - "host": [ - "{{serverURL}}" - ], - "path": [ - "api", - "v1", - "page", - "_check-permission" - ] - } - }, - "response": [] - } - ], - "event": [ - { - "listen": "prerequest", - "script": { - "type": "text/javascript", - "packages": {}, - "exec": [ - "" - ] - } - }, - { - "listen": "test", - "script": { - "type": "text/javascript", - "packages": {}, - "exec": [ - "pm.test(\"HTTP Status code must be 200\", function () {", - " pm.response.to.have.status(200);", - "});" - ] - } - } - ] - }, - { - "name": "Getting Available Workflow Actions In Page", - "item": [ - { - "name": "Find the Default Site ID", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Saving the Default Site's ID\", function () {", - " var entity = pm.response.json().entity;", - " pm.collectionVariables.set(\"host_id\", entity.identifier);", - "});", - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "POST", - "header": [], - "body": { - "mode": "raw", - "raw": "{\n \"siteName\": \"default\"\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{serverURL}}/api/v1/site/_byname", - "host": [ - "{{serverURL}}" - ], - "path": [ - "api", - "v1", - "site", - "_byname" - ] - } - }, - "response": [] - }, - { - "name": "Switch To Default Site", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Check that the Site has indeed switched to the 'default' Site\", function () {", - " var jsonData = pm.response.json();", - " pm.expect(jsonData.entity.hostSwitched).to.eql(true);", - "});", - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "PUT", - "header": [], - "url": { - "raw": "{{serverURL}}/api/v1/site/switch/{{host_id}}", - "host": [ - "{{serverURL}}" - ], - "path": [ - "api", - "v1", - "site", - "switch", - "{{host_id}}" - ] - } - }, - "response": [] - }, - { - "name": "Create a Test Page", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Check that the Test Page was created successfully\", function () {", - " var jsonData = pm.response.json();", - " pm.expect(jsonData.errors.length).to.eql(0);", - " pm.collectionVariables.set(\"pageIdentifier\", jsonData.entity.identifier);", - "});", - "" - ], - "type": "text/javascript", - "packages": {} - } - }, - { - "listen": "prerequest", - "script": { - "exec": [ - "const pagePost = Math.floor(Math.random()*100+1)", - "pm.collectionVariables.set(\"pagePost2\", pagePost);" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "PUT", - "header": [], - "body": { - "mode": "raw", - "raw": "{\n \"contentlet\": {\n \"contentType\": \"htmlpageasset\",\n \"languageId\": 1,\n \"title\": \"testPageCopy{{pagePost2}}\",\n \"url\": \"testPageCopy{{pagePost2}}\",\n \"hostFolder\": \"{{host_id}}\",\n \"template\": \"SYSTEM_TEMPLATE\",\n \"friendlyName\": \"testPageCopy{{pagePost2}}\",\n \"cachettl\": 0,\n \"workflow\": [\n \"d61a59e1-a49c-46f2-a929-db2b4bfa88b2\"\n ]\n }\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{serverURL}}/api/v1/workflow/actions/default/fire/PUBLISH?indexPolicy=WAIT_FOR", - "host": [ - "{{serverURL}}" - ], - "path": [ - "api", - "v1", - "workflow", - "actions", - "default", - "fire", - "PUBLISH" - ], - "query": [ - { - "key": "indexPolicy", - "value": "WAIT_FOR" - } - ] - } - }, - "response": [] - }, - { - "name": "Get Workflow Actions", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Check that Workflow Actions for the test HTML Page are available\", function () {", - " var jsonData = pm.response.json();", - " pm.expect(jsonData.errors.length).to.eql(0);", - " pm.expect(jsonData.entity.actions.length).to.greaterThan(0);", - " pm.expect(jsonData.entity.page.pageUrl).to.contains('testPageCopy');", - "});", - "" - ], - "type": "text/javascript", - "packages": {} - } - }, - { - "listen": "prerequest", - "script": { - "exec": [ - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "POST", - "header": [], - "body": { - "mode": "raw", - "raw": "{\n \"host_id\":\"{{host_id}}\",\n \"url\":\"/testPageCopy{{pagePost2}}\",\n \"language_id\": \"1\"\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "http://localhost:8080/api/v1/page/actions", - "protocol": "http", - "host": [ - "localhost" - ], - "port": "8080", - "path": [ - "api", - "v1", - "page", - "actions" - ] - } - }, - "response": [] - } - ], - "description": "Retrieves the list of Workflow Actions that are availbale for a given HTML Page. These actions are basically the `Save`, `Publish`, `Archive`, or any other buttons you see in the Content Edit modal when you're creating or editing an HTML Page in the back-end.", - "event": [ - { - "listen": "prerequest", - "script": { - "type": "text/javascript", - "packages": {}, - "exec": [ - "" - ] - } - }, - { - "listen": "test", - "script": { - "type": "text/javascript", - "packages": {}, - "exec": [ - "pm.test(\"HTTP Status code must be 200\", function () {", - " pm.response.to.have.status(200);", - "});", - "" - ] - } - } - ] - }, - { - "name": "Check Languages for a Page", - "item": [ - { - "name": "Create Test Page in English", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Test Page created successfully\", function () {", - " var jsonData = pm.response.json();", - " pm.expect(jsonData.errors.length).to.eql(0);", - " pm.collectionVariables.set(\"pageIdentifier\", jsonData.entity.identifier);", - "});" - ], - "type": "text/javascript", - "packages": {} - } - }, - { - "listen": "prerequest", - "script": { - "exec": [ - "const time = new Date().getTime();", - "pm.collectionVariables.set(\"testPageTitle\", \"My Test Page \" + time);", - "pm.collectionVariables.set(\"testPageUrl\", \"my-test-page-\" + time);" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "PUT", - "header": [], - "body": { - "mode": "raw", - "raw": "{\n \"contentlet\": {\n \"contentType\": \"htmlpageasset\",\n \"title\": \"{{testPageTitle}}\",\n \"url\": \"{{testPageUrl}}\",\n \"hostFolder\": \"default\",\n \"template\": \"SYSTEM_TEMPLATE\",\n \"friendlyName\": \"{{testPageTitle}}\",\n \"cachettl\": 0\n }\n}\n", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{serverURL}}/api/v1/workflow/actions/default/fire/PUBLISH?indexPolicy=WAIT_FOR", - "host": [ - "{{serverURL}}" - ], - "path": [ - "api", - "v1", - "workflow", - "actions", - "default", - "fire", - "PUBLISH" - ], - "query": [ - { - "key": "indexPolicy", - "value": "WAIT_FOR" - } - ] - } - }, - "response": [] - }, - { - "name": "Check page translation only in English", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Check that the test HTML Page is available in English, no matter how many languages there are\", function () {", - " const entity = pm.response.json().entity;", - " var isTranslated = false;", - " entity.forEach(function(lang) {", - " if (1 == lang.id && lang.translated) {", - " isTranslated = true;", - " }", - " });", - " pm.expect(isTranslated).to.be.equal(true, 'The test page must be available in English');", - "});", - "" - ], - "type": "text/javascript", - "packages": {} - } - }, - { - "listen": "prerequest", - "script": { - "exec": [ - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{serverURL}}/api/v1/page/{{pageIdentifier}}/languages", - "host": [ - "{{serverURL}}" - ], - "path": [ - "api", - "v1", - "page", - "{{pageIdentifier}}", - "languages" - ] - } - }, - "response": [] - } - ], - "description": "These requests are aimed to test the REST Endpoint that takes a Page ID, returns all Languages in the current instance and, for each of them, includes an additional attribute that indicates whether such a page is available in that specific language or not.", - "event": [ - { - "listen": "prerequest", - "script": { - "type": "text/javascript", - "packages": {}, - "exec": [ - "" - ] - } - }, - { - "listen": "test", - "script": { - "type": "text/javascript", - "packages": {}, - "exec": [ - "pm.test(\"HTTP Status code must be 200\", function () {", - " pm.response.to.have.status(200);", - "});" - ] - } - } - ] - }, - { - "name": "Checking JSON Attributes", - "item": [ - { - "name": "Checking Page Audit Attributes", - "item": [ - { - "name": "Retrieving HTML Page Data", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Checking that audit properties are present\", function () {", - " var entity = pm.response.json().entity.page;", - " ", - " pm.expect(entity.creationDate).to.not.equal(undefined, \"The 'creationDate' attribute must be present\");", - " pm.expect(entity.owner).to.not.equal(undefined, \"The 'owner' attribute must be present\");", - " pm.expect(entity.ownerName).to.not.equal(undefined, \"The 'ownerName' attribute must be present\");", - " pm.expect(entity.modDate).to.not.equal(undefined, \"The 'modDate' attribute must be present\");", - " pm.expect(entity.modUser).to.not.equal(undefined, \"The 'modUser' attribute must be present\");", - " pm.expect(entity.modUserName).to.not.equal(undefined, \"The 'modUserName' attribute must be present\");", - " pm.expect(entity.publishDate).to.not.equal(undefined, \"The 'publishDate' attribute must be present\");", - " pm.expect(entity.publishUser).to.not.equal(undefined, \"The 'publishUser' attribute must be present\");", - " pm.expect(entity.publishUserName).to.not.equal(undefined, \"The 'publishUserName' attribute must be present\");", - "});", - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{serverURL}}/api/v1/page/json/destinations/costa-rica", - "host": [ - "{{serverURL}}" - ], - "path": [ - "api", - "v1", - "page", - "json", - "destinations", - "costa-rica" - ] - }, - "description": "http://localhost:8080/api/v1/page/json/{page-url}" - }, - "response": [] - } - ], - "event": [ - { - "listen": "prerequest", - "script": { - "type": "text/javascript", - "packages": {}, - "exec": [ - "" - ] - } - }, - { - "listen": "test", - "script": { - "type": "text/javascript", - "packages": {}, - "exec": [ - "pm.test(\"HTTP Status code must be 200\", function () {", - " pm.response.to.have.status(200);", - "});", - "" - ] - } - } - ] - } - ], - "event": [ - { - "listen": "prerequest", - "script": { - "type": "text/javascript", - "packages": {}, - "exec": [ - "" - ] - } - }, - { - "listen": "test", - "script": { - "type": "text/javascript", - "packages": {}, - "exec": [ - "" - ] - } - } - ] - }, - { - "name": "Moving layout not impact Contentlet position BUG", - "item": [ - { - "name": "Create a Content Type", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "var jsonData = pm.response.json();", - "", - "", - "pm.test(\"Status code should be ok 200\", function () {", - " pm.response.to.have.status(200);", - "});", - "", - "pm.collectionVariables.set(\"contentTypeIdMovingLayoutBUG\", jsonData.entity[0].id);", - "", - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{jwt}}", - "type": "string" - } - ] - }, - "method": "POST", - "header": [], - "body": { - "mode": "raw", - "raw": "{\n \"defaultType\":false,\n \"icon\":null,\n \"fixed\":false,\n \"system\":false,\n \"clazz\":\"com.dotcms.contenttype.model.type.ImmutableSimpleContentType\",\n \"description\":\"\",\n \"host\":\"8a7d5e23-da1e-420a-b4f0-471e7da8ea2d\",\n \"folder\":\"SYSTEM_FOLDER\",\n \"name\":\"CT1 Moving Layout BUG\",\n \"systemActionMappings\":{\"NEW\":\"\"},\n \"workflow\":[\"d61a59e1-a49c-46f2-a929-db2b4bfa88b2\"]\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{serverURL}}/api/v1/contenttype", - "host": [ - "{{serverURL}}" - ], - "path": [ - "api", - "v1", - "contenttype" - ] - } - }, - "response": [] - }, - { - "name": "Add Field to Content Type Copy", - "request": { - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{jwt}}", - "type": "string" - } - ] - }, - "method": "PUT", - "header": [], - "body": { - "mode": "raw", - "raw": "{\n \"layout\":[\n {\"divider\":{\n \"clazz\":\"com.dotcms.contenttype.model.field.ImmutableRowField\",\n \"contentTypeId\":\"{{contentTypeIdMovingLayoutBUG}}\",\n \"dataType\":\"SYSTEM\",\n \"fieldContentTypeProperties\":[],\n \"fieldType\":\"Row\",\n \"fieldTypeLabel\":\"Row\",\n \"fieldVariables\":[],\n \"fixed\":false,\n \"iDate\":1667572217000,\n \"indexed\":false,\n \"listed\":false,\n \"modDate\":1667572217000,\n \"name\":\"Row Field\",\n \"readOnly\":false,\n \"required\":false,\n \"searchable\":false,\n \"sortOrder\":-1,\n \"unique\":false},\n \"columns\":[\n {\n \"columnDivider\":{\n \"clazz\":\"com.dotcms.contenttype.model.field.ImmutableColumnField\",\n \"dataType\":\"SYSTEM\",\n \"fieldContentTypeProperties\":[],\n \"fieldType\":\"Column\",\n \"fieldTypeLabel\":\"Column\",\n \"fieldVariables\":[],\n \"fixed\":false,\n \"iDate\":1667572217000,\n \"indexed\":false,\n \"listed\":false,\n \"modDate\":1667572217000,\n \"name\":\"Column Field\",\n \"readOnly\":false,\n \"required\":false,\n \"searchable\":false,\n \"sortOrder\":-1,\n \"unique\":false\n },\n \"fields\":[\n {\n \"clazz\":\"com.dotcms.contenttype.model.field.ImmutableTextField\",\n \"name\":\"title\",\n \"dataType\":\"TEXT\",\n \"regexCheck\":\"\",\n \"defaultValue\":\"\",\n \"hint\":\"\",\n \"required\":false,\n \"searchable\":false,\n \"indexed\":false,\n \"listed\":false,\n \"unique\":false,\n \"id\":null\n }\n ]\n }\n ]\n }\n ]\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{serverURL}}/api/v3/contenttype/{{contentTypeIdMovingLayoutBUG}}/fields/move", - "host": [ - "{{serverURL}}" - ], - "path": [ - "api", - "v3", - "contenttype", - "{{contentTypeIdMovingLayoutBUG}}", - "fields", - "move" - ] - } - }, - "response": [] - }, - { - "name": "Create Container C1", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "var jsonData = pm.response.json();", - "", - "", - "pm.test(\"Status code should be ok 200\", function () {", - " pm.response.to.have.status(200);", - "});", - "", - "pm.collectionVariables.set(\"containerIdMovingLayoutBUG\", jsonData.entity.identifier);", - "", - "", - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{jwt}}", - "type": "string" - } - ] - }, - "method": "POST", - "header": [], - "body": { - "mode": "raw", - "raw": "{\n \"title\": \"C1 Moving Layout BUG\",\n \"friendlyName\": \"cContainer used on the test for Moving Layout BUF\",\n \"maxContentlets\": 1,\n \"containerStructures\": [{\n \"structureId\": \"{{contentTypeIdMovingLayoutBUG}}\",\n \"maxContentlets\": 1,\n \"code\": \"$!{dotContentMap.title}\"\n }]\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{serverURL}}/api/v1/containers", - "host": [ - "{{serverURL}}" - ], - "path": [ - "api", - "v1", - "containers" - ] - } - }, - "response": [] - }, - { - "name": "Create Template T1", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "var jsonData = pm.response.json();", - "", - "", - "pm.test(\"Status code should be ok 200\", function () {", - " pm.response.to.have.status(200);", - "});", - "", - "pm.collectionVariables.set(\"tamplateIdMovingLayoutBUG\", jsonData.entity.identifier);", - "", - "", - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{jwt}}", - "type": "string" - } - ] - }, - "method": "POST", - "header": [], - "body": { - "mode": "raw", - "raw": "{\t\t\n \"layout\":{\n \"body\":{\n \"rows\":[\n {\n \"styleClass\":\"\",\n \"columns\":[\n {\n \"styleClass\":\"\",\n \"leftOffset\":1,\n \"width\":12,\n \"containers\":[\n {\"identifier\":\"{{containerIdMovingLayoutBUG}}\"}\n ]\n }\n ]\n },\n {\n \"styleClass\":\"\",\n \"columns\":[\n {\n \"styleClass\":\"\",\n \"leftOffset\":1,\n \"width\":12,\n \"containers\":[\n {\"identifier\":\"{{containerIdMovingLayoutBUG}}\"}\n ]\n }\n ]\n }\n ]\n } \n },\n \"friendlyName\": \"\",\n \"title\": \"T1 MovingLayoutBUG\",\n \"theme\": \"SYSTEM_THEME\"\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{serverURL}}/api/v1/templates", - "host": [ - "{{serverURL}}" - ], - "path": [ - "api", - "v1", - "templates" - ] - } - }, - "response": [] - }, - { - "name": "Create page P1", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "var jsonData = pm.response.json();", - "", - "", - "pm.test(\"Status code should be ok 200\", function () {", - " pm.response.to.have.status(200);", - "});", - "", - "pm.collectionVariables.set(\"p1IdMovingLayoutBUG\", jsonData.entity.identifier);", - "", - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{jwt}}", - "type": "string" - } - ] - }, - "method": "PUT", - "header": [], - "body": { - "mode": "raw", - "raw": "{ \n \"contentlet\" : {\n \"title\" : \"P1 MovingLayoutBUG\",\n \"languageId\" : 1,\n \"stInode\": \"c541abb1-69b3-4bc5-8430-5e09e5239cc8\",\n \"url\": \"P1_MovingLayoutBUG\",\n \"hostFolder\": \"8a7d5e23-da1e-420a-b4f0-471e7da8ea2d\",\n \"template\": \"{{tamplateIdMovingLayoutBUG}}\",\n \"cachettl\": 0,\n \"friendlyName\": \"friendlyName\"\n }\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{serverURL}}/api/v1/workflow/actions/default/fire/PUBLISH", - "host": [ - "{{serverURL}}" - ], - "path": [ - "api", - "v1", - "workflow", - "actions", - "default", - "fire", - "PUBLISH" - ] - } - }, - "response": [] - }, - { - "name": "Create contentlet A", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "var jsonData = pm.response.json();", - "", - "", - "pm.test(\"Status code should be ok 200\", function () {", - " pm.response.to.have.status(200);", - "});", - "", - "pm.collectionVariables.set(\"contentAId\", jsonData.entity.identifier);", - "", - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{jwt}}", - "type": "string" - } - ] - }, - "method": "PUT", - "header": [], - "body": { - "mode": "raw", - "raw": "{ \n \"contentlet\" : {\n \"title\" : \"A\",\n \"languageId\" : 1,\n \"stInode\": \"{{contentTypeIdMovingLayoutBUG}}\"\n }\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{serverURL}}/api/v1/workflow/actions/default/fire/PUBLISH", - "host": [ - "{{serverURL}}" - ], - "path": [ - "api", - "v1", - "workflow", - "actions", - "default", - "fire", - "PUBLISH" - ] - } - }, - "response": [] - }, - { - "name": "Create contentlet B", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "var jsonData = pm.response.json();", - "", - "", - "pm.test(\"Status code should be ok 200\", function () {", - " pm.response.to.have.status(200);", - "});", - "", - "pm.collectionVariables.set(\"contentBId\", jsonData.entity.identifier);", - "", - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{jwt}}", - "type": "string" - } - ] - }, - "method": "PUT", - "header": [], - "body": { - "mode": "raw", - "raw": "{ \n \"contentlet\" : {\n \"title\" : \"B\",\n \"languageId\" : 1,\n \"stInode\": \"{{contentTypeIdMovingLayoutBUG}}\"\n }\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{serverURL}}/api/v1/workflow/actions/default/fire/PUBLISH", - "host": [ - "{{serverURL}}" - ], - "path": [ - "api", - "v1", - "workflow", - "actions", - "default", - "fire", - "PUBLISH" - ] - } - }, - "response": [] - }, - { - "name": "Add A and B into P1", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Variants with correct weight\", function () {", - " pm.response.to.have.status(200);", - "});" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{jwt}}", - "type": "string" - } - ] - }, - "method": "POST", - "header": [], - "body": { - "mode": "raw", - "raw": "[\n {\n \"contentletsId\": [\"{{contentAId}}\"],\n \"identifier\": \"{{containerIdMovingLayoutBUG}}\",\n \"uuid\": \"1\" \n },\n {\n \"contentletsId\": [\"{{contentBId}}\"],\n \"identifier\": \"{{containerIdMovingLayoutBUG}}\",\n \"uuid\": \"2\" \n } \n]\n", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{serverURL}}/api/v1/page/{{p1IdMovingLayoutBUG}}/content", - "host": [ - "{{serverURL}}" - ], - "path": [ - "api", - "v1", - "page", - "{{p1IdMovingLayoutBUG}}", - "content" - ] - } - }, - "response": [] - }, - { - "name": "Create page P2", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "var jsonData = pm.response.json();", - "", - "", - "pm.test(\"Status code should be ok 200\", function () {", - " pm.response.to.have.status(200);", - "});", - "", - "pm.collectionVariables.set(\"p2IdMovingLayoutBUG\", jsonData.entity.identifier);", - "", - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{jwt}}", - "type": "string" - } - ] - }, - "method": "PUT", - "header": [], - "body": { - "mode": "raw", - "raw": "{ \n \"contentlet\" : {\n \"title\" : \"P2 MovingLayoutBUG\",\n \"languageId\" : 1,\n \"stInode\": \"c541abb1-69b3-4bc5-8430-5e09e5239cc8\",\n \"url\": \"P2_MovingLayoutBUG\",\n \"hostFolder\": \"8a7d5e23-da1e-420a-b4f0-471e7da8ea2d\",\n \"template\": \"{{tamplateIdMovingLayoutBUG}}\",\n \"cachettl\": 0,\n \"friendlyName\": \"friendlyName\"\n }\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{serverURL}}/api/v1/workflow/actions/default/fire/PUBLISH", - "host": [ - "{{serverURL}}" - ], - "path": [ - "api", - "v1", - "workflow", - "actions", - "default", - "fire", - "PUBLISH" - ] - } - }, - "response": [] - }, - { - "name": "Add A and B into P2", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Variants with correct weight\", function () {", - " pm.response.to.have.status(200);", - "});" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{jwt}}", - "type": "string" - } - ] - }, - "method": "POST", - "header": [], - "body": { - "mode": "raw", - "raw": "[\n {\n \"contentletsId\": [\"{{contentAId}}\"],\n \"identifier\": \"{{containerIdMovingLayoutBUG}}\",\n \"uuid\": \"1\" \n },\n {\n \"contentletsId\": [\"{{contentBId}}\"],\n \"identifier\": \"{{containerIdMovingLayoutBUG}}\",\n \"uuid\": \"2\" \n } \n]\n", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{serverURL}}/api/v1/page/{{p2IdMovingLayoutBUG}}/content", - "host": [ - "{{serverURL}}" - ], - "path": [ - "api", - "v1", - "page", - "{{p2IdMovingLayoutBUG}}", - "content" - ] - } - }, - "response": [] - }, - { - "name": "Move Containers in P1", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Variants with correct weight\", function () {", - " pm.response.to.have.status(200);", - "});" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{jwt}}", - "type": "string" - } - ] - }, - "method": "POST", - "header": [], - "body": { - "mode": "raw", - "raw": "{\n \"layout\": {\n \"width\": \"\",\n \"title\": \"t1-movinglayoutbug\",\n \"header\": false,\n \"footer\": false,\n \"body\": {\n \"rows\": [\n {\n \"columns\": [\n {\n \"containers\": [\n {\n \"identifier\": \"{{containerIdMovingLayoutBUG}}\",\n \"uuid\": \"2\"\n }\n ],\n \"leftOffset\": 1,\n \"width\": 12,\n \"styleClass\": \"\"\n }\n ],\n \"styleClass\": null\n },\n {\n \"columns\": [\n {\n \"containers\": [\n {\n \"identifier\": \"{{containerIdMovingLayoutBUG}}\",\n \"uuid\": \"1\"\n }\n ],\n \"leftOffset\": 1,\n \"width\": 12,\n \"styleClass\": \"\"\n }\n ],\n \"styleClass\": null\n }\n ]\n },\n \"sidebar\": null\n },\n \"title\": null\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{serverURL}}/api/v1/page/{{p1IdMovingLayoutBUG}}/layout", - "host": [ - "{{serverURL}}" - ], - "path": [ - "api", - "v1", - "page", - "{{p1IdMovingLayoutBUG}}", - "layout" - ] - } - }, - "response": [] - }, - { - "name": "Render P1", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "var jsonData = pm.response.json();", - "", - "", - "pm.test(\"Status code should be ok 200\", function () {", - " pm.response.to.have.status(200);", - "});", - "", - "var containerId = pm.collectionVariables.get(\"containerIdMovingLayoutBUG\");", - "var contentlets = jsonData.entity.containers[containerId].contentlets;", - "", - "pm.expect('B').to.equal(contentlets['uuid-1'][0].title);", - "pm.expect('A').to.equal(contentlets['uuid-2'][0].title);", - "", - "", - "" - ], - "type": "text/javascript", - "packages": {} - } - }, - { - "listen": "prerequest", - "script": { - "exec": [ - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{jwt}}", - "type": "string" - } - ] - }, - "method": "GET", - "header": [], - "url": { - "raw": "{{serverURL}}/api/v1/page/render/P1_MovingLayoutBUG?host_id=8a7d5e23-da1e-420a-b4f0-471e7da8ea2d&language_id=1&mode=PREVIEW_MODE", - "host": [ - "{{serverURL}}" - ], - "path": [ - "api", - "v1", - "page", - "render", - "P1_MovingLayoutBUG" - ], - "query": [ - { - "key": "host_id", - "value": "8a7d5e23-da1e-420a-b4f0-471e7da8ea2d" - }, - { - "key": "language_id", - "value": "1" - }, - { - "key": "mode", - "value": "PREVIEW_MODE" - } - ] - } - }, - "response": [] - }, - { - "name": "Render P2", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "var jsonData = pm.response.json();", - "", - "", - "pm.test(\"Status code should be ok 200\", function () {", - " pm.response.to.have.status(200);", - "});", - "", - "var containerId = pm.collectionVariables.get(\"containerIdMovingLayoutBUG\");", - "var contentlets = jsonData.entity.containers[containerId].contentlets;", - "", - "pm.expect('A').to.equal(contentlets['uuid-1'][0].title);", - "pm.expect('B').to.equal(contentlets['uuid-2'][0].title);", - "", - "", - "" - ], - "type": "text/javascript", - "packages": {} - } - }, - { - "listen": "prerequest", - "script": { - "exec": [ - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{jwt}}", - "type": "string" - } - ] - }, - "method": "GET", - "header": [], - "url": { - "raw": "{{serverURL}}/api/v1/page/render/P2_MovingLayoutBUG?host_id=8a7d5e23-da1e-420a-b4f0-471e7da8ea2d&language_id=1&mode=PREVIEW_MODE", - "host": [ - "{{serverURL}}" - ], - "path": [ - "api", - "v1", - "page", - "render", - "P2_MovingLayoutBUG" - ], - "query": [ - { - "key": "host_id", - "value": "8a7d5e23-da1e-420a-b4f0-471e7da8ea2d" - }, - { - "key": "language_id", - "value": "1" - }, - { - "key": "mode", - "value": "PREVIEW_MODE" - } - ] - } - }, - "response": [] - } - ] - }, - { - "name": "Put Create Page With CacheTTL 100", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code should be 200\", function () {", - " pm.response.to.have.status(200);", - "});", - "", - "var jsonData = pm.response.json();", - "", - "pm.test(\"Identifier must contains path\", function () {", - " pm.expect(jsonData.entity.template).eq(\"SYSTEM_TEMPLATE\");", - "});" - ], - "type": "text/javascript" - } - } - ], - "request": { - "auth": { - "type": "basic", - "basic": [ - { - "key": "password", - "value": "admin", - "type": "string" - }, - { - "key": "username", - "value": "admin@dotcms.com", - "type": "string" - }, - { - "key": "saveHelperData", - "type": "any" - }, - { - "key": "showPassword", - "value": false, - "type": "boolean" - } - ] - }, - "method": "PUT", - "header": [], - "body": { - "mode": "raw", - "raw": "{\n\t\"contentlet\":{\n\t\t\"stName\": \"htmlpageasset\",\n\t\t\"title\": \"PageAsset SystemTemplate\",\n \"url\": \"pageassetsystemtemplate\",\n \"friendlyName\":\"pageassetsystemtemplate\",\n \"template\": \"SYSTEM_TEMPLATE\",\n \"sortOrder\": \"0\",\n \"cachettl\": \"100\",\n \"hostFolder\":\"48190c8c-42c4-46af-8d1a-0cd5db894797\"\n\t}\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{serverURL}}/api/v1/workflow/actions/default/fire/PUBLISH", - "host": [ - "{{serverURL}}" - ], - "path": [ - "api", - "v1", - "workflow", - "actions", - "default", - "fire", - "PUBLISH" - ] - } - }, - "response": [] - }, - { - "name": "invalidateSession", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 200\", function () {", - " pm.response.to.have.status(200);", - "});", - "", - "pm.test(\"Body matches string\", function () {", - " pm.expect(pm.response.text()).to.include(\"Logout successfully\");", - "});", - "", - "pm.environment.unset('jwt');", - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{serverURL}}/api/v1/logout", - "host": [ - "{{serverURL}}" - ], - "path": [ - "api", - "v1", - "logout" - ] - } - }, - "response": [] - }, - { - "name": "Check Cache-Control", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Cache-Control is correct\", function () {", - " pm.response.to.be.header('Cache-Control','max-age=100');", - "});" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{serverURL}}/pageassetsystemtemplate", - "host": [ - "{{serverURL}}" - ], - "path": [ - "pageassetsystemtemplate" - ] - } - }, - "response": [] - } - ], - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{jwt}}", - "type": "string" - } - ] - }, - "event": [ - { - "listen": "prerequest", - "script": { - "type": "text/javascript", - "exec": [ - " const serverURL = pm.environment.get('serverURL'); // Get the server URL from the environment variable", - " const apiUrl = `${serverURL}/api/v1/apitoken`; // Construct the full API URL", - "", - "// If we are unable to get the JWT we need to generate a new one", - " if (!pm.environment.get('jwt')) {", - " const username = pm.environment.get(\"user\");", - " const password = pm.environment.get(\"password\");", - " const basicAuth = Buffer.from(`${username}:${password}`).toString('base64');", - "", - "", - " const requestOptions = {", - " url: apiUrl,", - " method: \"POST\",", - " header: {", - " \"accept\": \"*/*\",", - " \"content-type\": \"application/json\",", - " \"Authorization\": `Basic ${basicAuth}`", - " },", - " body: {", - " mode: \"raw\",", - " raw: JSON.stringify({", - " \"expirationSeconds\": 7200,", - " \"userId\": \"dotcms.org.1\",", - " \"network\": \"0.0.0.0/0\",", - " \"claims\": {\"label\": \"postman-tests\"}", - " })", - " }", - " };", - "", - "", - " pm.sendRequest(requestOptions, function (err, response) {", - " if (err) {", - " console.log(err);", - " } else {", - " const jwt = response.json().entity.jwt;", - " pm.environment.set('jwt', jwt);", - " console.log(jwt);", - " }", - " });", - " }" - ] - } - }, - { - "listen": "test", - "script": { - "type": "text/javascript", - "exec": [ - "" - ] - } - } - ], - "variable": [ - { - "key": "contentTypeIdMovingLayoutBUG", - "value": "" - }, - { - "key": "spanish_content_container_id", - "value": "" - }, - { - "key": "containerIdMovingLayoutBUG", - "value": "" - }, - { - "key": "tamplateIdMovingLayoutBUG", - "value": "" - }, - { - "key": "p1IdMovingLayoutBUG", - "value": "" - }, - { - "key": "contentAId", - "value": "" - }, - { - "key": "contentBId", - "value": "" - }, - { - "key": "p2IdMovingLayoutBUG", - "value": "" - } - ] -} + "info": { + "_postman_id": "7a488c87-858e-4edd-8722-c38e4071afdf", + "name": "Page API - [api/v1/page]", + "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json", + "_exporter_id": "36473486" + }, + "item": [ + { + "name": "CreateTestContext", + "item": [ + { + "name": "Delete Image ContentType", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code should be ok 200\", function () {", + " pm.response.to.have.status(200);", + "});" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "{{serverURL}}/api/v1/contenttype/id/2c46b6586c38852ac08a824a303ced80", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "contenttype", + "id", + "2c46b6586c38852ac08a824a303ced80" + ] + }, + "description": "Given a content type ID.\nExpect that code is 200.\nExpect content type is deleted successfully." + }, + "response": [] + }, + { + "name": "Delete Video ContentType", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code should be ok 200\", function () {", + " pm.response.to.have.status(200);", + "});" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "{{serverURL}}/api/v1/contenttype/id/c77450b834901a20c8193ef9d561ee5b", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "contenttype", + "id", + "c77450b834901a20c8193ef9d561ee5b" + ] + }, + "description": "Given a content type ID.\nExpect that code is 200.\nExpect content type is deleted successfully." + }, + "response": [] + }, + { + "name": "pre_ImportBundleWithContext", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Bundle uploaded sucessfully\", function () {", + " pm.response.to.have.status(200);", + "", + " var jsonData = pm.response.json();", + " console.log(jsonData);", + "", + " pm.expect(jsonData[\"bundleName\"]).to.eql(\"assets.tar.gz\");", + " pm.expect(jsonData[\"status\"]).to.eql(\"SUCCESS\");", + "});" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/octet-stream" + }, + { + "key": "Content-Disposition", + "value": "attachment" + } + ], + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "file", + "type": "file", + "src": "resources/GraphQL/assets.tar.gz" + } + ] + }, + "url": { + "raw": "{{serverURL}}/api/bundle/sync", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "bundle", + "sync" + ], + "query": [ + { + "key": "AUTH_TOKEN", + "value": "", + "disabled": true + } + ] + }, + "description": "Imports a Bundle that includes:\n* HTMLPage /blog/index\n* HTMLPage /blog/destinations/costa-rica\n* Contentlet [Blog] Ecotourism in Costa Rica\n* Blog Detail Page /blog/blog-detail" + }, + "response": [] + } + ], + "description": "Imports a Bundle that includes:\n* HTMLPage /blog/index\n* HTMLPage /blog/destinations/costa-rica\n* Contentlet [Blog] Ecotourism in Costa Rica\n* Blog Detail Page /blog/blog-detail", + "event": [ + { + "listen": "prerequest", + "script": { + "type": "text/javascript", + "exec": [ + "" + ] + } + }, + { + "listen": "test", + "script": { + "type": "text/javascript", + "exec": [ + "" + ] + } + } + ] + }, + { + "name": "JSON [api/v1/page/json]", + "item": [ + { + "name": "Using Actual Page URIs", + "item": [ + { + "name": "Invalidate Session", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{serverURL}}/api/v1/logout", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "logout" + ] + } + }, + "response": [] + }, + { + "name": "Get Page Metadata With Invalid User", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "", + "pm.test(\"Status code is 401, Need credentials\", function () {", + " pm.response.to.have.status(401);", + "});", + "", + "", + "", + "pm.test(\"Response body matches\", function () {", + " pm.expect(pm.response.text()).to.eq(\"Invalid User\");", + "});", + "" + ], + "type": "text/javascript" + } + } + ], + "request": { + "auth": { + "type": "noauth" + }, + "method": "GET", + "header": [], + "url": { + "raw": "{{serverURL}}/api/v1/page/json/destinations/costa-rica", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "page", + "json", + "destinations", + "costa-rica" + ] + }, + "description": "Given no user, should return 401 and \"Invalid User\" message" + }, + "response": [] + }, + { + "name": "Switch to 'demo.dotcms.com'", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code is 200 \", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "pm.test(\"Valid response\", function () {", + " var jsonData = pm.response.json();", + " pm.expect(jsonData.entity.hostSwitched).equal(true);", + "});", + "", + "pm.environment.set(\"forcePreRequestScript\", false);", + "", + "" + ], + "type": "text/javascript", + "packages": {} + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "pm.environment.set(\"forcePreRequestScript\", true);", + "", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "PUT", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "" + }, + "url": { + "raw": "{{serverURL}}/api/v1/site/switch/48190c8c-42c4-46af-8d1a-0cd5db894797", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "site", + "switch", + "48190c8c-42c4-46af-8d1a-0cd5db894797" + ] + } + }, + "response": [] + }, + { + "name": "Get Valid HTML Page Metadata", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "", + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "", + "", + "pm.test(\"Include template\", function () {", + " pm.expect(pm.response.text()).to.include(\"template\");", + "});", + "", + "pm.test(\"Include layout\", function () {", + " pm.expect(pm.response.text()).to.include(\"layout\");", + "});", + "", + "pm.test(\"Include Containers\", function () {", + " pm.expect(pm.response.text()).to.include(\"containers\");", + "});", + "", + "pm.test(\"'page' element includes all properties\", function () {", + " var jsonData = pm.response.json();", + " var page = jsonData[\"entity\"][\"page\"];", + " pm.expect(page[\"__icon__\"]).equal(\"pageIcon\");", + " pm.expect(page[\"archived\"], 'FAILED:[archived]').equal(false);", + " pm.expect(page[\"baseType\"]).equal(\"HTMLPAGE\");", + " pm.expect(page[\"cachettl\"]).equal(\"0\");", + " pm.expect(page[\"canEdit\"], 'FAILED:[canEdit]').equal(true);", + " pm.expect(page[\"canLock\"], 'FAILED:[canLock]').equal(true);", + " pm.expect(page[\"canRead\"], 'FAILED:[canRead]').equal(true);", + " pm.expect(page[\"deleted\"], 'FAILED:[deleted]').equal(false);", + " pm.expect(page[\"extension\"]).equal(\"page\");", + " pm.expect(page[\"folder\"]).equal(\"6c8a2ac4-36a7-4b01-b9c0-c2c1d91ddfdb\");", + " pm.expect(page[\"friendlyName\"]).equal(\"Costa Rica Rain Forest\");", + " pm.expect(page[\"hasLiveVersion\"], 'FAILED:[hasLiveVersion]').equal(true);", + " pm.expect(page[\"hasTitleImage\"], 'FAILED:[hasTitleImage]').equal(true);", + " pm.expect(page[\"host\"]).equal(\"48190c8c-42c4-46af-8d1a-0cd5db894797\");", + " pm.expect(page[\"hostName\"]).equal(\"demo.dotcms.com\");", + " ////", + " pm.expect(page[\"httpsRequired\"], 'FAILED:[httpsRequired]').equal(false);", + " pm.expect(page[\"identifier\"]).equal(\"bec7b960-a8bf-4f14-a22b-0d94caf217f0\");", + " pm.expect(page[\"image\"]).equal(\"/dA/bec7b960-a8bf-4f14-a22b-0d94caf217f0/image/costa-rica-tree-frog.jpg\");", + " pm.expect(page[\"imageContentAsset\"]).equal(\"bec7b960-a8bf-4f14-a22b-0d94caf217f0/image\");", + " pm.expect(page[\"inode\"]).not.equal(null)", + " pm.expect(page[\"isContentlet\"], 'FAILED:[isContentlet]').equal(true);", + " pm.expect(page[\"languageId\"]).equal(1);", + " pm.expect(page[\"live\"], 'FAILED:[live]').equal(true);", + " pm.expect(page[\"liveInode\"]).not.equal(null)", + " pm.expect(page[\"locked\"], 'FAILED:[locked]').equal(false);", + " pm.expect(page[\"mimeType\"]).equal(\"application/dotpage\");", + " pm.expect(page[\"modDate\"]).not.equal(null)", + " ///", + " pm.expect(page[\"modUser\"]).equal(\"system\");", + " pm.expect(page[\"modUserName\"]).equal(\"system user system user\");", + " pm.expect(page[\"name\"]).equal(\"costa-rica\");", + " pm.expect(page[\"owner\"]).equal(\"dotcms.org.1\");", + " pm.expect(page[\"pageURI\"]).equal(\"/destinations/costa-rica\");", + " pm.expect(page[\"pageUrl\"]).equal(\"costa-rica\");", + " pm.expect(page[\"path\"]).equal(\"/destinations/costa-rica\");", + " pm.expect(page[\"publishDate\"]).not.equal(null)", + " pm.expect(page[\"seoTitle\"]).equal(\"Costa Rica Travel Destinations\");", + " pm.expect(page[\"seodescription\"]).equal(\"Visit Costa Rica a rugged, rainforested Central American country with coastlines on the Caribbean and Pacific.\");", + " pm.expect(page[\"shortDescription\"]).equal(\"Costa Rica is a rugged, rainforested Central American country with coastlines on the Caribbean and Pacific. Costa Rica is known for its beaches, volcanoes, and biodiversity. Roughly a quarter of its area is made up of protected jungle, teeming with wildlife including spider monkeys and quetzal birds.\");", + " pm.expect(page[\"shortyLive\"]).not.equal(null)", + " //", + " pm.expect(page[\"shortyWorking\"]).not.equal(null)", + " pm.expect(page[\"sortOrder\"]).equal(0);", + " pm.expect(page[\"stInode\"]).equal(\"91812c8b-0441-4139-8d4d-7423cfb0e979\");", + " pm.expect(page[\"statusIcons\"]).equal(\"\");", + " pm.expect(page[\"tags\"]).equal(\"diving\");", + " pm.expect(page[\"template\"]).equal(\"0c556e37-99e0-4458-a2cd-d42cc7a11045\");", + " pm.expect(page[\"title\"]).equal(\"Costa Rica Rain Forest\");", + " pm.expect(page[\"titleImage\"]).equal(\"image\");", + " pm.expect(page[\"type\"]).equal(\"htmlpage\");", + " pm.expect(page[\"url\"]).equal(\"/destinations/costa-rica\");", + " pm.expect(page[\"working\"], 'FAILED:[working]').equal(true);", + " pm.expect(page[\"workingInode\"]).not.equal(null)", + "", + "});", + "", + "" + ], + "type": "text/javascript", + "packages": {} + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{serverURL}}/api/v1/page/json/destinations/costa-rica", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "page", + "json", + "destinations", + "costa-rica" + ] + }, + "description": "http://localhost:8080/api/v1/page/json/{page-url}" + }, + "response": [] + }, + { + "name": "Invalidate Session", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{serverURL}}/api/v1/logout", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "logout" + ] + } + }, + "response": [] + }, + { + "name": "Get Non-Existing HTML Page", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "", + "pm.test(\"Status code is 404\", function () {", + " pm.response.to.have.status(404);", + "});", + "", + "", + "", + "pm.test(\"Valid response\", function () {", + " pm.expect(pm.response.text()).to.include(\"Page \\'about-us/index2\\' not found\");", + "});", + "", + "", + "", + "" + ], + "type": "text/javascript", + "packages": {} + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{serverURL}}/api/v1/page/json/about-us/index2", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "page", + "json", + "about-us", + "index2" + ] + } + }, + "response": [] + }, + { + "name": "Get Metadata From URL Map", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"No errors\", function () {", + " ", + " var jsonData = pm.response.json();", + " pm.expect(jsonData.errors.length).to.eql(0);", + "});", + "", + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "}); ", + "", + "pm.test(\"Has Rows and Columns\", function () {", + " ", + " var jsonData = pm.response.json();", + " ", + " pm.expect(jsonData.entity.layout.body.rows.length).to.equal(2);", + " pm.expect(jsonData.entity.layout.body.rows[0].columns.length).to.equal(1);", + " ", + "});", + "", + "pm.test(\"Number of Contents\", function () {", + " ", + " var jsonData = pm.response.json();", + " ", + " pm.expect(jsonData.entity.numberContents).to.equal(2);", + " ", + " ", + "});", + "", + "pm.test(\"Page checks\", function () {", + " ", + " var jsonData = pm.response.json();", + " ", + " pm.expect(jsonData.entity.page.pageURI).to.equal('/blog/index');", + " pm.expect(jsonData.entity.page.title).to.equal('Blogs');", + " pm.expect(jsonData.entity.page.type).to.equal('htmlpage');", + " ", + "});", + "", + "pm.test(\"Site checks\", function () {", + " ", + " var jsonData = pm.response.json();", + " ", + " pm.expect(jsonData.entity.site.hostname).to.equal('demo.dotcms.com');", + " pm.expect(jsonData.entity.site.type).to.equal('contentlet');", + " ", + "});", + "", + "pm.test(\"Template checks\", function () {", + " ", + " var jsonData = pm.response.json();", + " ", + " pm.expect(jsonData.entity.template.title).to.equal('anonymous_layout_1571406924828');", + " pm.expect(jsonData.entity.template.type).to.equal('template');", + " ", + "});", + "", + "pm.test(\"Contentlets checks\", function () {", + " ", + " var jsonData = pm.response.json();", + " pm.expect(jsonData.entity.containers[\"//demo.dotcms.com/application/containers/default/\"].contentlets[\"uuid-1\"][0].title).to.equal('Travel Blog Header');", + " pm.expect(jsonData.entity.containers[\"//demo.dotcms.com/application/containers/default/\"].contentlets[\"uuid-1\"][0].contentType).to.equal('webPageContent');", + "});", + "", + "", + "", + "", + "", + "", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{serverURL}}/api/v1/page/json/blog/index", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "page", + "json", + "blog", + "index" + ] + }, + "description": "Gets an Url content map" + }, + "response": [] + } + ], + "description": "Tests calling the `json` method passing down the actual URI of an HTML Page.", + "event": [ + { + "listen": "prerequest", + "script": { + "type": "text/javascript", + "packages": {}, + "exec": [ + "" + ] + } + }, + { + "listen": "test", + "script": { + "type": "text/javascript", + "packages": {}, + "exec": [ + "" + ] + } + } + ] + }, + { + "name": "Using Vanity URLs", + "item": [ + { + "name": "Create Test Forward Vanity URL", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Test Forward Vanity URL was created successfully\", function () {", + " var jsonData = pm.response.json().entity;", + " pm.expect(jsonData.summary.failCount).to.eql(0, \"An error occurred when creating the test Vanity URL\");", + " pm.expect(jsonData.summary.successCount).to.eql(1, \"One piece of content should have been created\");", + "});", + "" + ], + "type": "text/javascript", + "packages": {} + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n \"contentlets\": [\n {\n \"contentType\": \"Vanityurl\",\n \"languageId\": 1,\n \"title\": \"Test Forward Vanity URL\",\n \"site\": \"demo.dotcms.com\",\n \"uri\": \"/forward-json\",\n \"action\": 200,\n \"forwardTo\": \"/destinations/costa-rica\",\n \"order\": 0\n }\n ]\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{serverURL}}/api/v1/workflow/actions/default/fire/PUBLISH", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "workflow", + "actions", + "default", + "fire", + "PUBLISH" + ] + }, + "description": "Create the original Contentlet." + }, + "response": [] + }, + { + "name": "Create Test Temporary Redirect Vanity URL", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Test Temporary Redirect Vanity URL was created successfully\", function () {", + " var jsonData = pm.response.json().entity;", + " pm.expect(jsonData.summary.failCount).to.eql(0, \"An error occurred when creating the test Vanity URL\");", + " pm.expect(jsonData.summary.successCount).to.eql(1, \"One piece of content should have been created\");", + "});", + "" + ], + "type": "text/javascript", + "packages": {} + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n \"contentlets\": [\n {\n \"contentType\": \"Vanityurl\",\n \"languageId\": 1,\n \"title\": \"Test Temporary Vanity URL\",\n \"site\": \"demo.dotcms.com\",\n \"uri\": \"/temporary-json\",\n \"action\": 302,\n \"forwardTo\": \"/destinations/costa-rica\",\n \"order\": 0\n }\n ]\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{serverURL}}/api/v1/workflow/actions/default/fire/PUBLISH", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "workflow", + "actions", + "default", + "fire", + "PUBLISH" + ] + }, + "description": "Create the original Contentlet." + }, + "response": [] + }, + { + "name": "Create Test Permanent Redirect Vanity URL", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Test Permanent Redirect Vanity URL was created successfully\", function () {", + " var jsonData = pm.response.json().entity;", + " pm.expect(jsonData.summary.failCount).to.eql(0, \"An error occurred when creating the test Vanity URL\");", + " pm.expect(jsonData.summary.successCount).to.eql(1, \"One piece of content should have been created\");", + "});", + "" + ], + "type": "text/javascript", + "packages": {} + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n \"contentlets\": [\n {\n \"contentType\": \"Vanityurl\",\n \"languageId\": 1,\n \"title\": \"Test Permanent Vanity URL\",\n \"site\": \"demo.dotcms.com\",\n \"uri\": \"/permanent-json\",\n \"action\": 301,\n \"forwardTo\": \"/destinations/costa-rica\",\n \"order\": 0\n }\n ]\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{serverURL}}/api/v1/workflow/actions/default/fire/PUBLISH", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "workflow", + "actions", + "default", + "fire", + "PUBLISH" + ] + }, + "description": "Create the original Contentlet." + }, + "response": [] + }, + { + "name": "Get HTML Page Metadata - Forward", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Response body contains the 'uuid' attribute\", function () {", + " pm.expect(pm.response.text()).to.include(\"uuid\");", + "});", + "", + "pm.test(\"The 'page' element includes all the expected properties\", function () {", + " var jsonData = pm.response.json();", + " var page = jsonData[\"entity\"][\"page\"];", + " pm.expect(page[\"__icon__\"]).equal(\"pageIcon\");", + " pm.expect(page[\"archived\"], 'FAILED:[archived]').equal(false);", + " pm.expect(page[\"baseType\"]).equal(\"HTMLPAGE\");", + " pm.expect(page[\"cachettl\"]).equal(\"0\");", + " pm.expect(page[\"canEdit\"], 'FAILED:[canEdit]').equal(true);", + " pm.expect(page[\"canLock\"], 'FAILED:[canLock]').equal(true);", + " pm.expect(page[\"canRead\"], 'FAILED:[canRead]').equal(true);", + " pm.expect(page[\"deleted\"], 'FAILED:[deleted]').equal(false);", + " pm.expect(page[\"extension\"]).equal(\"page\");", + " pm.expect(page[\"folder\"]).equal(\"6c8a2ac4-36a7-4b01-b9c0-c2c1d91ddfdb\");", + " pm.expect(page[\"friendlyName\"]).equal(\"Costa Rica Rain Forest\");", + " pm.expect(page[\"hasLiveVersion\"], 'FAILED:[hasLiveVersion]').equal(true);", + " pm.expect(page[\"hasTitleImage\"], 'FAILED:[hasTitleImage]').equal(true);", + " pm.expect(page[\"host\"]).equal(\"48190c8c-42c4-46af-8d1a-0cd5db894797\");", + " pm.expect(page[\"hostName\"]).equal(\"demo.dotcms.com\");", + " ////", + " pm.expect(page[\"httpsRequired\"], 'FAILED:[httpsRequired]').equal(false);", + " pm.expect(page[\"identifier\"]).equal(\"bec7b960-a8bf-4f14-a22b-0d94caf217f0\");", + " pm.expect(page[\"image\"]).equal(\"/dA/bec7b960-a8bf-4f14-a22b-0d94caf217f0/image/costa-rica-tree-frog.jpg\");", + " pm.expect(page[\"imageContentAsset\"]).equal(\"bec7b960-a8bf-4f14-a22b-0d94caf217f0/image\");", + " pm.expect(page[\"inode\"]).not.equal(null)", + " pm.expect(page[\"isContentlet\"], 'FAILED:[isContentlet]').equal(true);", + " pm.expect(page[\"languageId\"]).equal(1);", + " pm.expect(page[\"live\"], 'FAILED:[live]').equal(true);", + " pm.expect(page[\"liveInode\"]).not.equal(null)", + " pm.expect(page[\"locked\"], 'FAILED:[locked]').equal(false);", + " pm.expect(page[\"mimeType\"]).equal(\"application/dotpage\");", + " pm.expect(page[\"modDate\"]).not.equal(null)", + " ///", + " pm.expect(page[\"modUser\"]).equal(\"system\");", + " pm.expect(page[\"modUserName\"]).equal(\"system user system user\");", + " pm.expect(page[\"name\"]).equal(\"costa-rica\");", + " pm.expect(page[\"owner\"]).equal(\"dotcms.org.1\");", + " pm.expect(page[\"pageURI\"]).equal(\"/destinations/costa-rica\");", + " pm.expect(page[\"pageUrl\"]).equal(\"costa-rica\");", + " pm.expect(page[\"path\"]).equal(\"/destinations/costa-rica\");", + " pm.expect(page[\"publishDate\"]).not.equal(null)", + " pm.expect(page[\"seoTitle\"]).equal(\"Costa Rica Travel Destinations\");", + " pm.expect(page[\"seodescription\"]).equal(\"Visit Costa Rica a rugged, rainforested Central American country with coastlines on the Caribbean and Pacific.\");", + " pm.expect(page[\"shortDescription\"]).equal(\"Costa Rica is a rugged, rainforested Central American country with coastlines on the Caribbean and Pacific. Costa Rica is known for its beaches, volcanoes, and biodiversity. Roughly a quarter of its area is made up of protected jungle, teeming with wildlife including spider monkeys and quetzal birds.\");", + " pm.expect(page[\"shortyLive\"]).not.equal(null)", + " //", + " pm.expect(page[\"shortyWorking\"]).not.equal(null)", + " pm.expect(page[\"sortOrder\"]).equal(0);", + " pm.expect(page[\"stInode\"]).equal(\"91812c8b-0441-4139-8d4d-7423cfb0e979\");", + " pm.expect(page[\"statusIcons\"]).equal(\"\");", + " pm.expect(page[\"tags\"]).equal(\"diving\");", + " pm.expect(page[\"template\"]).equal(\"0c556e37-99e0-4458-a2cd-d42cc7a11045\");", + " pm.expect(page[\"title\"]).equal(\"Costa Rica Rain Forest\");", + " pm.expect(page[\"titleImage\"]).equal(\"image\");", + " pm.expect(page[\"type\"]).equal(\"htmlpage\");", + " pm.expect(page[\"url\"]).equal(\"/destinations/costa-rica\");", + " pm.expect(page[\"working\"], 'FAILED:[working]').equal(true);", + " pm.expect(page[\"workingInode\"]).not.equal(null)", + "});", + "", + "pm.test(\"The 'Forward' Vanity URL data must be present\", function() {", + " var entity = pm.response.json().entity;", + " pm.expect(entity.vanityUrl).not.not.equal(undefined, \"The 'vanityUrl' attribute is missing\");", + " pm.expect(entity.vanityUrl.url).to.be.equal(\"/forward-json\", \"The 'url' attribute is NOT the expected one\");", + " pm.expect(entity.vanityUrl.response).to.be.equal(200, \"The 'response' attribute must be 200\");", + "});", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{serverURL}}/api/v1/page/json/forward-json", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "page", + "json", + "forward-json" + ] + } + }, + "response": [] + }, + { + "name": "Get HTML Page Metadata - Temporary Redirect", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"The 'Temporary Redirect' Vanity URL data must be present\", function() {", + " var entity = pm.response.json().entity;", + " pm.expect(entity.vanityUrl).to.not.equal(undefined, \"The 'vanityUrl' attribute must be present\");", + " pm.expect(entity.vanityUrl.response).to.be.equal(302, \"The 'response' attribute must be 302\");", + " pm.expect(entity.vanityUrl.temporaryRedirect).to.equal(true, \"The returned Vanity URL MUST be a temporary redirect\");", + " pm.expect(entity.vanityUrl.permanentRedirect).to.equal(false, \"The returned Vanity URL MUST NOT be a permanent redirect\");", + " pm.expect(entity.vanityUrl.forward).to.equal(false, \"The returned Vanity URL MUST NOT be a forward\");", + "});", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{serverURL}}/api/v1/page/json/temporary-json", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "page", + "json", + "temporary-json" + ] + } + }, + "response": [] + }, + { + "name": "Get HTML Page Metadata - Permanent Redirect", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"The 'Permanent Redirect' Vanity URL must be present\", function() {", + " var entity = pm.response.json().entity;", + " pm.expect(entity.vanityUrl).to.not.equal(undefined, \"The 'vanityUrl' attribute must be present\");", + " pm.expect(entity.vanityUrl.response).to.be.equal(301, \"The 'response' attribute must be 301\");", + " pm.expect(entity.vanityUrl.permanentRedirect).to.equal(true, \"The returned Vanity URL MUST be a permanent redirect\");", + " pm.expect(entity.vanityUrl.temporaryRedirect).to.equal(false, \"The returned Vanity URL MUST NOT be a temporary redirect\");", + " pm.expect(entity.vanityUrl.forward).to.equal(false, \"The returned Vanity URL MUST NOT be a forward\");", + "});", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{serverURL}}/api/v1/page/json/permanent-json", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "page", + "json", + "permanent-json" + ] + } + }, + "response": [] + } + ], + "description": "Tests calling the `json` method passing down a Vanity URL that references an HTML Page, using the three redirect options:\n\n1. Forward.\n \n2. Temporary Redirect.\n \n3. Permanent Redirect.", + "event": [ + { + "listen": "prerequest", + "script": { + "type": "text/javascript", + "packages": {}, + "exec": [ + "" + ] + } + }, + { + "listen": "test", + "script": { + "type": "text/javascript", + "packages": {}, + "exec": [ + "pm.test(\"HTTP Status must be 200\", function() {", + " pm.response.to.have.status(200);", + "});", + "" + ] + } + } + ] + } + ], + "description": "Returns the metadata in JSON format of the objects that make up an HTML Page in the system.\n\nhttp://localhost:8080/api/v1/page/json/{page-url}", + "event": [ + { + "listen": "prerequest", + "script": { + "type": "text/javascript", + "exec": [ + "" + ] + } + }, + { + "listen": "test", + "script": { + "type": "text/javascript", + "exec": [ + "" + ] + } + } + ] + }, + { + "name": "Render [api/v1/page/render]", + "item": [ + { + "name": "Using Actual Page URIs", + "item": [ + { + "name": "Invalidate Session", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{serverURL}}/api/v1/logout", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "logout" + ] + } + }, + "response": [] + }, + { + "name": "Get Page Metadata With Invalid User", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "", + "pm.test(\"Status code is 401, Need credentials\", function () {", + " pm.response.to.have.status(401);", + "});", + "", + "pm.test(\"Response body matches\", function () {", + " pm.expect(pm.response.text()).to.include(\"Invalid User\");", + "});", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "auth": { + "type": "noauth" + }, + "method": "GET", + "header": [], + "url": { + "raw": "{{serverURL}}/api/v1/page/render/destinations/costa-rica", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "page", + "render", + "destinations", + "costa-rica" + ] + } + }, + "response": [] + }, + { + "name": "Switch to 'demo.dotcms.com'", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code is 200 \", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "pm.test(\"Valid response\", function () {", + " var jsonData = pm.response.json();", + "", + " pm.expect(jsonData.entity.hostSwitched).equal(true);", + "});" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "PUT", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "" + }, + "url": { + "raw": "{{serverURL}}/api/v1/site/switch/48190c8c-42c4-46af-8d1a-0cd5db894797", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "site", + "switch", + "48190c8c-42c4-46af-8d1a-0cd5db894797" + ] + } + }, + "response": [] + }, + { + "name": "Get Valid HTML Page Metadata", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "", + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "pm.test(\"Response body contains\", function () {", + " pm.expect(pm.response.text()).to.include(\"rendered\");", + "});", + "", + "pm.test(\"Response body contains\", function () {", + " pm.expect(pm.response.text()).to.include(\"uuid\");", + "});", + "", + "pm.test(\"'page' element includes all properties\", function () {", + " var jsonData = pm.response.json();", + " var page = jsonData[\"entity\"][\"page\"];", + " pm.expect(page[\"__icon__\"]).equal(\"pageIcon\");", + " pm.expect(page[\"archived\"], 'FAILED:[archived]').equal(false);", + " pm.expect(page[\"baseType\"]).equal(\"HTMLPAGE\");", + " pm.expect(page[\"cachettl\"]).equal(\"0\");", + " pm.expect(page[\"canEdit\"], 'FAILED:[canEdit]').equal(true);", + " pm.expect(page[\"canLock\"], 'FAILED:[canLock]').equal(true);", + " pm.expect(page[\"canRead\"], 'FAILED:[canRead]').equal(true);", + " pm.expect(page[\"deleted\"], 'FAILED:[deleted]').equal(false);", + " pm.expect(page[\"extension\"]).equal(\"page\");", + " pm.expect(page[\"folder\"]).equal(\"6c8a2ac4-36a7-4b01-b9c0-c2c1d91ddfdb\");", + " pm.expect(page[\"friendlyName\"]).equal(\"Costa Rica Rain Forest\");", + " pm.expect(page[\"hasLiveVersion\"], 'FAILED:[hasLiveVersion]').equal(true);", + " pm.expect(page[\"hasTitleImage\"], 'FAILED:[hasTitleImage]').equal(true);", + " pm.expect(page[\"host\"]).equal(\"48190c8c-42c4-46af-8d1a-0cd5db894797\");", + " pm.expect(page[\"hostName\"]).equal(\"demo.dotcms.com\");", + " ////", + " pm.expect(page[\"httpsRequired\"], 'FAILED:[httpsRequired]').equal(false);", + " pm.expect(page[\"identifier\"]).equal(\"bec7b960-a8bf-4f14-a22b-0d94caf217f0\");", + " pm.expect(page[\"image\"]).equal(\"/dA/bec7b960-a8bf-4f14-a22b-0d94caf217f0/image/costa-rica-tree-frog.jpg\");", + " pm.expect(page[\"imageContentAsset\"]).equal(\"bec7b960-a8bf-4f14-a22b-0d94caf217f0/image\");", + " pm.expect(page[\"inode\"]).not.equal(null)", + " pm.expect(page[\"isContentlet\"], 'FAILED:[isContentlet]').equal(true);", + " pm.expect(page[\"languageId\"]).equal(1);", + " pm.expect(page[\"live\"], 'FAILED:[live]').equal(true);", + " pm.expect(page[\"liveInode\"]).not.equal(null)", + " pm.expect(page[\"locked\"], 'FAILED:[locked]').equal(false);", + " pm.expect(page[\"mimeType\"]).equal(\"application/dotpage\");", + " pm.expect(page[\"modDate\"]).not.equal(null)", + " ///", + " pm.expect(page[\"modUser\"]).equal(\"system\");", + " pm.expect(page[\"modUserName\"]).equal(\"system user system user\");", + " pm.expect(page[\"name\"]).equal(\"costa-rica\");", + " pm.expect(page[\"owner\"]).equal(\"dotcms.org.1\");", + " pm.expect(page[\"pageURI\"]).equal(\"/destinations/costa-rica\");", + " pm.expect(page[\"pageUrl\"]).equal(\"costa-rica\");", + " pm.expect(page[\"path\"]).equal(\"/destinations/costa-rica\");", + " pm.expect(page[\"publishDate\"]).not.equal(null)", + " pm.expect(page[\"seoTitle\"]).equal(\"Costa Rica Travel Destinations\");", + " pm.expect(page[\"seodescription\"]).equal(\"Visit Costa Rica a rugged, rainforested Central American country with coastlines on the Caribbean and Pacific.\");", + " pm.expect(page[\"shortDescription\"]).equal(\"Costa Rica is a rugged, rainforested Central American country with coastlines on the Caribbean and Pacific. Costa Rica is known for its beaches, volcanoes, and biodiversity. Roughly a quarter of its area is made up of protected jungle, teeming with wildlife including spider monkeys and quetzal birds.\");", + " pm.expect(page[\"shortyLive\"]).not.equal(null)", + " //", + " pm.expect(page[\"shortyWorking\"]).not.equal(null)", + " pm.expect(page[\"sortOrder\"]).equal(0);", + " pm.expect(page[\"stInode\"]).equal(\"91812c8b-0441-4139-8d4d-7423cfb0e979\");", + " pm.expect(page[\"statusIcons\"]).equal(\"\");", + " pm.expect(page[\"tags\"]).equal(\"diving\");", + " pm.expect(page[\"template\"]).equal(\"0c556e37-99e0-4458-a2cd-d42cc7a11045\");", + " pm.expect(page[\"title\"]).equal(\"Costa Rica Rain Forest\");", + " pm.expect(page[\"titleImage\"]).equal(\"image\");", + " pm.expect(page[\"type\"]).equal(\"htmlpage\");", + " pm.expect(page[\"url\"]).equal(\"/destinations/costa-rica\");", + " pm.expect(page[\"working\"], 'FAILED:[working]').equal(true);", + " pm.expect(page[\"workingInode\"]).not.equal(null)", + "", + "});" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{serverURL}}/api/v1/page/render/destinations/costa-rica", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "page", + "render", + "destinations", + "costa-rica" + ] + } + }, + "response": [] + }, + { + "name": "Get Metadata From Non-Existing HTML Page", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "", + "pm.test(\"Status code is 404\", function () {", + " pm.response.to.have.status(404);", + "});", + "", + "", + "pm.test(\"Response body contains\", function () {", + " ", + " pm.expect( pm.response.json().message).to.eq(\"Page 'about-us/index2' not found\");", + "});", + "", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{serverURL}}/api/v1/page/render/about-us/index2", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "page", + "render", + "about-us", + "index2" + ] + } + }, + "response": [] + }, + { + "name": "Reset workflow for contentlet", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code is 200 \", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "", + "", + "pm.test(\"Correct identifier\", function () {", + " pm.expect(pm.response.json().entity.identifier).equal(\"57ee7cd3-66fc-4f01-9b7e-11e53553c220\");", + "});", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "PUT", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "" + }, + "url": { + "raw": "{{serverURL}}/api/v1/workflow/actions/2d1dc7718f/fire?identifier=57ee7cd3-66fc-4f01-9b7e-11e53553c220", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "workflow", + "actions", + "2d1dc7718f", + "fire" + ], + "query": [ + { + "key": "identifier", + "value": "57ee7cd3-66fc-4f01-9b7e-11e53553c220" + } + ] + }, + "description": "The piece of content \"Ecoturism in Costarica\" gets somehow archived at this point after being imported in a previous bundle. This resets its workflow so it can be published in the next request" + }, + "response": [] + }, + { + "name": "Publish Archived Content", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code is 200 \", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "", + "", + "pm.test(\"Correct identifier\", function () {", + " pm.expect(pm.response.json().entity.identifier).equal(\"57ee7cd3-66fc-4f01-9b7e-11e53553c220\");", + "});", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "PUT", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "" + }, + "url": { + "raw": "{{serverURL}}/api/v1/workflow/actions/175009d69e/fire?identifier=57ee7cd3-66fc-4f01-9b7e-11e53553c220", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "workflow", + "actions", + "175009d69e", + "fire" + ], + "query": [ + { + "key": "identifier", + "value": "57ee7cd3-66fc-4f01-9b7e-11e53553c220" + } + ] + }, + "description": "This publishes the content `Ecotourism in Costa Rica` so it can be tested in the next request" + }, + "response": [] + }, + { + "name": "Get Metadata From URL Map", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"No errors\", function () {", + " ", + " var jsonData = pm.response.json();", + " pm.expect(jsonData.errors.length).to.eql(0);", + "});", + "", + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "}); ", + "", + "pm.test(\"Has Rows and Columns\", function () {", + " ", + " var jsonData = pm.response.json();", + " ", + " pm.expect(jsonData.entity.layout.body.rows.length).to.equal(1);", + " pm.expect(jsonData.entity.layout.body.rows[0].columns.length).to.equal(1);", + " ", + "});", + "", + "pm.test(\"Number of Contents\", function () {", + " ", + " var jsonData = pm.response.json();", + " ", + " pm.expect(jsonData.entity.numberContents).to.equal(1);", + " ", + " ", + "});", + "", + "pm.test(\"Page checks\", function () {", + " ", + " var jsonData = pm.response.json();", + " ", + " pm.expect(jsonData.entity.page.pageURI).to.equal('/blog/post/ecotourism-in-costa-rica');", + " pm.expect(jsonData.entity.page.title).to.equal('Blog Detail');", + " pm.expect(jsonData.entity.page.type).to.equal('htmlpage');", + " ", + "});", + "", + "pm.test(\"Site checks\", function () {", + " ", + " var jsonData = pm.response.json();", + " ", + " pm.expect(jsonData.entity.site.hostname).to.equal('demo.dotcms.com');", + " pm.expect(jsonData.entity.site.type).to.equal('contentlet');", + " ", + "});", + "", + "pm.test(\"Template checks\", function () {", + " ", + " var jsonData = pm.response.json();", + " ", + " pm.expect(jsonData.entity.template.title).to.equal('anonymous_layout_1582562696562');", + " pm.expect(jsonData.entity.template.type).to.equal('template');", + " ", + "});", + "", + "pm.test(\"Url Content Map checks\", function () {", + " ", + " var jsonData = pm.response.json();", + "", + " pm.expect(jsonData.entity.urlContentMap.hostName).to.equal('demo.dotcms.com');", + " pm.expect(jsonData.entity.urlContentMap.baseType).to.equal('CONTENT');", + " pm.expect(jsonData.entity.urlContentMap.contentType).to.equal('Blog');", + " pm.expect(jsonData.entity.urlContentMap.urlTitle).to.equal('ecotourism-in-costa-rica');", + " pm.expect(jsonData.entity.urlContentMap['URL_MAP_FOR_CONTENT']).to.equal('/blog/post/ecotourism-in-costa-rica');", + " pm.expect(jsonData.entity.urlContentMap['urlMap']).to.equal('/blog/post/ecotourism-in-costa-rica');", + "});", + "", + "", + "", + "", + "", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{serverURL}}/api/v1/page/render/blog/post/ecotourism-in-costa-rica?mode=EDIT_MODE", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "page", + "render", + "blog", + "post", + "ecotourism-in-costa-rica" + ], + "query": [ + { + "key": "mode", + "value": "EDIT_MODE" + } + ] + }, + "description": "Gets an Url content map" + }, + "response": [] + } + ], + "description": "Tests calling the `render` method passing down the actual URI of an HTML Page." + }, + { + "name": "Using Vanity URLs", + "item": [ + { + "name": "Create Test Forward Vanity URL", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Test Forward Vanity URL was created successfully\", function () {", + " var jsonData = pm.response.json().entity;", + " pm.expect(jsonData.summary.failCount).to.eql(0, \"An error occurred when creating the test Vanity URL\");", + " pm.expect(jsonData.summary.successCount).to.eql(1, \"One piece of content should have been created\");", + "});", + "" + ], + "type": "text/javascript", + "packages": {} + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n \"contentlets\": [\n {\n \"contentType\": \"Vanityurl\",\n \"languageId\": 1,\n \"title\": \"Test Forward Vanity URL\",\n \"site\": \"demo.dotcms.com\",\n \"uri\": \"/forward-render\",\n \"action\": 200,\n \"forwardTo\": \"/destinations/costa-rica\",\n \"order\": 0\n }\n ]\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{serverURL}}/api/v1/workflow/actions/default/fire/PUBLISH", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "workflow", + "actions", + "default", + "fire", + "PUBLISH" + ] + }, + "description": "Create the original Contentlet." + }, + "response": [] + }, + { + "name": "Create Test Temporary Redirect Vanity URL", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Test Temporary Redirect Vanity URL was created successfully\", function () {", + " var jsonData = pm.response.json().entity;", + " pm.expect(jsonData.summary.failCount).to.eql(0, \"An error occurred when creating the test Vanity URL\");", + " pm.expect(jsonData.summary.successCount).to.eql(1, \"One piece of content should have been created\");", + "});", + "" + ], + "type": "text/javascript", + "packages": {} + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n \"contentlets\": [\n {\n \"contentType\": \"Vanityurl\",\n \"languageId\": 1,\n \"title\": \"Test Temporary Vanity URL\",\n \"site\": \"demo.dotcms.com\",\n \"uri\": \"/temporary-render\",\n \"action\": 302,\n \"forwardTo\": \"/destinations/costa-rica\",\n \"order\": 0\n }\n ]\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{serverURL}}/api/v1/workflow/actions/default/fire/PUBLISH", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "workflow", + "actions", + "default", + "fire", + "PUBLISH" + ] + }, + "description": "Create the original Contentlet." + }, + "response": [] + }, + { + "name": "Create Test Permanent Redirect Vanity URL", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Test Permanent Redirect Vanity URL was created successfully\", function () {", + " var jsonData = pm.response.json().entity;", + " pm.expect(jsonData.summary.failCount).to.eql(0, \"An error occurred when creating the test Vanity URL\");", + " pm.expect(jsonData.summary.successCount).to.eql(1, \"One piece of content should have been created\");", + "});", + "" + ], + "type": "text/javascript", + "packages": {} + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n \"contentlets\": [\n {\n \"contentType\": \"Vanityurl\",\n \"languageId\": 1,\n \"title\": \"Test Permanent Vanity URL\",\n \"site\": \"demo.dotcms.com\",\n \"uri\": \"/permanent-render\",\n \"action\": 301,\n \"forwardTo\": \"/destinations/costa-rica\",\n \"order\": 0\n }\n ]\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{serverURL}}/api/v1/workflow/actions/default/fire/PUBLISH", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "workflow", + "actions", + "default", + "fire", + "PUBLISH" + ] + }, + "description": "Create the original Contentlet." + }, + "response": [] + }, + { + "name": "Get HTML Page Metadata - Forward", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Response body contains the 'rendered' attribute\", function () {", + " pm.expect(pm.response.text()).to.include(\"rendered\");", + "});", + "", + "pm.test(\"Response body contains the 'uuid' attribute\", function () {", + " pm.expect(pm.response.text()).to.include(\"uuid\");", + "});", + "", + "pm.test(\"The 'page' element includes all the expected properties\", function () {", + " var jsonData = pm.response.json();", + " var page = jsonData[\"entity\"][\"page\"];", + " pm.expect(page[\"__icon__\"]).equal(\"pageIcon\");", + " pm.expect(page[\"archived\"], 'FAILED:[archived]').equal(false);", + " pm.expect(page[\"baseType\"]).equal(\"HTMLPAGE\");", + " pm.expect(page[\"cachettl\"]).equal(\"0\");", + " pm.expect(page[\"canEdit\"], 'FAILED:[canEdit]').equal(true);", + " pm.expect(page[\"canLock\"], 'FAILED:[canLock]').equal(true);", + " pm.expect(page[\"canRead\"], 'FAILED:[canRead]').equal(true);", + " pm.expect(page[\"deleted\"], 'FAILED:[deleted]').equal(false);", + " pm.expect(page[\"extension\"]).equal(\"page\");", + " pm.expect(page[\"folder\"]).equal(\"6c8a2ac4-36a7-4b01-b9c0-c2c1d91ddfdb\");", + " pm.expect(page[\"friendlyName\"]).equal(\"Costa Rica Rain Forest\");", + " pm.expect(page[\"hasLiveVersion\"], 'FAILED:[hasLiveVersion]').equal(true);", + " pm.expect(page[\"hasTitleImage\"], 'FAILED:[hasTitleImage]').equal(true);", + " pm.expect(page[\"host\"]).equal(\"48190c8c-42c4-46af-8d1a-0cd5db894797\");", + " pm.expect(page[\"hostName\"]).equal(\"demo.dotcms.com\");", + " ////", + " pm.expect(page[\"httpsRequired\"], 'FAILED:[httpsRequired]').equal(false);", + " pm.expect(page[\"identifier\"]).equal(\"bec7b960-a8bf-4f14-a22b-0d94caf217f0\");", + " pm.expect(page[\"image\"]).equal(\"/dA/bec7b960-a8bf-4f14-a22b-0d94caf217f0/image/costa-rica-tree-frog.jpg\");", + " pm.expect(page[\"imageContentAsset\"]).equal(\"bec7b960-a8bf-4f14-a22b-0d94caf217f0/image\");", + " pm.expect(page[\"inode\"]).not.equal(null)", + " pm.expect(page[\"isContentlet\"], 'FAILED:[isContentlet]').equal(true);", + " pm.expect(page[\"languageId\"]).equal(1);", + " pm.expect(page[\"live\"], 'FAILED:[live]').equal(true);", + " pm.expect(page[\"liveInode\"]).not.equal(null)", + " pm.expect(page[\"locked\"], 'FAILED:[locked]').equal(false);", + " pm.expect(page[\"mimeType\"]).equal(\"application/dotpage\");", + " pm.expect(page[\"modDate\"]).not.equal(null)", + " ///", + " pm.expect(page[\"modUser\"]).equal(\"system\");", + " pm.expect(page[\"modUserName\"]).equal(\"system user system user\");", + " pm.expect(page[\"name\"]).equal(\"costa-rica\");", + " pm.expect(page[\"owner\"]).equal(\"dotcms.org.1\");", + " pm.expect(page[\"pageURI\"]).equal(\"/destinations/costa-rica\");", + " pm.expect(page[\"pageUrl\"]).equal(\"costa-rica\");", + " pm.expect(page[\"path\"]).equal(\"/destinations/costa-rica\");", + " pm.expect(page[\"publishDate\"]).not.equal(null)", + " pm.expect(page[\"seoTitle\"]).equal(\"Costa Rica Travel Destinations\");", + " pm.expect(page[\"seodescription\"]).equal(\"Visit Costa Rica a rugged, rainforested Central American country with coastlines on the Caribbean and Pacific.\");", + " pm.expect(page[\"shortDescription\"]).equal(\"Costa Rica is a rugged, rainforested Central American country with coastlines on the Caribbean and Pacific. Costa Rica is known for its beaches, volcanoes, and biodiversity. Roughly a quarter of its area is made up of protected jungle, teeming with wildlife including spider monkeys and quetzal birds.\");", + " pm.expect(page[\"shortyLive\"]).not.equal(null)", + " //", + " pm.expect(page[\"shortyWorking\"]).not.equal(null)", + " pm.expect(page[\"sortOrder\"]).equal(0);", + " pm.expect(page[\"stInode\"]).equal(\"91812c8b-0441-4139-8d4d-7423cfb0e979\");", + " pm.expect(page[\"statusIcons\"]).equal(\"\");", + " pm.expect(page[\"tags\"]).equal(\"diving\");", + " pm.expect(page[\"template\"]).equal(\"0c556e37-99e0-4458-a2cd-d42cc7a11045\");", + " pm.expect(page[\"title\"]).equal(\"Costa Rica Rain Forest\");", + " pm.expect(page[\"titleImage\"]).equal(\"image\");", + " pm.expect(page[\"type\"]).equal(\"htmlpage\");", + " pm.expect(page[\"url\"]).equal(\"/destinations/costa-rica\");", + " pm.expect(page[\"working\"], 'FAILED:[working]').equal(true);", + " pm.expect(page[\"workingInode\"]).not.equal(null)", + "});", + "", + "pm.test(\"The 'Forward' Vanity URL data must be present\", function() {", + " var entity = pm.response.json().entity;", + " pm.expect(entity.vanityUrl).not.not.equal(undefined, \"The 'vanityUrl' attribute is missing\");", + " pm.expect(entity.vanityUrl.url).to.be.equal(\"/forward-render\", \"The 'url' attribute is NOT the expected one\");", + " pm.expect(entity.vanityUrl.response).to.be.equal(200, \"The 'response' attribute must be 200\");", + "});", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{serverURL}}/api/v1/page/render/forward-render", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "page", + "render", + "forward-render" + ] + } + }, + "response": [] + }, + { + "name": "Get HTML Page Metadata - Temporary Redirect", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"The 'Temporary Redirect' Vanity URL data must be present\", function() {", + " var entity = pm.response.json().entity;", + " pm.expect(entity.vanityUrl).to.not.equal(undefined, \"The 'vanityUrl' attribute must be present\");", + " pm.expect(entity.vanityUrl.response).to.be.equal(302, \"The 'response' attribute must be 302\");", + " pm.expect(entity.vanityUrl.temporaryRedirect).to.equal(true, \"The returned Vanity URL MUST be a temporary redirect\");", + " pm.expect(entity.vanityUrl.permanentRedirect).to.equal(false, \"The returned Vanity URL MUST NOT be a permanent redirect\");", + " pm.expect(entity.vanityUrl.forward).to.equal(false, \"The returned Vanity URL MUST NOT be a forward\");", + "});", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{serverURL}}/api/v1/page/render/temporary-render", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "page", + "render", + "temporary-render" + ] + } + }, + "response": [] + }, + { + "name": "Get HTML Page Metadata - Permanent Redirect", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"The 'Permanent Redirect' Vanity URL must be present\", function() {", + " var entity = pm.response.json().entity;", + " pm.expect(entity.vanityUrl).to.not.equal(undefined, \"The 'vanityUrl' attribute must be present\");", + " pm.expect(entity.vanityUrl.response).to.be.equal(301, \"The 'response' attribute must be 301\");", + " pm.expect(entity.vanityUrl.permanentRedirect).to.equal(true, \"The returned Vanity URL MUST be a permanent redirect\");", + " pm.expect(entity.vanityUrl.temporaryRedirect).to.equal(false, \"The returned Vanity URL MUST NOT be a temporary redirect\");", + " pm.expect(entity.vanityUrl.forward).to.equal(false, \"The returned Vanity URL MUST NOT be a forward\");", + "});", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{serverURL}}/api/v1/page/render/permanent-render", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "page", + "render", + "permanent-render" + ] + } + }, + "response": [] + } + ], + "description": "Tests calling the `render` method passing down a Vanity URL that references an HTML Page, using the three redirect options:\n\n1. Forward.\n \n2. Temporary Redirect.\n \n3. Permanent Redirect.", + "event": [ + { + "listen": "prerequest", + "script": { + "type": "text/javascript", + "packages": {}, + "exec": [ + "" + ] + } + }, + { + "listen": "test", + "script": { + "type": "text/javascript", + "packages": {}, + "exec": [ + "pm.test(\"HTTP Status must be 200\", function() {", + " pm.response.to.have.status(200);", + "});", + "", + "" + ] + } + } + ] + }, + { + "name": "Check related content in depth 2", + "item": [ + { + "name": "Create content type with image field", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "var contentType = pm.response.json().entity[0];", + "var jsonData = pm.response.json();", + "pm.collectionVariables.set(\"relatedContentTypeVarName\", contentType.variable);", + "", + "pm.test(\"Image field check\", function () {", + " pm.expect(jsonData.entity[0].fields[3].name).to.eql('myImage');", + "});", + "", + "pm.test(\"Check response\", function () {", + " pm.expect(jsonData.entity[0].baseType).to.eql(\"CONTENT\");", + "});" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n \"defaultType\": false,\n \"fixed\": false,\n \"system\": false,\n \"clazz\": \"com.dotcms.contenttype.model.type.ImmutableSimpleContentType\",\n \"description\": \"\",\n \"host\": \"8a7d5e23-da1e-420a-b4f0-471e7da8ea2d\",\n \"folder\": \"SYSTEM_FOLDER\",\n \"name\": \"content type with img\",\n \"workflow\": [\n \"d61a59e1-a49c-46f2-a929-db2b4bfa88b2\"\n ],\n \"fields\": [\n {\n \"clazz\": \"com.dotcms.contenttype.model.field.ImmutableTextField\",\n \"dataType\": \"TEXT\",\n \"fieldType\": \"Text\",\n \"fieldTypeLabel\": \"Text\",\n \"fieldVariables\": [],\n \"fixed\": false,\n \"indexed\": true,\n \"listed\": false,\n \"name\": \"Title\",\n \"readOnly\": false,\n \"required\": false,\n \"searchable\": true,\n \"sortOrder\": 1,\n \"unique\": false,\n \"variable\": \"title\"\n },\n {\n \"clazz\": \"com.dotcms.contenttype.model.field.ImmutableImageField\",\n \"dataType\": \"TEXT\",\n \"fieldType\": \"Image\",\n \"fieldTypeLabel\": \"Image\",\n \"fieldVariables\": [],\n \"fixed\": false,\n \"iDate\": 1585605564000,\n \"indexed\": true,\n \"listed\": false,\n \"modDate\": 1585605564000,\n \"name\": \"myImage\",\n \"readOnly\": false,\n \"required\": false,\n \"searchable\": false,\n \"sortOrder\": 3,\n \"unique\": false\n }\n ]\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{serverURL}}/api/v1/contenttype", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "contenttype" + ] + }, + "description": "Create content type with title and image fields" + }, + "response": [] + }, + { + "name": "Create content type with relationship field", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "var contentType = pm.response.json().entity[0];", + "var jsonData = pm.response.json();", + "pm.collectionVariables.set(\"relationshipContentTypeId\", contentType.id);", + "pm.collectionVariables.set(\"relationshipContentTypeName\", contentType.name);", + "pm.collectionVariables.set(\"relationshipContentTypeVarName\", contentType.variable);", + "", + "pm.test(\"Relationship field check\", function () {", + " pm.expect(jsonData.entity[0].fields[3].name).to.eql('rel');", + "});", + "", + "pm.test(\"Check response\", function () {", + " pm.expect(jsonData.entity[0].baseType).to.eql(\"CONTENT\");", + "});" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n \"defaultType\": false,\n \"fixed\": false,\n \"system\": false,\n \"clazz\": \"com.dotcms.contenttype.model.type.ImmutableSimpleContentType\",\n \"description\": \"\",\n \"host\": \"8a7d5e23-da1e-420a-b4f0-471e7da8ea2d\",\n \"folder\": \"SYSTEM_FOLDER\",\n \"name\": \"content with relationship\",\n \"workflow\": [\n \"d61a59e1-a49c-46f2-a929-db2b4bfa88b2\"\n ],\n \"fields\": [\n {\n \"clazz\": \"com.dotcms.contenttype.model.field.ImmutableTextField\",\n \"dataType\": \"TEXT\",\n \"fieldType\": \"Text\",\n \"fieldTypeLabel\": \"Text\",\n \"fieldVariables\": [],\n \"fixed\": false,\n \"indexed\": true,\n \"listed\": false,\n \"name\": \"Title\",\n \"readOnly\": false,\n \"required\": false,\n \"searchable\": true,\n \"sortOrder\": 1,\n \"unique\": false,\n \"variable\": \"title\"\n },\n {\n\t\t \"clazz\":\"com.dotcms.contenttype.model.field.ImmutableRelationshipField\",\n\t\t \"required\":false,\n\t\t \"name\":\"rel\",\n\t\t \"relationships\":{\n\t\t \"velocityVar\":\"{{relatedContentTypeVarName}}\",\n\t\t \"cardinality\":0\n\t\t },\n\t\t \"searchable\":false\n\t\t}\n ]\n}\n", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{serverURL}}/api/v1/contenttype", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "contenttype" + ] + }, + "description": "Create a content type with title and relationship fields" + }, + "response": [] + }, + { + "name": "Upload Image", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "var jsonData = pm.response.json();", + "", + "pm.test(\"Retrieving the ID of the custom Image contentlet\", function () {", + " ", + " pm.collectionVariables.set(\"imageContentIdentifier\", jsonData.entity.identifier);", + "});", + "", + "pm.test(\"Check response\", function () {", + " pm.expect(jsonData.entity.baseType).to.eql(\"DOTASSET\");", + " pm.expect(jsonData.entity.title).to.eql(\"Landscape_2008_urban_park_and_plaza_Ankaran.jpeg\");", + "});", + "" + ], + "type": "text/javascript", + "packages": {} + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "PUT", + "header": [ + { + "key": "Content-Type", + "value": "application/json", + "type": "text" + } + ], + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "json", + "value": "{\n \"contentlet\": {\n \"contentType\":\"DotAsset\",\n \"title\":\"test img\", \n \"hostFolder\":\"default\",\n \"indexPolicy\":\"WAIT_FOR\",\n \"showOnMenu\":\"true\",\n \"sortOrder\":\"2\"\n }\n}", + "type": "text" + }, + { + "key": "file", + "type": "file", + "src": "resources/image/Landscape_2008_urban_park_and_plaza_Ankaran.jpeg" + } + ] + }, + "url": { + "raw": "{{serverURL}}/api/v1/workflow/actions/default/fire/PUBLISH", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "workflow", + "actions", + "default", + "fire", + "PUBLISH" + ] + }, + "description": "Upload an image as a dotasset type, in this test the image with src in \"_resources/image/_[Landscape_2008_urban_park_and_plaza_Ankaran.jpeg](https://github.com/dotCMS/core/blob/master/dotcms-postman/src/main/resources/postman/resources/image/Landscape_2008_urban_park_and_plaza_Ankaran.jpeg)_\"_ is being used" + }, + "response": [] + }, + { + "name": "Create Content", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "var jsonData = pm.response.json();", + "pm.test(\"Retrieving the ID of the contentlet with Image field\", function () {", + " pm.collectionVariables.set(\"contentImgIdentifier\", jsonData.entity.identifier);", + "});", + "", + "pm.test(\"Check response\", function () {", + " pm.expect(jsonData.entity.contentType).to.eql(pm.collectionVariables.get(\"relatedContentTypeVarName\"));", + "});", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "PUT", + "header": [ + { + "key": "Content-Type", + "value": "application/json", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"contentlet\": {\n \"contentType\":\"{{relatedContentTypeVarName}}\",\n \"title\":\"Content With Image\", \n \"contentHost\":\"default\",\n \"indexPolicy\":\"WAIT_FOR\",\n \"myImage\":\"{{imageContentIdentifier}}\"\n }\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{serverURL}}/api/v1/workflow/actions/default/fire/PUBLISH", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "workflow", + "actions", + "default", + "fire", + "PUBLISH" + ] + }, + "description": "Create contentlet with the previously created content type with image field" + }, + "response": [] + }, + { + "name": "Create Content (relationship)", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "var jsonData = pm.response.json();", + "", + "pm.test(\"Retrieving the ID of the contentlet with relationship fields\", function () {", + " pm.collectionVariables.set(\"contentRelationshipIdentifier\", jsonData.entity.identifier);", + "});", + "", + "pm.test(\"Check response\", function () {", + " pm.expect(jsonData.entity.contentType).to.eql(pm.collectionVariables.get(\"relationshipContentTypeVarName\"));", + "});", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "PUT", + "header": [ + { + "key": "Content-Type", + "value": "application/json", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"contentlet\": {\n \"contentType\":\"{{relationshipContentTypeVarName}}\",\n \"title\":\"content related\",\n \"rel\":\"{{contentImgIdentifier}}\",\n \"indexPolicy\":\"WAIT_FOR\"\n }\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{serverURL}}/api/v1/workflow/actions/default/fire/PUBLISH", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "workflow", + "actions", + "default", + "fire", + "PUBLISH" + ] + }, + "description": "Create contentlet with the previously created content type with relationship field" + }, + "response": [] + }, + { + "name": "Create page", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "var jsonData = pm.response.json();", + "", + "", + "pm.collectionVariables.set(\"page_id\", jsonData.entity.identifier);", + "pm.collectionVariables.set(\"page_name\", jsonData.entity.title);", + "", + "", + "pm.test(\"Check response\", function () {", + " const responseData = pm.response.json();", + " ", + " pm.expect(responseData.entity.contentType).to.eql('htmlpageasset');", + " ", + "});", + "", + "", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "PUT", + "header": [], + "body": { + "mode": "raw", + "raw": "{ \n \"contentlet\" : {\n \"title\" : \"page_to_test_content_with_image_related\",\n \"languageId\" : 1,\n \"stInode\": \"c541abb1-69b3-4bc5-8430-5e09e5239cc8\",\n \"url\": \"page_to_test_content_with_image_related\",\n \"hostFolder\": \"48190c8c-42c4-46af-8d1a-0cd5db894797\",\n \"template\": \"SYSTEM_TEMPLATE\",\n \"cachettl\": 0,\n \"friendlyName\": \"friendlyName\"\n }\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{serverURL}}/api/v1/workflow/actions/default/fire/PUBLISH", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "workflow", + "actions", + "default", + "fire", + "PUBLISH" + ] + }, + "description": "Create a page" + }, + "response": [] + }, + { + "name": "Add contentlet into page", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "var jsonData = pm.response.json();", + "", + "pm.test(\"Check response\", function () {", + " ", + " pm.expect(jsonData.entity).to.eql('ok');", + " ", + "});" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "[\n {\n \"contentletsId\": [\"{{contentImgIdentifier}}\", \"{{contentRelationshipIdentifier}}\"],\n \"identifier\": \"SYSTEM_CONTAINER\",\n \"uuid\": \"1\" \n } \n]\n", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{serverURL}}/api/v1/page/{{page_id}}/content", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "page", + "{{page_id}}", + "content" + ] + }, + "description": "Add the two previously created contentlet to the created page" + }, + "response": [] + }, + { + "name": "render page data json", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "var jsonData = pm.response.json();", + "", + "pm.test(\"Check response to have the correct related data\", function () {", + " pm.expect(jsonData.entity.containers.SYSTEM_CONTAINER.contentlets[\"uuid-1\"][1].rel[0].myImage.extension).to.eql('jpeg');", + " pm.expect(jsonData.entity.containers.SYSTEM_CONTAINER.contentlets[\"uuid-1\"][1].rel[0].myImage.metaData.name).to.eql('Landscape_2008_urban_park_and_plaza_Ankaran.jpeg');", + "});", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{serverURL}}/api/v1/page/render/page_to_test_content_with_image_related?language_id=1&depth=2", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "page", + "render", + "page_to_test_content_with_image_related" + ], + "query": [ + { + "key": "language_id", + "value": "1" + }, + { + "key": "depth", + "value": "2" + } + ] + }, + "description": "Check the metadata of the related content, it should not be null and have the correct values" + }, + "response": [] + } + ], + "description": "[https://github.com/dotCMS/core/issues/29259](https://github.com/dotCMS/core/issues/29259)\n\n1. Create a content type with title and image fields\n \n2. Create content type with title and relationship fields, and related to the previously created content type\n \n3. Upload an image\n \n4. Create a content with the content type from step 1\n \n5. Create a content with the content type from step 2 and relate it to the content created in step 4\n \n6. Create a page\n \n7. Add to the page both contents\n \n8. Render the page and check data in depth = 2", + "event": [ + { + "listen": "prerequest", + "script": { + "type": "text/javascript", + "packages": {}, + "exec": [ + "" + ] + } + }, + { + "listen": "test", + "script": { + "type": "text/javascript", + "packages": {}, + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});" + ] + } + } + ] + } + ] + }, + { + "name": "Layout [/api/v1/page/{page-id}/layout]", + "item": [ + { + "name": "invalidateSession", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{serverURL}}/api/v1/logout", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "logout" + ] + } + }, + "response": [] + }, + { + "name": "GivenInvalidUser_ShouldReturn401", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "", + "pm.test(\"Status code is 401, Need credentials\", function () {", + " pm.response.to.have.status(401);", + "});", + "", + "", + "", + "pm.test(\"Response body matches\", function () {", + " pm.expect(pm.response.text()).to.include(\"Invalid User\");", + "});", + "" + ], + "type": "text/javascript" + } + } + ], + "request": { + "auth": { + "type": "noauth" + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\"title\":null,\"layout\":{\"body\":{\"rows\":[{\"columns\":[{\"leftOffset\":1,\"width\":7,\"containers\":[{\"identifier\":\"a050073a-a31e-4aab-9307-86bfb248096a\",\"uuid\":\"1\"}]},{\"leftOffset\":8,\"width\":4,\"containers\":[{\"identifier\":\"5363c6c6-5ba0-4946-b7af-cf875188ac2e\",\"uuid\":\"1\"}]}]}]},\"header\":true,\"footer\":true,\"sidebar\":{\"location\":\"\",\"containers\":[],\"width\":\"small\"}}}" + }, + "url": { + "raw": "{{serverURL}}/api/v1/page/bec7b960-a8bf-4f14-a22b-0d94caf217f0/layout", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "page", + "bec7b960-a8bf-4f14-a22b-0d94caf217f0", + "layout" + ] + }, + "description": "@Path(\"/{pageId}/layout\")" + }, + "response": [] + }, + { + "name": "GivenValidLayout_ShouldSaveLayout", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Response code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "pm.test(\"Response body contains 'rendered'\", function () {", + " pm.expect(pm.response.text()).to.include(\"rendered\");", + "});", + "", + "var jsonData = pm.response.json();", + "", + "pm.test(\"'Containers' section contains expected containers\", function () {", + " var containers = jsonData[\"entity\"][\"containers\"];", + " pm.expect(containers[\"//demo.dotcms.com/application/containers/default/\"].container.identifier).equal(\"69b3d24d-7e80-4be6-b04a-d352d16493ee\");", + "", + " pm.expect(containers[\"5a07f889-4536-4956-aa6e-e7967969ec3f\"].container.identifier).equal(\"5a07f889-4536-4956-aa6e-e7967969ec3f\");", + "});", + "", + "", + "var layout = jsonData[\"entity\"][\"layout\"];", + "var rows = layout[\"body\"][\"rows\"];", + "var columns = layout[\"body\"][\"rows\"][0][\"columns\"];", + "pm.expect(columns.length).equal(2);", + "", + "// column 1 ", + "var column1 = columns[0];", + "var containersColumn1 = column1[\"containers\"];", + "", + "// column 2", + "var column2 = columns[1];", + "var containersColumn2 = column2[\"containers\"];", + "", + "", + "", + "pm.test(\"Layout has 1 row\", function () {", + " pm.expect(rows.length).equal(1);", + "});", + "", + "pm.test(\"First row has 2 columns\", function () {", + " pm.expect(columns.length).equal(2);", + "});", + "", + "pm.test(\"First column has width of 7 \", function () {", + " pm.expect(column1[\"width\"]).equal(7);", + "}); ", + "", + "pm.test(\"First column has 1 container with expected identifier\", function () {", + " pm.expect(containersColumn1.length).equal(1);", + " pm.expect(containersColumn1[0].identifier).equal(\"//demo.dotcms.com/application/containers/default/\");", + "}); ", + "", + "pm.test(\"Second column has width of 4 \", function () {", + " pm.expect(column2[\"width\"]).equal(4);", + "}); ", + "", + "pm.test(\"Second column has 1 container with expected identifier\", function () {", + " pm.expect(containersColumn2.length).equal(1);", + " pm.expect(containersColumn2[0].identifier).equal(\"5a07f889-4536-4956-aa6e-e7967969ec3f\");", + "}); ", + "", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"title\": null,\n \"layout\": {\n \"body\": {\n \"rows\": [\n {\n \"columns\": [\n {\n \"leftOffset\": 1,\n \"width\": 7,\n \"containers\": [\n {\n \"identifier\": \"//demo.dotcms.com/application/containers/default/\", \n \"uuid\": \"1\"\n }\n ]\n },\n {\n \"leftOffset\": 8,\n \"width\": 4,\n \"containers\": [\n {\n \"identifier\": \"5a07f889-4536-4956-aa6e-e7967969ec3f\",\n \"uuid\": \"1\"\n }\n ]\n }\n ]\n }\n ]\n },\n \"header\": true,\n \"footer\": true,\n \"sidebar\": {\n \"location\": \"\",\n \"containers\": [],\n \"width\": \"small\"\n }\n }\n}" + }, + "url": { + "raw": "{{serverURL}}/api/v1/page/bec7b960-a8bf-4f14-a22b-0d94caf217f0/layout", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "page", + "bec7b960-a8bf-4f14-a22b-0d94caf217f0", + "layout" + ] + }, + "description": "@Path(\"/{pageId}/layout\")" + }, + "response": [] + }, + { + "name": "GivenInvalidPageId_ShouldReturn404", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "", + "pm.test(\"Status code is 404\", function () {", + " pm.response.to.have.status(404);", + "});", + "", + "", + "", + "pm.test(\"Response body contains\", function () {", + " pm.expect(pm.response.text()).to.include(\"Unable to find page with Identifier: 2c12fe7e6-d338-49d5-973b-2d974d57015b\");", + "});", + "", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\"title\":null,\"layout\":{\"body\":{\"rows\":[{\"columns\":[{\"leftOffset\":1,\"width\":7,\"containers\":[{\"identifier\":\"a050073a-a31e-4aab-9307-86bfb248096a\",\"uuid\":\"1\"}]},{\"leftOffset\":8,\"width\":4,\"containers\":[{\"identifier\":\"5363c6c6-5ba0-4946-b7af-cf875188ac2e\",\"uuid\":\"1\"}]}]}]},\"header\":true,\"footer\":true,\"sidebar\":{\"location\":\"\",\"containers\":[],\"width\":\"small\"}}}" + }, + "url": { + "raw": "{{serverURL}}/api/v1/page/2c12fe7e6-d338-49d5-973b-2d974d57015b/layout", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "page", + "2c12fe7e6-d338-49d5-973b-2d974d57015b", + "layout" + ] + }, + "description": "@Path(\"/{pageId}/layout\")" + }, + "response": [] + }, + { + "name": "RequestWihoutParameters", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "", + "pm.test(\"Status code is 400\", function () {", + " pm.response.to.have.status(400);", + "});", + "", + "", + "", + "pm.test(\"Response body contains\", function () {", + " pm.expect(pm.response.text()).to.include(\"required\");", + "});", + "", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "" + }, + "url": { + "raw": "{{serverURL}}/api/v1/page/bec7b960-a8bf-4f14-a22b-0d94caf217f0/layout", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "page", + "bec7b960-a8bf-4f14-a22b-0d94caf217f0", + "layout" + ] + }, + "description": "@Path(\"/{pageId}/layout\")" + }, + "response": [] + }, + { + "name": "BadRequest", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "", + "pm.test(\"Status code is 400\", function () {", + " pm.response.to.have.status(400);", + "});", + "", + "", + "", + "pm.test(\"Response body contains\", function () {", + " pm.expect(pm.response.text()).to.include(\"Unrecognized field\");", + "});", + "", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\"2title\":null,\"layout\":{\"body\":{\"rows\":[{\"columns\":[{\"leftOffset\":1,\"width\":7,\"containers\":[{\"identifier\":\"a050073a-a31e-4aab-9307-86bfb248096a\",\"uuid\":\"1\"}]},{\"leftOffset\":8,\"width\":4,\"containers\":[{\"identifier\":\"5363c6c6-5ba0-4946-b7af-cf875188ac2e\",\"uuid\":\"1\"}]}]}]},\"header\":true,\"footer\":true,\"sidebar\":{\"location\":\"\",\"containers\":[],\"width\":\"small\"}}}" + }, + "url": { + "raw": "{{serverURL}}/api/v1/page/bec7b960-a8bf-4f14-a22b-0d94caf217f0/layout", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "page", + "bec7b960-a8bf-4f14-a22b-0d94caf217f0", + "layout" + ] + }, + "description": "@Path(\"/{pageId}/layout\")" + }, + "response": [] + } + ], + "event": [ + { + "listen": "prerequest", + "script": { + "type": "text/javascript", + "exec": [ + "" + ] + } + }, + { + "listen": "test", + "script": { + "type": "text/javascript", + "exec": [ + "" + ] + } + } + ] + }, + { + "name": "Add Content [/api/v1/page/{page-id}/content]", + "item": [ + { + "name": "Test_RespectOrder", + "item": [ + { + "name": "ImportBundle", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Success import\", function () {", + " var jsonData = pm.response.json();", + " console.log(jsonData);", + " pm.expect(jsonData[\"status\"]).to.eql(\"SUCCESS\");", + "});" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/octet-stream" + }, + { + "key": "Content-Disposition", + "value": "attachment" + } + ], + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "file", + "type": "file", + "src": "resources/testRespectOrder_Bundle.tar.gz" + } + ] + }, + "url": { + "raw": "{{serverURL}}/api/bundle/sync", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "bundle", + "sync" + ], + "query": [ + { + "key": "AUTH_TOKEN", + "value": "", + "disabled": true + } + ] + }, + "description": "Imports a Bundle that includes:\n\n* Page (testRespectOrder)\n* 2 Content (testOrder1 and testOrder2)" + }, + "response": [] + }, + { + "name": "Get Page To Check Order", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Response reorder check\", function () {", + " pm.expect(pm.response.text()).to.include(\"

testOrder2

testOrder1

\");", + "", + "});" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{serverURL}}/api/v1/page/render/testrespectorder?language_id=1&host_id=8a7d5e23-da1e-420a-b4f0-471e7da8ea2d", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "page", + "render", + "testrespectorder" + ], + "query": [ + { + "key": "language_id", + "value": "1" + }, + { + "key": "host_id", + "value": "8a7d5e23-da1e-420a-b4f0-471e7da8ea2d" + } + ] + } + }, + "response": [] + }, + { + "name": "ReorderContents", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Response body contains\", function () {", + " pm.expect(pm.response.text()).to.include(\"ok\");", + "});" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "[{\"identifier\":\"//default/application/containers/system/\",\"uuid\":\"1\",\"contentletsId\":[\"ffba6c6b2e90ce4dcc2a553c6b860822\",\"844cdd64de4fd9418613b3b53f860c6f\"]}]" + }, + "url": { + "raw": "{{serverURL}}/api/v1/page/773c1d064bfedacf26986a67ee90b490/content", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "page", + "773c1d064bfedacf26986a67ee90b490", + "content" + ] + }, + "description": "Reorder the page contents." + }, + "response": [] + }, + { + "name": "Get Page To Check Reorder", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Response reorder check\", function () {", + " pm.expect(pm.response.text()).to.include(\"

testOrder1

testOrder2

\");", + "", + "});" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{serverURL}}/api/v1/page/render/testrespectorder?language_id=1&host_id=8a7d5e23-da1e-420a-b4f0-471e7da8ea2d", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "page", + "render", + "testrespectorder" + ], + "query": [ + { + "key": "language_id", + "value": "1" + }, + { + "key": "host_id", + "value": "8a7d5e23-da1e-420a-b4f0-471e7da8ea2d" + } + ] + } + }, + "response": [] + } + ], + "event": [ + { + "listen": "prerequest", + "script": { + "type": "text/javascript", + "packages": {}, + "exec": [ + "" + ] + } + }, + { + "listen": "test", + "script": { + "type": "text/javascript", + "packages": {}, + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "" + ] + } + } + ] + }, + { + "name": "invalidateSession", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{serverURL}}/api/v1/logout", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "logout" + ] + } + }, + "response": [] + }, + { + "name": "UserAuthenticationValidation", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "", + "pm.test(\"Status code is 401, Need credentials\", function () {", + " pm.response.to.have.status(401);", + "});", + "", + "pm.test(\"Response body matches\", function () {", + " pm.expect(pm.response.text()).to.include(\"Invalid User\");", + "});", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "auth": { + "type": "noauth" + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "[{\"identifier\":\"a050073a-a31e-4aab-9307-86bfb248096a\",\"uuid\":\"1\",\"contentletsId\":[\"767509b1-2392-4661-a16b-e0e31ce27719\",\"3c30df49-ea78-417a-93ce-631cd25bc66c\"]},{\"identifier\":\"5363c6c6-5ba0-4946-b7af-cf875188ac2e\",\"uuid\":\"1\",\"contentletsId\":[\"2efc77b4-a54f-479b-8a81-a133b9e6da04\",\"5aef0c62-b7d6-4805-9e7c-77a67f4822f3\",\"66d47ebf-7b11-4076-85b0-b6c8c373d000\"]}]" + }, + "url": { + "raw": "{{serverURL}}/api/v1/page/bec7b960-a8bf-4f14-a22b-0d94caf217f0/content", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "page", + "bec7b960-a8bf-4f14-a22b-0d94caf217f0", + "content" + ] + }, + "description": "@Path(\"{pageId}/content\")" + }, + "response": [] + }, + { + "name": "SuccessRequest", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "pm.test(\"Response body contains\", function () {", + " pm.expect(pm.response.text()).to.include(\"ok\");", + "});", + "", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "[{\"identifier\":\"5a07f889-4536-4956-aa6e-e7967969ec3f\",\"uuid\":\"1\",\"contentletsId\":[\"d4ed1990-b151-42ca-9bca-0725b07260de\"]},{\"identifier\":\"//demo.dotcms.com/application/containers/default/\",\"uuid\":\"1\",\"contentletsId\":[\"f827c41a-5689-4733-b4d7-916d3a31c9c6\",\"7c9cb3a7-bb68-4fd0-b21d-03ec4be491a7\"]}]" + }, + "url": { + "raw": "{{serverURL}}/api/v1/page/bec7b960-a8bf-4f14-a22b-0d94caf217f0/content", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "page", + "bec7b960-a8bf-4f14-a22b-0d94caf217f0", + "content" + ] + }, + "description": "Adds Content to a Page, the container, template, page and contentlets are imported.\n\n7c9cb3a7-bb68-4fd0-b21d-03ec4be491a7 = container Banner\n7c9cb3a7-bb68-4fd0-b21d-03ec4be491a7e = Banner contentlet\n7c9cb3a7-bb68-4fd0-b21d-03ec4be491a7 = Container as File Default\nf827c41a-5689-4733-b4d7-916d3a31c9c6 = Rich Text Contentlet\n7c9cb3a7-bb68-4fd0-b21d-03ec4be491a7 = Widget Contentlet" + }, + "response": [] + }, + { + "name": "Save Contentlets Not Valid BadRequest 400", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code is 400\", function () {", + " pm.response.to.have.status(400);", + "});" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "[{\"identifier\":\"5a07f889-4536-4956-aa6e-e7967969ec3f\",\"uuid\":\"1\",\"contentletsId\":[\"f827c41a-5689-4733-b4d7-916d3a31c9c6\"]}]" + }, + "url": { + "raw": "{{serverURL}}/api/v1/page/bec7b960-a8bf-4f14-a22b-0d94caf217f0/content", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "page", + "bec7b960-a8bf-4f14-a22b-0d94caf217f0", + "content" + ] + }, + "description": "@Path(\"{pageId}/content\")" + }, + "response": [] + }, + { + "name": "InvalidPageId", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code is 404\", function () {", + " pm.response.to.have.status(404);", + "});", + "", + "pm.test(\"Response body contains\", function () {", + " pm.expect(pm.response.text()).to.include(\"Page '2c12fe7e6-d338-49d5-973b-2d974d57015b' not found\");", + "});", + "", + "", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "[{\"identifier\":\"a050073a-a31e-4aab-9307-86bfb248096a\",\"uuid\":\"1\",\"contentletsId\":[\"767509b1-2392-4661-a16b-e0e31ce27719\",\"3c30df49-ea78-417a-93ce-631cd25bc66c\"]},{\"identifier\":\"5363c6c6-5ba0-4946-b7af-cf875188ac2e\",\"uuid\":\"1\",\"contentletsId\":[\"2efc77b4-a54f-479b-8a81-a133b9e6da04\",\"5aef0c62-b7d6-4805-9e7c-77a67f4822f3\",\"66d47ebf-7b11-4076-85b0-b6c8c373d000\"]}]" + }, + "url": { + "raw": "{{serverURL}}/api/v1/page/2c12fe7e6-d338-49d5-973b-2d974d57015b/content", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "page", + "2c12fe7e6-d338-49d5-973b-2d974d57015b", + "content" + ] + }, + "description": "@Path(\"{pageId}/content\")" + }, + "response": [] + }, + { + "name": "RequestWihoutParameters", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "", + "pm.test(\"Status code is 400\", function () {", + " pm.response.to.have.status(400);", + "});", + "", + "pm.test(\"Layout is required\", function () {", + " pm.expect(pm.response.text()).to.include(\"Layout is required\");", + "});", + "", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "" + }, + "url": { + "raw": "{{serverURL}}/api/v1/page/bec7b960-a8bf-4f14-a22b-0d94caf217f0/content", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "page", + "bec7b960-a8bf-4f14-a22b-0d94caf217f0", + "content" + ] + }, + "description": "@Path(\"{pageId}/content\")" + }, + "response": [] + }, + { + "name": "BadRequest", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "", + "pm.test(\"Status code is 400\", function () {", + " pm.response.to.have.status(400);", + "});", + "", + "pm.test(\"Response body contains\", function () {", + " pm.expect(pm.response.text()).to.include(\"Container id and uuid are required\");", + "});", + "", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "[{\"id222\":\"a050073a-a31e-4aab-9307-86bfb248096a\",\"uuid\":\"1\",\"contentlets\":[\"767509b1-2392-4661-a16b-e0e31ce27719\",\"3c30df49-ea78-417a-93ce-631cd25bc66c\"]},{\"id\":\"5363c6c6-5ba0-4946-b7af-cf875188ac2e\",\"uuid22\":\"1\",\"contentlets\":[\"2efc77b4-a54f-479b-8a81-a133b9e6da04\",\"5aef0c62-b7d6-4805-9e7c-77a67f4822f3\",\"66d47ebf-7b11-4076-85b0-b6c8c373d000\"]}]" + }, + "url": { + "raw": "{{serverURL}}/api/v1/page/bec7b960-a8bf-4f14-a22b-0d94caf217f0/content", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "page", + "bec7b960-a8bf-4f14-a22b-0d94caf217f0", + "content" + ] + }, + "description": "@Path(\"{pageId}/content\")" + }, + "response": [] + }, + { + "name": "Save Content Upsert Duplicated Containers Body", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "pm.test(\"Response body contains\", function () {", + " pm.expect(pm.response.text()).to.include(\"ok\");", + "});", + "", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "[\n {\n \"identifier\":\"//demo.dotcms.com/application/containers/default/\",\n \"uuid\":\"1\",\n \"contentletsId\":[\"7c9cb3a7-bb68-4fd0-b21d-03ec4be491a7\"]\n },\n {\n \"identifier\":\"//demo.dotcms.com/application/containers/default/\",\n \"uuid\":\"1\",\n \"contentletsId\":[\"f827c41a-5689-4733-b4d7-916d3a31c9c6\"]\n },\n {\n \"identifier\":\"//demo.dotcms.com/application/containers/default/\",\n \"uuid\":\"1\",\n \"contentletsId\":[\"7c9cb3a7-bb68-4fd0-b21d-03ec4be491a7\"]\n }\n]", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{serverURL}}/api/v1/page/bec7b960-a8bf-4f14-a22b-0d94caf217f0/content", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "page", + "bec7b960-a8bf-4f14-a22b-0d94caf217f0", + "content" + ] + }, + "description": "This test is for when users make a request sending at the Body the same container and uuid diff times.\nThis will merge all those contentlets and save the page successfully." + }, + "response": [] + } + ], + "description": " @Path(\"{pageId}/content\")", + "event": [ + { + "listen": "prerequest", + "script": { + "type": "text/javascript", + "exec": [ + "" + ] + } + }, + { + "listen": "test", + "script": { + "type": "text/javascript", + "exec": [ + "" + ] + } + } + ] + }, + { + "name": "Render HTML [/api/v1/page/renderHTML]", + "item": [ + { + "name": "invalidateSession", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{serverURL}}/api/v1/logout", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "logout" + ] + } + }, + "response": [] + }, + { + "name": "UserAuthenticationValidation", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "", + "pm.test(\"Status code is 401, Need credentials\", function () {", + " pm.response.to.have.status(401);", + "});", + "", + "pm.test(\"Invalid User\", function () {", + " pm.expect(pm.response.text()).to.include(\"Invalid User\");", + "});", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "auth": { + "type": "noauth" + }, + "method": "GET", + "header": [], + "url": { + "raw": "{{serverURL}}/api/v1/page/renderHTML/destinations/costa-rica", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "page", + "renderHTML", + "destinations", + "costa-rica" + ] + }, + "description": "@Path(\"/renderHTML/{uri: .*}\")" + }, + "response": [] + }, + { + "name": "pre_ImportBundleWithDemoHost", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Bundle uploaded sucessfully\", function () {", + " pm.response.to.have.status(200);", + "", + " var jsonData = pm.response.json();", + " console.log(jsonData);", + "", + " pm.expect(jsonData[\"bundleName\"]).to.eql(\"demo.dotcms.com.tar.gz\");", + " pm.expect(jsonData[\"status\"]).to.eql(\"SUCCESS\");", + "});" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/octet-stream" + }, + { + "key": "Content-Disposition", + "value": "attachment" + } + ], + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "file", + "type": "file", + "src": "resources/GraphQL/demo.dotcms.com.tar.gz" + } + ] + }, + "url": { + "raw": "{{serverURL}}/api/bundle/sync", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "bundle", + "sync" + ], + "query": [ + { + "key": "AUTH_TOKEN", + "value": "", + "disabled": true + } + ] + }, + "description": "Imports a Bundle that includes:\n* Imports demo.dotcms.com" + }, + "response": [] + }, + { + "name": "SuccessRequest", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "pm.test(\"renders expected HTML only\", function () {", + " pm.expect(pm.response.text().startsWith(\"\")).to.be.true;", + " pm.expect(pm.response.text()).to.include(\"body id=\\\"costa-rica-rain-forest\\\"\");", + "});", + "", + "", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{serverURL}}/api/v1/page/renderHTML/destinations/costa-rica", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "page", + "renderHTML", + "destinations", + "costa-rica" + ] + }, + "description": "@Path(\"/renderHTML/{uri: .*}\")" + }, + "response": [] + }, + { + "name": "InvalidPageURL", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code is 404\", function () {", + " pm.response.to.have.status(404);", + "});", + "", + "pm.test(\"Valid response\", function () {", + " pm.expect(pm.response.text()).to.include(\"Page \\'about-us/our-team/index2\\' not found\");", + "});", + "", + "", + "", + "", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{serverURL}}/api/v1/page/renderHTML/about-us/our-team/index2", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "page", + "renderHTML", + "about-us", + "our-team", + "index2" + ] + }, + "description": "@Path(\"/renderHTML/{uri: .*}\")" + }, + "response": [] + } + ], + "event": [ + { + "listen": "prerequest", + "script": { + "type": "text/javascript", + "exec": [ + "" + ] + } + }, + { + "listen": "test", + "script": { + "type": "text/javascript", + "exec": [ + "" + ] + } + } + ] + }, + { + "name": "Whats Changed", + "item": [ + { + "name": "pre_ImportBundle", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Bundle imported\", function () {", + " var jsonData = pm.response.json();", + " console.log(jsonData);", + "", + " pm.expect(jsonData[\"bundleName\"]).to.contains(\"testWhatsChanged\");", + " pm.expect(jsonData[\"status\"]).to.eql(\"SUCCESS\");", + "});" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "auth": { + "type": "basic", + "basic": [ + { + "key": "password", + "value": "admin", + "type": "string" + }, + { + "key": "username", + "value": "admin@dotcms.com", + "type": "string" + }, + { + "key": "saveHelperData", + "type": "any" + }, + { + "key": "showPassword", + "value": false, + "type": "boolean" + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/octet-stream" + }, + { + "key": "Content-Disposition", + "value": "attachment" + } + ], + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "file", + "type": "file", + "src": "resources/testWhatsChanged-01FTGYNEP672VF4KFRFWSX3RPT.tar.gz" + } + ] + }, + "url": { + "raw": "{{serverURL}}/api/bundle/sync", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "bundle", + "sync" + ], + "query": [ + { + "key": "AUTH_TOKEN", + "value": "", + "disabled": true + } + ] + }, + "description": "Imports a Bundle that includes: a page with content, the content has diff versions working and live" + }, + "response": [] + }, + { + "name": "Check Whats Changed Endpoint", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"There are diff between live and working page\", function () {", + " var jsonData = pm.response.json().entity;", + " pm.expect(jsonData[\"diff\"]).equal(true);", + "});" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{serverURL}}/api/v1/page/8afe50bc66533c6f0ed7711d74654b80/render/versions", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "page", + "8afe50bc66533c6f0ed7711d74654b80", + "render", + "versions" + ] + } + }, + "response": [] + } + ], + "event": [ + { + "listen": "prerequest", + "script": { + "type": "text/javascript", + "packages": {}, + "exec": [ + "" + ] + } + }, + { + "listen": "test", + "script": { + "type": "text/javascript", + "packages": {}, + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});" + ] + } + } + ] + }, + { + "name": "TestHostVariables", + "item": [ + { + "name": "Create new Site For Test Host Variables", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "var jsonData = pm.response.json();", + "", + "pm.test(\"Host check\", function () {", + " pm.expect(jsonData.entity.siteName).to.eql('sitevariables.site.com');", + "});", + "", + "pm.collectionVariables.set(\"siteIdTestHost\", jsonData.entity.identifier);", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n \"siteName\":\"sitevariables.site.com\"\n\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{serverURL}}/api/v1/site", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "site" + ] + } + }, + "response": [] + }, + { + "name": "Publish Site", + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "{{serverURL}}/api/v1/site/{{siteIdTestHost}}/_publish", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "site", + "{{siteIdTestHost}}", + "_publish" + ] + } + }, + "response": [] + }, + { + "name": "Add Site Variable", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code should be 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "var jsonData = pm.response.json();", + "", + "pm.test(\"Host check\", function () {", + " pm.expect(jsonData.entity.key).to.eql('onevar1');", + "});", + "", + "pm.collectionVariables.set(\"sitevariableIdTestHost\", jsonData.entity.id);", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "PUT", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n \"siteId\":\"{{siteIdTestHost}}\",\n \"name\":\"onevar1\",\n \"key\":\"onevar1\",\n \"value\":\"onevar-value\"\n}\n", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{serverURL}}/api/v1/site/variable", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "site", + "variable" + ] + } + }, + "response": [] + }, + { + "name": "CreateNewContainer Test Host Variables", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"No errors\", function () {", + " ", + " var jsonData = pm.response.json();", + " pm.expect(jsonData.errors.length).to.eql(0);", + "});", + "", + "pm.test(\"Information Saved Correctly\", function () {", + " ", + " var jsonData = pm.response.json();", + " pm.expect(jsonData.entity.title).to.eql(\"TestContainerHostVariables\");", + " pm.expect(jsonData.entity.notes).to.eql(\"Notes\");", + " ", + " ", + "});", + "", + "var jsonData = pm.response.json();", + "pm.collectionVariables.set(\"containeridentifier\", jsonData.entity.identifier);", + "pm.collectionVariables.set(\"inode\", jsonData.entity.inode);", + "", + "", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"title\":\"TestContainerHostVariables\",\n \"friendlyName\":\"TestContainer description HostVariables\",\n \"maxContentlets\":1,\n \"notes\":\"Notes\",\n \"preLoop\":\"preLoop $host_variable.onevar1\",\n \"postLoop\":\"postLoop xxxx\",\n \"containerStructures\":[\n {\n \"structureId\":\"webPageContent\",\n \"code\":\"$title on container\"\n }\n ]\n\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{serverURL}}/api/v1/containers", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "containers" + ] + }, + "description": "Create a container" + }, + "response": [] + }, + { + "name": "SavePublishNewTemplateTestHostVariables", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "var jsonData = pm.response.json();", + "", + "pm.test(\"live check\", function () {", + " pm.expect(jsonData.entity.live).to.eql(true);", + "});", + "", + "", + "pm.test(\"Title check\", function () {", + " pm.expect(jsonData.entity.title).to.eql('PostMan Test Save Publish Test Host Variables');", + "});", + "", + "pm.collectionVariables.set(\"templateIdToPublishedHost\", jsonData.entity.identifier);", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "PUT", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n \"title\":\"PostMan Test Save Publish Test Host Variables\",\n \"friendlyName\":\"This is a postman test description\",\n \"body\":\"#parseContainer('{{containeridentifier}}','1659543155955')\"\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{serverURL}}/api/v1/templates/_savepublish", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "templates", + "_savepublish" + ] + } + }, + "response": [] + }, + { + "name": "Create Page using the template", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "var jsonData = pm.response.json();", + "", + "pm.test(\"Path check\", function () {", + " pm.expect(jsonData.entity.path).to.eql(\"/testpagehostvariables\");", + "});", + "", + "", + "", + "var jsonData = pm.response.json();", + "pm.collectionVariables.set(\"pageUrlHostVariablestest\", pm.response.json().path);", + "", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "PUT", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"contentlet\": {\n \"contentType\": \"htmlpageasset\",\n \"hostFolder\": \"{{siteIdTestHost}}\",\n \"title\": \"Test Page Host variables\",\n \"url\": \"testpagehostvariables\",\n \"template\":\"{{templateIdToPublishedHost}}\",\n \"sortOrder\":1,\n \"cachettl\":\"0\",\n \"friendlyName\":\"testpagehostvariables\"\n\n }\n}" + }, + "url": { + "raw": "{{serverURL}}/api/v1/workflow/actions/default/fire/PUBLISH", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "workflow", + "actions", + "default", + "fire", + "PUBLISH" + ] + }, + "description": "Fire any action using the actionId\n\nOptional: If you pass ?inode={inode}, you don't need body here.\n\n@Path(\"/actions/{actionId}/fire\")" + }, + "response": [] + }, + { + "name": "Test the host variables", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "var text = pm.response.text();", + "", + "pm.test(\"Path check\", function () {", + " pm.expect(text).to.include(\"onevar-value\");", + "});", + "", + "", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{serverURL}}/api/v1/page/render/testpagehostvariables?language_id=1&host_id={{siteIdTestHost}}", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "page", + "render", + "testpagehostvariables" + ], + "query": [ + { + "key": "language_id", + "value": "1" + }, + { + "key": "host_id", + "value": "{{siteIdTestHost}}" + } + ] + } + }, + "response": [] + } + ], + "description": "1. This test creates a Host with two variables\n2. Creates a container with the generic contentlet and use this two variables\n3. Creates a template that uses this container\n4. creates a page that uses this page\n5. Check that the page exists.", + "event": [ + { + "listen": "prerequest", + "script": { + "type": "text/javascript", + "packages": {}, + "exec": [ + "" + ] + } + }, + { + "listen": "test", + "script": { + "type": "text/javascript", + "packages": {}, + "exec": [ + "pm.test(\"Response code should be 200\", function () {", + " pm.response.to.have.status(200);", + "});" + ] + } + } + ] + }, + { + "name": "In-Place Content Copy", + "item": [ + { + "name": "Create Test Page", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Test Page created successfully\", function () {", + " var jsonData = pm.response.json();", + " pm.expect(jsonData.errors.length).to.eql(0);", + " pm.collectionVariables.set(\"pageIdentifier\", jsonData.entity.identifier);", + "});" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "PUT", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n\t\n\t\"contentlet\": {\n\t\t\"contentType\":\"htmlpageasset\",\n \"title\":\"testPageCopy\",\n \"url\":\"testPageCopy\",\n \"hostFolder\":\"default\",\n \"template\":\"SYSTEM_TEMPLATE\",\n \"friendlyName\":\"testPageCopy\",\n \"cachettl\":0\n\t\t\n\t}\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{serverURL}}/api/v1/workflow/actions/default/fire/PUBLISH?indexPolicy=WAIT_FOR", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "workflow", + "actions", + "default", + "fire", + "PUBLISH" + ], + "query": [ + { + "key": "indexPolicy", + "value": "WAIT_FOR" + } + ] + } + }, + "response": [] + }, + { + "name": "Create Test Rich Text Contentlet", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Test Rich Text created successfully\", function () {", + " var jsonData = pm.response.json();", + " pm.expect(jsonData.errors.length).to.eql(0);", + " pm.collectionVariables.set(\"richContentIdentifier\", jsonData.entity.identifier);", + "});" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "PUT", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n\t\n\t\"contentlet\": {\n\t\t\"contentType\":\"webPageContent\",\n \"title\":\"textContent\",\n \"contentHost\":\"default\",\n \"body\":\"Text Content Body\"\n \n\t}\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{serverURL}}/api/v1/workflow/actions/default/fire/PUBLISH?indexPolicy=WAIT_FOR", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "workflow", + "actions", + "default", + "fire", + "PUBLISH" + ], + "query": [ + { + "key": "indexPolicy", + "value": "WAIT_FOR" + } + ] + } + }, + "response": [] + }, + { + "name": "Add Test Content To Test Page", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Test Content added to Test Page successfuly\", function () {", + " var jsonData = pm.response.json();", + " pm.expect(jsonData.errors.length).to.eql(0);", + "});" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "[\n {\n \"identifier\": \"SYSTEM_CONTAINER\",\n \"uuid\": \"1\",\n \"contentletsId\": [\n \"{{richContentIdentifier}}\"\n ]\n }\n]", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{serverURL}}/api/v1/page/{{pageIdentifier}}/content", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "page", + "{{pageIdentifier}}", + "content" + ] + } + }, + "response": [] + }, + { + "name": "Check That Multi-Tree Data Is Correct", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Retrieving Multi-Tree data for test Contentlet\", function () {", + " var entity = pm.response.json().entity;", + " var testContentId = pm.collectionVariables.get(\"richContentIdentifier\");", + " var found = false;", + " entity.forEach((treeEntry) => {", + "", + " if (testContentId == treeEntry.contentId) {", + " pm.collectionVariables.set(\"containerId\", treeEntry.containerId);", + " pm.collectionVariables.set(\"contentId\", treeEntry.contentId);", + " pm.collectionVariables.set(\"pageId\", treeEntry.pageId);", + " pm.collectionVariables.set(\"personalization\", treeEntry.personalization);", + " pm.collectionVariables.set(\"relationType\", treeEntry.relationType);", + " pm.collectionVariables.set(\"treeOrder\", treeEntry.treeOrder);", + " pm.collectionVariables.set(\"variantId\", treeEntry.variantId);", + " found = true;", + " }", + "", + " });", + " if (!found) {", + " pm.expect.fail(\"Expected test Contentlet with ID '\" + testContentId + \"' was not found\");", + " }", + "});" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{serverURL}}/api/v1/page/{{pageIdentifier}}/content/tree", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "page", + "{{pageIdentifier}}", + "content", + "tree" + ] + } + }, + "response": [] + }, + { + "name": "In-Place Copy Of Test Contentlet", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"HTTP Status code must be 200\", function () {", + " var jsonData = pm.response.json();", + " pm.expect(jsonData.entity.title).to.equal(\"textContent\");", + " pm.collectionVariables.set(\"copiedRichContentIdentifier\", jsonData.entity.identifier);", + "});", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "PUT", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n \"containerId\": \"{{containerId}}\",\n \"contentId\": \"{{contentId}}\",\n \"pageId\": \"{{pageId}}\",\n \"personalization\": \"{{personalization}}\",\n \"relationType\": \"{{relationType}}\",\n \"treeOrder\": \"{{treeOrder}}\",\n \"variantId\": \"{{variantId}}\"\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{serverURL}}/api/v1/page/copyContent", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "page", + "copyContent" + ] + } + }, + "response": [] + }, + { + "name": "Check Multitree Data After In-Place Copy", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Checking that duplicate Contentlet has replaced the existing one\", function () {", + " var entity = pm.response.json().entity;", + "", + " var containerId = pm.collectionVariables.get(\"containerId\");", + " var contentId = pm.collectionVariables.get(\"copiedRichContentIdentifier\");", + " var pageId = pm.collectionVariables.get(\"pageId\");", + " var personalization = pm.collectionVariables.get(\"personalization\");", + " var relationType = pm.collectionVariables.get(\"relationType\");", + " var variantId = pm.collectionVariables.get(\"variantId\");", + " ", + " var found = false;", + " entity.forEach((treeEntry) => {", + "", + " if (contentId == treeEntry.contentId) {", + " found = true;", + " pm.expect(treeEntry.containerId).to.eql(containerId);", + " pm.expect(treeEntry.contentId).to.eql(contentId);", + " pm.expect(treeEntry.pageId).to.eql(pageId);", + " pm.expect(treeEntry.personalization).to.eql(personalization);", + " pm.expect(treeEntry.relationType).to.eql(relationType);", + " pm.expect(treeEntry.variantId).to.eql(variantId);", + " }", + "", + " });", + " if (!found) {", + " pm.expect.fail(\"Copied test Contentlet with ID '\" + contentId + \"' was not found\");", + " }", + "});" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{serverURL}}/api/v1/page/{{pageIdentifier}}/content/tree", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "page", + "{{pageIdentifier}}", + "content", + "tree" + ] + } + }, + "response": [] + }, + { + "name": "Copy Non-Existing Contentlet", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Checking that the error message is present\", function () {", + " var jsonData = pm.response.json();", + " pm.expect(jsonData.message).not.eq(\"\");", + "});" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "PUT", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n \"containerId\": \"{{containerId}}\",\n \"contentId\": \"{{contentId}}xxx\",\n \"pageId\": \"{{pageId}}\",\n \"personalization\": \"{{personalization}}\",\n \"relationType\": \"{{relationType}}\",\n \"treeOrder\": \"{{treeOrder}}\",\n \"variantId\": \"{{variantId}}\"\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{serverURL}}/api/v1/page/copyContent", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "page", + "copyContent" + ] + } + }, + "response": [] + }, + { + "name": "Copy Contentlet to Non-Existing Container", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Checking that the error message is present\", function () {", + " var jsonData = pm.response.json();", + " pm.expect(jsonData.message).not.eq(\"\");", + "});" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "PUT", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n \"containerId\": \"{{containerId}}xx\",\n \"contentId\": \"{{contentId}}\",\n \"pageId\": \"{{pageId}}\",\n \"personalization\": \"{{personalization}}\",\n \"relationType\": \"{{relationType}}\",\n \"treeOrder\": \"{{treeOrder}}\",\n \"variantId\": \"{{variantId}}\"\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{serverURL}}/api/v1/page/copyContent", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "page", + "copyContent" + ] + } + }, + "response": [] + }, + { + "name": "Deep-Clone Test Page", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Validate page has been copied\", function () {", + " var jsonData = pm.response.json();", + " pm.expect(jsonData.entity.title).to.equal(\"testPageCopy\");", + " pm.collectionVariables.set(\"pageDeepCopyIdentifier\", jsonData.entity.identifier);", + "});" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "{{serverURL}}/api/v1/page/{{pageIdentifier}}/_deepcopy", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "page", + "{{pageIdentifier}}", + "_deepcopy" + ] + } + }, + "response": [] + }, + { + "name": "Check Multi-Tree Data For Deep-Copied Page", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Checking Multi-Tree data Deep-Copied Page\", function () {", + " var jsonData = pm.response.json();", + " var containerId = pm.collectionVariables.get(\"containerId\");", + " var contentId = pm.collectionVariables.get(\"contentId\");", + " var pageId = pm.collectionVariables.get(\"pageId\");", + " var personalization = pm.collectionVariables.get(\"personalization\");", + " var relationType = pm.collectionVariables.get(\"relationType\");", + "", + " pm.expect(jsonData.entity[0].containerId).to.eql(containerId);", + " pm.expect(jsonData.entity[0].contentId).to.not.eql(contentId);", + " pm.expect(jsonData.entity[0].pageId).to.not.eql(pageId);", + " pm.expect(jsonData.entity[0].personalization).to.eql(personalization);", + " pm.expect(jsonData.entity[0].relationType).to.eql(relationType);", + "});" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{serverURL}}/api/v1/page/{{pageDeepCopyIdentifier}}/content/tree", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "page", + "{{pageDeepCopyIdentifier}}", + "content", + "tree" + ] + } + }, + "response": [] + } + ], + "description": "This Test Collection verifies that the In-Place Contentlet Copy works correctly.\n\nThere are times where a given Contentlet is referenced by several pages. Sometimes, users just want to edit the Contentlet in one specific page without affecting they way such a Contentlet looks like in the other pages. This feature allows them to (1) create an exact copy of the Contentlet -- which replaces the existing one -- and (2) edit that copied Contentlet.", + "event": [ + { + "listen": "prerequest", + "script": { + "type": "text/javascript", + "packages": {}, + "exec": [ + "" + ] + } + }, + { + "listen": "test", + "script": { + "type": "text/javascript", + "packages": {}, + "exec": [ + "pm.test(\"HTTP Status code must be 200 or 404\", function () {", + " pm.expect(pm.response.code).to.be.oneOf([200, 404]);", + "});" + ] + } + } + ] + }, + { + "name": "Number of Content References in Pages", + "item": [ + { + "name": "Get Default Site", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Getting 'default' Site ID\", function() {", + " var entity = pm.response.json().entity;", + " pm.collectionVariables.set(\"defaultSiteId\", entity.identifier);", + "});", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n \"siteName\": \"default\"\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{serverURL}}/api/v1/site/_byname", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "site", + "_byname" + ] + }, + "description": "Gets the Identifier of the \"default\" Site." + }, + "response": [] + }, + { + "name": "Create First Test Page", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"No page creation errors are present\", function() {", + " var jsonData = pm.response.json();", + " pm.expect(jsonData.errors.length).to.eql(0);", + " pm.collectionVariables.set(\"firstPageIdentifier\", jsonData.entity.identifier);", + "});", + "" + ], + "type": "text/javascript", + "packages": {} + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "pm.collectionVariables.set(\"firstPageUrl\", \"first-test-page\" + Date.now());" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "PUT", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n \"contentlet\": {\n \"contentType\": \"htmlpageasset\",\n \"title\": \"First Test Page\",\n \"url\": \"{{firstPageUrl}}\",\n \"hostFolder\": \"default\",\n \"template\": \"SYSTEM_TEMPLATE\",\n \"friendlyName\": \"First Test Page\",\n \"cachettl\": 0\n }\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{serverURL}}/api/v1/workflow/actions/default/fire/PUBLISH?indexPolicy=WAIT_FOR", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "workflow", + "actions", + "default", + "fire", + "PUBLISH" + ], + "query": [ + { + "key": "indexPolicy", + "value": "WAIT_FOR" + } + ] + } + }, + "response": [] + }, + { + "name": "Create Test Rich Text Contentlet", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"No contentlet creation errors are present\", function() {", + " var jsonData = pm.response.json();", + " pm.expect(jsonData.errors.length).to.eql(0);", + " pm.collectionVariables.set(\"richContentIdentifier\", jsonData.entity.identifier);", + "});", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "PUT", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n \"contentlet\": {\n \"contentType\": \"webPageContent\",\n \"title\": \"Test Content\",\n \"contentHost\": \"default\",\n \"body\": \"Text Content Body\"\n }\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{serverURL}}/api/v1/workflow/actions/default/fire/PUBLISH?indexPolicy=WAIT_FOR", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "workflow", + "actions", + "default", + "fire", + "PUBLISH" + ], + "query": [ + { + "key": "indexPolicy", + "value": "WAIT_FOR" + } + ] + } + }, + "response": [] + }, + { + "name": "Add Test Contentlet To First Page", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"No contentlet addition errors are present\", function() {", + " var jsonData = pm.response.json();", + " pm.expect(jsonData.errors.length).to.eql(0);", + "});", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "[\n {\n \"identifier\": \"SYSTEM_CONTAINER\",\n \"uuid\": \"1\",\n \"contentletsId\": [\n \"{{richContentIdentifier}}\"\n ]\n }\n]", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{serverURL}}/api/v1/page/{{firstPageIdentifier}}/content", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "page", + "{{firstPageIdentifier}}", + "content" + ] + } + }, + "response": [] + }, + { + "name": "Check Property in First Page", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Only one Contentlet must be present\", function() {", + " var entity = pm.response.json().entity;", + " var contentletList = entity.containers.SYSTEM_CONTAINER.contentlets[\"uuid-1\"];", + " pm.expect(contentletList.length).to.eql(1);", + "});", + "", + "pm.test(\"Check the 'onNumberOfPages' property in the test Contentlet map in first Page\", function() {", + " var entity = pm.response.json().entity;", + " var contentlet = entity.containers.SYSTEM_CONTAINER.contentlets[\"uuid-1\"][0];", + " pm.expect(contentlet.onNumberOfPages).to.eql(1, \"The 'onNumberOfPages' counter must be 1 at this point\");", + "});", + "", + "pm.test(\"The rendered section should contain data attribute 'data-dot-on-number-of-pages' for the contentlet object\", function() {", + " var entity = pm.response.json().entity;", + " var contentletData = entity.containers.SYSTEM_CONTAINER.rendered[\"uuid-1\"];", + " console.log(contentletData);", + " pm.expect(contentletData).includes(\"data-dot-on-number-of-pages\");", + "});", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{serverURL}}/api/v1/page/render/{{firstPageUrl}}?language_id=1&mode=EDIT_MODE&host_id={{defaultSiteId}}", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "page", + "render", + "{{firstPageUrl}}" + ], + "query": [ + { + "key": "language_id", + "value": "1" + }, + { + "key": "mode", + "value": "EDIT_MODE" + }, + { + "key": "host_id", + "value": "{{defaultSiteId}}" + } + ] + } + }, + "response": [] + }, + { + "name": "Create Second Test Page", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"No page creation errors are present\", function() {", + " var jsonData = pm.response.json();", + " pm.expect(jsonData.errors.length).to.eql(0);", + " pm.collectionVariables.set(\"secondPageIdentifier\", jsonData.entity.identifier);", + "});", + "" + ], + "type": "text/javascript", + "packages": {} + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "pm.collectionVariables.set(\"secondPageUrl\", \"second-test-page\" + Date.now());" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "PUT", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n \"contentlet\": {\n \"contentType\": \"htmlpageasset\",\n \"title\": \"Second Test Page\",\n \"url\": \"{{secondPageUrl}}\",\n \"hostFolder\": \"default\",\n \"template\": \"SYSTEM_TEMPLATE\",\n \"friendlyName\": \"Second Test Page\",\n \"cachettl\": 0\n }\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{serverURL}}/api/v1/workflow/actions/default/fire/PUBLISH?indexPolicy=WAIT_FOR", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "workflow", + "actions", + "default", + "fire", + "PUBLISH" + ], + "query": [ + { + "key": "indexPolicy", + "value": "WAIT_FOR" + } + ] + } + }, + "response": [] + }, + { + "name": "Add Test Contentlet To Second Page", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"No contentlet addition errors are present\", function() {", + " var jsonData = pm.response.json();", + " pm.expect(jsonData.errors.length).to.eql(0);", + "});", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "[\n {\n \"identifier\": \"SYSTEM_CONTAINER\",\n \"uuid\": \"1\",\n \"contentletsId\": [\n \"{{richContentIdentifier}}\"\n ]\n }\n]", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{serverURL}}/api/v1/page/{{secondPageIdentifier}}/content", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "page", + "{{secondPageIdentifier}}", + "content" + ] + } + }, + "response": [] + }, + { + "name": "Check Property in Second Page", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Only one Contentlet must be present\", function() {", + " var entity = pm.response.json().entity;", + " var contentletList = entity.containers.SYSTEM_CONTAINER.contentlets[\"uuid-1\"];", + " pm.expect(contentletList.length).to.eql(1);", + "});", + "", + "pm.test(\"Check the 'onNumberOfPages' property in the test Contentlet map in second Page\", function() {", + " var entity = pm.response.json().entity;", + " var contentlet = entity.containers.SYSTEM_CONTAINER.contentlets[\"uuid-1\"][0];", + " pm.expect(contentlet.onNumberOfPages).to.eql(2, \"The 'onNumberOfPages' counter must be 2 at this point\");", + "});", + "", + "pm.test(\"The rendered section should contain data attribute 'data-dot-on-number-of-pages' for the contentlet object\", function() {", + " var entity = pm.response.json().entity;", + " var contentletData = entity.containers.SYSTEM_CONTAINER.rendered[\"uuid-1\"];", + " console.log(contentletData);", + " pm.expect(contentletData).includes(\"data-dot-on-number-of-pages\");", + "});", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{serverURL}}/api/v1/page/render/{{secondPageUrl}}?language_id=1&mode=EDIT_MODE&host_id={{defaultSiteId}}", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "page", + "render", + "{{secondPageUrl}}" + ], + "query": [ + { + "key": "language_id", + "value": "1" + }, + { + "key": "mode", + "value": "EDIT_MODE" + }, + { + "key": "host_id", + "value": "{{defaultSiteId}}" + } + ] + } + }, + "response": [] + } + ], + "description": "This Request Collection verifies that the \"onNumberOfPages\" property is added to the Page JSON response and calculated properly.\n\nThe \"onNumberOfPages\" provides the number of times that a given Contentlet is present in any HTML Page in dotCMS. This way, the Front-End Team can allow users to select whether they want to update that unique Contentlet, or if they want to (1) create a copy of it and (2) edit that new copy instead.", + "event": [ + { + "listen": "prerequest", + "script": { + "type": "text/javascript", + "exec": [ + "" + ] + } + }, + { + "listen": "test", + "script": { + "type": "text/javascript", + "exec": [ + "pm.test(\"HTTP Status code must be 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "" + ] + } + } + ] + }, + { + "name": "Get Page Types", + "item": [ + { + "name": "Create new UrlMap Page", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "var jsonData = pm.response.json();", + "", + "pm.test(\"No errors\", function () {", + " ", + " var jsonData = pm.response.json();", + " pm.expect(jsonData.errors.length).to.eql(0);", + "});", + "", + "pm.collectionVariables.set(\"pageid\", jsonData.entity.identifier);", + "pm.collectionVariables.set(\"pagepath\", jsonData.entity.path);" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "PUT", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n\t\n\t\"contentlet\": {\n\t\t\"contentType\":\"htmlpageasset\",\n \"title\":\"testPageCopy{{$randomBankAccount}}\",\n \"url\":\"testPageCopy{{$randomBankAccount}}\",\n \"hostFolder\":\"default\",\n \"template\":\"SYSTEM_TEMPLATE\",\n \"friendlyName\":\"testPageCopy{{$randomBankAccount}}\",\n \"cachettl\":0\n\t\t\n\t}\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{serverURL}}/api/v1/workflow/actions/default/fire/PUBLISH?indexPolicy=WAIT_FOR", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "workflow", + "actions", + "default", + "fire", + "PUBLISH" + ], + "query": [ + { + "key": "indexPolicy", + "value": "WAIT_FOR" + } + ] + } + }, + "response": [] + }, + { + "name": "CreateNewTypeWithUrlMap", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "var jsonData = pm.response.json();", + "", + "pm.test(\"Check response\", function () {", + " pm.expect(jsonData.entity[0].description).to.eql(\"My Structure\");", + "});", + "", + "pm.test(\"Validate that the 'errors' array is empty\", function () {", + " // Check that the 'errors' array is defined and its length is 0", + " pm.expect(jsonData.errors).to.be.an('array').that.is.empty;", + "});", + "", + "", + "", + "", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n\t\"clazz\": \"com.dotcms.contenttype.model.type.SimpleContentType\",\n \"detailPage\": \"{{pageid}}\",\n \"urlMapPattern\": \"/blog/wasabi/{urlTitle}\",\n\t\"description\": \"My Structure\",\n\t\"defaultType\": false,\n\t\"system\": false,\n\t\"folder\": \"SYSTEM_FOLDER\",\n\t\"name\": \"TestTypeUrlMap{{$randomBankAccount}}\",\n\t\"variable\": \"TestTypeUrlMap{{$randomBankAccount}}\",\n\t\"host\": \"SYSTEM_HOST\",\n\t\"fixed\": false,\n \"icon\": \"testIcon\",\n \"sortOrder\": 3,\n\t\"fields\": [\n\t\t{\n\t\t\t\"clazz\": \"com.dotcms.contenttype.model.field.TextField\",\n\t\t\t\"indexed\": true,\n\t\t\t\"dataType\": \"TEXT\",\n\t\t\t\"readOnly\": false,\n\t\t\t\"required\": true,\n\t\t\t\"searchable\": true,\n\t\t\t\"listed\": true,\n\t\t\t\"sortOrder\": 2,\n\t\t\t\"unique\": false,\n\t\t\t\"name\": \"Name\",\n\t\t\t\"variable\": \"name\",\n\t\t\t\"fixed\": true\n\t\t}\n\t],\n \"workflow\":[\"d61a59e1-a49c-46f2-a929-db2b4bfa88b2\"]\n}\n", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{serverURL}}/api/v1/contenttype", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "contenttype" + ] + } + }, + "response": [] + }, + { + "name": "Create New Page Type", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "var jsonData = pm.response.json();", + "", + "pm.test(\"Check response\", function () {", + " pm.expect(jsonData.entity[0].baseType).to.eql(\"HTMLPAGE\");", + "});", + "", + "pm.test(\"Validate that the 'errors' array is empty\", function () {", + " // Check that the 'errors' array is defined and its length is 0", + " pm.expect(jsonData.errors).to.be.an('array').that.is.empty;", + "});", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n \"defaultType\": false,\n \"icon\": null,\n \"fixed\": false,\n \"system\": false,\n \"clazz\": \"com.dotcms.contenttype.model.type.ImmutablePageContentType\",\n \"description\": \"\",\n \"host\": \"8a7d5e23-da1e-420a-b4f0-471e7da8ea2d\",\n \"folder\": \"SYSTEM_FOLDER\",\n \"name\": \"TestTypePage{{$randomBankAccount}}\",\n \"variable\": \"TestTypePage{{$randomBankAccount}}\"\n}\n", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{serverURL}}/api/v1/contenttype", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "contenttype" + ] + } + }, + "response": [] + }, + { + "name": "Get Types", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "var jsonData = pm.response.json();", + "", + "pm.test(\"No errors\", function () {", + " ", + " var jsonData = pm.response.json();", + " pm.expect(jsonData.entity.length).to.greaterThan(2);", + "", + " const urlMapType = jsonData.entity.filter(item => item.variable.startsWith('TestTypeUrlMap'))", + " const pageType = jsonData.entity.filter(item => item.variable.startsWith('TestTypePage'))", + "", + " pm.expect(urlMapType).to.not.eql(null);", + " pm.expect(pageType).to.not.eql(null);", + "});", + "", + "" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "http://localhost:8080/api/v1/page/types", + "protocol": "http", + "host": [ + "localhost" + ], + "port": "8080", + "path": [ + "api", + "v1", + "page", + "types" + ] + } + }, + "response": [] + }, + { + "name": "Get Types Filtered", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "var jsonData = pm.response.json();", + "", + "pm.test(\"No errors\", function () {", + " ", + " var jsonData = pm.response.json();", + " pm.expect(jsonData.entity.length).to.greaterThan(1);", + "", + "});", + "", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "http://localhost:8080/api/v1/page/types?filter=test", + "protocol": "http", + "host": [ + "localhost" + ], + "port": "8080", + "path": [ + "api", + "v1", + "page", + "types" + ], + "query": [ + { + "key": "filter", + "value": "test" + } + ] + } + }, + "response": [] + } + ], + "event": [ + { + "listen": "prerequest", + "script": { + "type": "text/javascript", + "packages": {}, + "exec": [ + "" + ] + } + }, + { + "listen": "test", + "script": { + "type": "text/javascript", + "packages": {}, + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});" + ] + } + } + ] + }, + { + "name": "Permissions", + "item": [ + { + "name": "CallLogout", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Check response\", function () {", + " pm.expect(pm.response.text()).to.include(\"Logout successfully\");", + "});" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{serverURL}}/api/v1/logout", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "logout" + ] + } + }, + "response": [] + }, + { + "name": "Create Test Page Permission", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Test Page created successfully\", function () {", + " var jsonData = pm.response.json();", + " pm.expect(jsonData.errors.length).to.eql(0);", + " pm.collectionVariables.set(\"pageIdentifier\", jsonData.entity.identifier);", + " pm.collectionVariables.set(\"host_id\", jsonData.entity.host);", + "});" + ], + "type": "text/javascript", + "packages": {} + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "const pagePost = Math.floor(Math.random()*100+1)", + "pm.globals.set(\"pagePost\", pagePost)" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "PUT", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n\t\n\t\"contentlet\": {\n\t\t\"contentType\":\"htmlpageasset\",\n \"title\":\"testPagePermission{{pagePost}}\",\n \"url\":\"testPagePermission{{pagePost}}\",\n \"hostFolder\":\"default\",\n \"template\":\"SYSTEM_TEMPLATE\",\n \"friendlyName\":\"testPagePermission{{pagePost}}\",\n \"cachettl\":0\n\t\t\n\t}\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{serverURL}}/api/v1/workflow/actions/default/fire/PUBLISH?indexPolicy=WAIT_FOR", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "workflow", + "actions", + "default", + "fire", + "PUBLISH" + ], + "query": [ + { + "key": "indexPolicy", + "value": "WAIT_FOR" + } + ] + } + }, + "response": [] + }, + { + "name": "CheckPermission", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Test Page created successfully\", function () {", + " var jsonData = pm.response.json();", + " pm.expect(jsonData.errors.length).to.eql(0);", + " pm.expect(jsonData.entity).to.eql(true);", + "});" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n \"url\":\"/testPagePermission{{pagePost}}\",\n \"type\":\"READ\",\n \"language_id\":\"1\",\n \"host_id\":\"{{host_id}}\"\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{serverURL}}/api/v1/page/_check-permission", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "page", + "_check-permission" + ] + } + }, + "response": [] + } + ], + "event": [ + { + "listen": "prerequest", + "script": { + "type": "text/javascript", + "packages": {}, + "exec": [ + "" + ] + } + }, + { + "listen": "test", + "script": { + "type": "text/javascript", + "packages": {}, + "exec": [ + "pm.test(\"HTTP Status code must be 200\", function () {", + " pm.response.to.have.status(200);", + "});" + ] + } + } + ] + }, + { + "name": "Getting Available Workflow Actions In Page", + "item": [ + { + "name": "Find the Default Site ID", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Saving the Default Site's ID\", function () {", + " var entity = pm.response.json().entity;", + " pm.collectionVariables.set(\"host_id\", entity.identifier);", + "});", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n \"siteName\": \"default\"\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{serverURL}}/api/v1/site/_byname", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "site", + "_byname" + ] + } + }, + "response": [] + }, + { + "name": "Switch To Default Site", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Check that the Site has indeed switched to the 'default' Site\", function () {", + " var jsonData = pm.response.json();", + " pm.expect(jsonData.entity.hostSwitched).to.eql(true);", + "});", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "PUT", + "header": [], + "url": { + "raw": "{{serverURL}}/api/v1/site/switch/{{host_id}}", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "site", + "switch", + "{{host_id}}" + ] + } + }, + "response": [] + }, + { + "name": "Create a Test Page", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Check that the Test Page was created successfully\", function () {", + " var jsonData = pm.response.json();", + " pm.expect(jsonData.errors.length).to.eql(0);", + " pm.collectionVariables.set(\"pageIdentifier\", jsonData.entity.identifier);", + "});", + "" + ], + "type": "text/javascript", + "packages": {} + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "const pagePost = Math.floor(Math.random()*100+1)", + "pm.collectionVariables.set(\"pagePost2\", pagePost);" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "PUT", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n \"contentlet\": {\n \"contentType\": \"htmlpageasset\",\n \"languageId\": 1,\n \"title\": \"testPageCopy{{pagePost2}}\",\n \"url\": \"testPageCopy{{pagePost2}}\",\n \"hostFolder\": \"{{host_id}}\",\n \"template\": \"SYSTEM_TEMPLATE\",\n \"friendlyName\": \"testPageCopy{{pagePost2}}\",\n \"cachettl\": 0,\n \"workflow\": [\n \"d61a59e1-a49c-46f2-a929-db2b4bfa88b2\"\n ]\n }\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{serverURL}}/api/v1/workflow/actions/default/fire/PUBLISH?indexPolicy=WAIT_FOR", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "workflow", + "actions", + "default", + "fire", + "PUBLISH" + ], + "query": [ + { + "key": "indexPolicy", + "value": "WAIT_FOR" + } + ] + } + }, + "response": [] + }, + { + "name": "Get Workflow Actions", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Check that Workflow Actions for the test HTML Page are available\", function () {", + " var jsonData = pm.response.json();", + " pm.expect(jsonData.errors.length).to.eql(0);", + " pm.expect(jsonData.entity.actions.length).to.greaterThan(0);", + " pm.expect(jsonData.entity.page.pageUrl).to.contains('testPageCopy');", + "});", + "" + ], + "type": "text/javascript", + "packages": {} + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n \"host_id\":\"{{host_id}}\",\n \"url\":\"/testPageCopy{{pagePost2}}\",\n \"language_id\": \"1\"\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "http://localhost:8080/api/v1/page/actions", + "protocol": "http", + "host": [ + "localhost" + ], + "port": "8080", + "path": [ + "api", + "v1", + "page", + "actions" + ] + } + }, + "response": [] + } + ], + "description": "Retrieves the list of Workflow Actions that are availbale for a given HTML Page. These actions are basically the `Save`, `Publish`, `Archive`, or any other buttons you see in the Content Edit modal when you're creating or editing an HTML Page in the back-end.", + "event": [ + { + "listen": "prerequest", + "script": { + "type": "text/javascript", + "packages": {}, + "exec": [ + "" + ] + } + }, + { + "listen": "test", + "script": { + "type": "text/javascript", + "packages": {}, + "exec": [ + "pm.test(\"HTTP Status code must be 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "" + ] + } + } + ] + }, + { + "name": "Check Languages for a Page", + "item": [ + { + "name": "Create Test Page in English", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Test Page created successfully\", function () {", + " var jsonData = pm.response.json();", + " pm.expect(jsonData.errors.length).to.eql(0);", + " pm.collectionVariables.set(\"pageIdentifier\", jsonData.entity.identifier);", + "});" + ], + "type": "text/javascript", + "packages": {} + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "const time = new Date().getTime();", + "pm.collectionVariables.set(\"testPageTitle\", \"My Test Page \" + time);", + "pm.collectionVariables.set(\"testPageUrl\", \"my-test-page-\" + time);" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "PUT", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n \"contentlet\": {\n \"contentType\": \"htmlpageasset\",\n \"title\": \"{{testPageTitle}}\",\n \"url\": \"{{testPageUrl}}\",\n \"hostFolder\": \"default\",\n \"template\": \"SYSTEM_TEMPLATE\",\n \"friendlyName\": \"{{testPageTitle}}\",\n \"cachettl\": 0\n }\n}\n", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{serverURL}}/api/v1/workflow/actions/default/fire/PUBLISH?indexPolicy=WAIT_FOR", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "workflow", + "actions", + "default", + "fire", + "PUBLISH" + ], + "query": [ + { + "key": "indexPolicy", + "value": "WAIT_FOR" + } + ] + } + }, + "response": [] + }, + { + "name": "Check page translation only in English", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Check that the test HTML Page is available in English, no matter how many languages there are\", function () {", + " const entity = pm.response.json().entity;", + " var isTranslated = false;", + " entity.forEach(function(lang) {", + " if (1 == lang.id && lang.translated) {", + " isTranslated = true;", + " }", + " });", + " pm.expect(isTranslated).to.be.equal(true, 'The test page must be available in English');", + "});", + "" + ], + "type": "text/javascript", + "packages": {} + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{serverURL}}/api/v1/page/{{pageIdentifier}}/languages", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "page", + "{{pageIdentifier}}", + "languages" + ] + } + }, + "response": [] + } + ], + "description": "These requests are aimed to test the REST Endpoint that takes a Page ID, returns all Languages in the current instance and, for each of them, includes an additional attribute that indicates whether such a page is available in that specific language or not.", + "event": [ + { + "listen": "prerequest", + "script": { + "type": "text/javascript", + "packages": {}, + "exec": [ + "" + ] + } + }, + { + "listen": "test", + "script": { + "type": "text/javascript", + "packages": {}, + "exec": [ + "pm.test(\"HTTP Status code must be 200\", function () {", + " pm.response.to.have.status(200);", + "});" + ] + } + } + ] + }, + { + "name": "Checking JSON Attributes", + "item": [ + { + "name": "Checking Page Audit Attributes", + "item": [ + { + "name": "Retrieving HTML Page Data", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Checking that audit properties are present\", function () {", + " var entity = pm.response.json().entity.page;", + " ", + " pm.expect(entity.creationDate).to.not.equal(undefined, \"The 'creationDate' attribute must be present\");", + " pm.expect(entity.owner).to.not.equal(undefined, \"The 'owner' attribute must be present\");", + " pm.expect(entity.ownerName).to.not.equal(undefined, \"The 'ownerName' attribute must be present\");", + " pm.expect(entity.modDate).to.not.equal(undefined, \"The 'modDate' attribute must be present\");", + " pm.expect(entity.modUser).to.not.equal(undefined, \"The 'modUser' attribute must be present\");", + " pm.expect(entity.modUserName).to.not.equal(undefined, \"The 'modUserName' attribute must be present\");", + " pm.expect(entity.publishDate).to.not.equal(undefined, \"The 'publishDate' attribute must be present\");", + " pm.expect(entity.publishUser).to.not.equal(undefined, \"The 'publishUser' attribute must be present\");", + " pm.expect(entity.publishUserName).to.not.equal(undefined, \"The 'publishUserName' attribute must be present\");", + "});", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{serverURL}}/api/v1/page/json/destinations/costa-rica", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "page", + "json", + "destinations", + "costa-rica" + ] + }, + "description": "http://localhost:8080/api/v1/page/json/{page-url}" + }, + "response": [] + } + ], + "event": [ + { + "listen": "prerequest", + "script": { + "type": "text/javascript", + "packages": {}, + "exec": [ + "" + ] + } + }, + { + "listen": "test", + "script": { + "type": "text/javascript", + "packages": {}, + "exec": [ + "pm.test(\"HTTP Status code must be 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "" + ] + } + } + ] + } + ], + "event": [ + { + "listen": "prerequest", + "script": { + "type": "text/javascript", + "packages": {}, + "exec": [ + "" + ] + } + }, + { + "listen": "test", + "script": { + "type": "text/javascript", + "packages": {}, + "exec": [ + "" + ] + } + } + ] + }, + { + "name": "Moving layout not impact Contentlet position BUG", + "item": [ + { + "name": "Create a Content Type", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "var jsonData = pm.response.json();", + "", + "", + "pm.test(\"Status code should be ok 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "pm.collectionVariables.set(\"contentTypeIdMovingLayoutBUG\", jsonData.entity[0].id);", + "", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{jwt}}", + "type": "string" + } + ] + }, + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n \"defaultType\":false,\n \"icon\":null,\n \"fixed\":false,\n \"system\":false,\n \"clazz\":\"com.dotcms.contenttype.model.type.ImmutableSimpleContentType\",\n \"description\":\"\",\n \"host\":\"8a7d5e23-da1e-420a-b4f0-471e7da8ea2d\",\n \"folder\":\"SYSTEM_FOLDER\",\n \"name\":\"CT1 Moving Layout BUG\",\n \"systemActionMappings\":{\"NEW\":\"\"},\n \"workflow\":[\"d61a59e1-a49c-46f2-a929-db2b4bfa88b2\"]\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{serverURL}}/api/v1/contenttype", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "contenttype" + ] + } + }, + "response": [] + }, + { + "name": "Add Field to Content Type Copy", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{jwt}}", + "type": "string" + } + ] + }, + "method": "PUT", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n \"layout\":[\n {\"divider\":{\n \"clazz\":\"com.dotcms.contenttype.model.field.ImmutableRowField\",\n \"contentTypeId\":\"{{contentTypeIdMovingLayoutBUG}}\",\n \"dataType\":\"SYSTEM\",\n \"fieldContentTypeProperties\":[],\n \"fieldType\":\"Row\",\n \"fieldTypeLabel\":\"Row\",\n \"fieldVariables\":[],\n \"fixed\":false,\n \"iDate\":1667572217000,\n \"indexed\":false,\n \"listed\":false,\n \"modDate\":1667572217000,\n \"name\":\"Row Field\",\n \"readOnly\":false,\n \"required\":false,\n \"searchable\":false,\n \"sortOrder\":-1,\n \"unique\":false},\n \"columns\":[\n {\n \"columnDivider\":{\n \"clazz\":\"com.dotcms.contenttype.model.field.ImmutableColumnField\",\n \"dataType\":\"SYSTEM\",\n \"fieldContentTypeProperties\":[],\n \"fieldType\":\"Column\",\n \"fieldTypeLabel\":\"Column\",\n \"fieldVariables\":[],\n \"fixed\":false,\n \"iDate\":1667572217000,\n \"indexed\":false,\n \"listed\":false,\n \"modDate\":1667572217000,\n \"name\":\"Column Field\",\n \"readOnly\":false,\n \"required\":false,\n \"searchable\":false,\n \"sortOrder\":-1,\n \"unique\":false\n },\n \"fields\":[\n {\n \"clazz\":\"com.dotcms.contenttype.model.field.ImmutableTextField\",\n \"name\":\"title\",\n \"dataType\":\"TEXT\",\n \"regexCheck\":\"\",\n \"defaultValue\":\"\",\n \"hint\":\"\",\n \"required\":false,\n \"searchable\":false,\n \"indexed\":false,\n \"listed\":false,\n \"unique\":false,\n \"id\":null\n }\n ]\n }\n ]\n }\n ]\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{serverURL}}/api/v3/contenttype/{{contentTypeIdMovingLayoutBUG}}/fields/move", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v3", + "contenttype", + "{{contentTypeIdMovingLayoutBUG}}", + "fields", + "move" + ] + } + }, + "response": [] + }, + { + "name": "Create Container C1", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "var jsonData = pm.response.json();", + "", + "", + "pm.test(\"Status code should be ok 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "pm.collectionVariables.set(\"containerIdMovingLayoutBUG\", jsonData.entity.identifier);", + "", + "", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{jwt}}", + "type": "string" + } + ] + }, + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n \"title\": \"C1 Moving Layout BUG\",\n \"friendlyName\": \"cContainer used on the test for Moving Layout BUF\",\n \"maxContentlets\": 1,\n \"containerStructures\": [{\n \"structureId\": \"{{contentTypeIdMovingLayoutBUG}}\",\n \"maxContentlets\": 1,\n \"code\": \"$!{dotContentMap.title}\"\n }]\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{serverURL}}/api/v1/containers", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "containers" + ] + } + }, + "response": [] + }, + { + "name": "Create Template T1", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "var jsonData = pm.response.json();", + "", + "", + "pm.test(\"Status code should be ok 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "pm.collectionVariables.set(\"tamplateIdMovingLayoutBUG\", jsonData.entity.identifier);", + "", + "", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{jwt}}", + "type": "string" + } + ] + }, + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\t\t\n \"layout\":{\n \"body\":{\n \"rows\":[\n {\n \"styleClass\":\"\",\n \"columns\":[\n {\n \"styleClass\":\"\",\n \"leftOffset\":1,\n \"width\":12,\n \"containers\":[\n {\"identifier\":\"{{containerIdMovingLayoutBUG}}\"}\n ]\n }\n ]\n },\n {\n \"styleClass\":\"\",\n \"columns\":[\n {\n \"styleClass\":\"\",\n \"leftOffset\":1,\n \"width\":12,\n \"containers\":[\n {\"identifier\":\"{{containerIdMovingLayoutBUG}}\"}\n ]\n }\n ]\n }\n ]\n } \n },\n \"friendlyName\": \"\",\n \"title\": \"T1 MovingLayoutBUG\",\n \"theme\": \"SYSTEM_THEME\"\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{serverURL}}/api/v1/templates", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "templates" + ] + } + }, + "response": [] + }, + { + "name": "Create page P1", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "var jsonData = pm.response.json();", + "", + "", + "pm.test(\"Status code should be ok 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "pm.collectionVariables.set(\"p1IdMovingLayoutBUG\", jsonData.entity.identifier);", + "", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{jwt}}", + "type": "string" + } + ] + }, + "method": "PUT", + "header": [], + "body": { + "mode": "raw", + "raw": "{ \n \"contentlet\" : {\n \"title\" : \"P1 MovingLayoutBUG\",\n \"languageId\" : 1,\n \"stInode\": \"c541abb1-69b3-4bc5-8430-5e09e5239cc8\",\n \"url\": \"P1_MovingLayoutBUG\",\n \"hostFolder\": \"8a7d5e23-da1e-420a-b4f0-471e7da8ea2d\",\n \"template\": \"{{tamplateIdMovingLayoutBUG}}\",\n \"cachettl\": 0,\n \"friendlyName\": \"friendlyName\"\n }\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{serverURL}}/api/v1/workflow/actions/default/fire/PUBLISH", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "workflow", + "actions", + "default", + "fire", + "PUBLISH" + ] + } + }, + "response": [] + }, + { + "name": "Create contentlet A", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "var jsonData = pm.response.json();", + "", + "", + "pm.test(\"Status code should be ok 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "pm.collectionVariables.set(\"contentAId\", jsonData.entity.identifier);", + "", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{jwt}}", + "type": "string" + } + ] + }, + "method": "PUT", + "header": [], + "body": { + "mode": "raw", + "raw": "{ \n \"contentlet\" : {\n \"title\" : \"A\",\n \"languageId\" : 1,\n \"stInode\": \"{{contentTypeIdMovingLayoutBUG}}\"\n }\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{serverURL}}/api/v1/workflow/actions/default/fire/PUBLISH", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "workflow", + "actions", + "default", + "fire", + "PUBLISH" + ] + } + }, + "response": [] + }, + { + "name": "Create contentlet B", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "var jsonData = pm.response.json();", + "", + "", + "pm.test(\"Status code should be ok 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "pm.collectionVariables.set(\"contentBId\", jsonData.entity.identifier);", + "", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{jwt}}", + "type": "string" + } + ] + }, + "method": "PUT", + "header": [], + "body": { + "mode": "raw", + "raw": "{ \n \"contentlet\" : {\n \"title\" : \"B\",\n \"languageId\" : 1,\n \"stInode\": \"{{contentTypeIdMovingLayoutBUG}}\"\n }\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{serverURL}}/api/v1/workflow/actions/default/fire/PUBLISH", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "workflow", + "actions", + "default", + "fire", + "PUBLISH" + ] + } + }, + "response": [] + }, + { + "name": "Add A and B into P1", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Variants with correct weight\", function () {", + " pm.response.to.have.status(200);", + "});" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{jwt}}", + "type": "string" + } + ] + }, + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "[\n {\n \"contentletsId\": [\"{{contentAId}}\"],\n \"identifier\": \"{{containerIdMovingLayoutBUG}}\",\n \"uuid\": \"1\" \n },\n {\n \"contentletsId\": [\"{{contentBId}}\"],\n \"identifier\": \"{{containerIdMovingLayoutBUG}}\",\n \"uuid\": \"2\" \n } \n]\n", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{serverURL}}/api/v1/page/{{p1IdMovingLayoutBUG}}/content", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "page", + "{{p1IdMovingLayoutBUG}}", + "content" + ] + } + }, + "response": [] + }, + { + "name": "Create page P2", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "var jsonData = pm.response.json();", + "", + "", + "pm.test(\"Status code should be ok 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "pm.collectionVariables.set(\"p2IdMovingLayoutBUG\", jsonData.entity.identifier);", + "", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{jwt}}", + "type": "string" + } + ] + }, + "method": "PUT", + "header": [], + "body": { + "mode": "raw", + "raw": "{ \n \"contentlet\" : {\n \"title\" : \"P2 MovingLayoutBUG\",\n \"languageId\" : 1,\n \"stInode\": \"c541abb1-69b3-4bc5-8430-5e09e5239cc8\",\n \"url\": \"P2_MovingLayoutBUG\",\n \"hostFolder\": \"8a7d5e23-da1e-420a-b4f0-471e7da8ea2d\",\n \"template\": \"{{tamplateIdMovingLayoutBUG}}\",\n \"cachettl\": 0,\n \"friendlyName\": \"friendlyName\"\n }\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{serverURL}}/api/v1/workflow/actions/default/fire/PUBLISH", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "workflow", + "actions", + "default", + "fire", + "PUBLISH" + ] + } + }, + "response": [] + }, + { + "name": "Add A and B into P2", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Variants with correct weight\", function () {", + " pm.response.to.have.status(200);", + "});" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{jwt}}", + "type": "string" + } + ] + }, + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "[\n {\n \"contentletsId\": [\"{{contentAId}}\"],\n \"identifier\": \"{{containerIdMovingLayoutBUG}}\",\n \"uuid\": \"1\" \n },\n {\n \"contentletsId\": [\"{{contentBId}}\"],\n \"identifier\": \"{{containerIdMovingLayoutBUG}}\",\n \"uuid\": \"2\" \n } \n]\n", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{serverURL}}/api/v1/page/{{p2IdMovingLayoutBUG}}/content", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "page", + "{{p2IdMovingLayoutBUG}}", + "content" + ] + } + }, + "response": [] + }, + { + "name": "Move Containers in P1", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Variants with correct weight\", function () {", + " pm.response.to.have.status(200);", + "});" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{jwt}}", + "type": "string" + } + ] + }, + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n \"layout\": {\n \"width\": \"\",\n \"title\": \"t1-movinglayoutbug\",\n \"header\": false,\n \"footer\": false,\n \"body\": {\n \"rows\": [\n {\n \"columns\": [\n {\n \"containers\": [\n {\n \"identifier\": \"{{containerIdMovingLayoutBUG}}\",\n \"uuid\": \"2\"\n }\n ],\n \"leftOffset\": 1,\n \"width\": 12,\n \"styleClass\": \"\"\n }\n ],\n \"styleClass\": null\n },\n {\n \"columns\": [\n {\n \"containers\": [\n {\n \"identifier\": \"{{containerIdMovingLayoutBUG}}\",\n \"uuid\": \"1\"\n }\n ],\n \"leftOffset\": 1,\n \"width\": 12,\n \"styleClass\": \"\"\n }\n ],\n \"styleClass\": null\n }\n ]\n },\n \"sidebar\": null\n },\n \"title\": null\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{serverURL}}/api/v1/page/{{p1IdMovingLayoutBUG}}/layout", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "page", + "{{p1IdMovingLayoutBUG}}", + "layout" + ] + } + }, + "response": [] + }, + { + "name": "Render P1", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "var jsonData = pm.response.json();", + "", + "", + "pm.test(\"Status code should be ok 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "var containerId = pm.collectionVariables.get(\"containerIdMovingLayoutBUG\");", + "var contentlets = jsonData.entity.containers[containerId].contentlets;", + "", + "pm.expect('B').to.equal(contentlets['uuid-1'][0].title);", + "pm.expect('A').to.equal(contentlets['uuid-2'][0].title);", + "", + "", + "" + ], + "type": "text/javascript", + "packages": {} + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{jwt}}", + "type": "string" + } + ] + }, + "method": "GET", + "header": [], + "url": { + "raw": "{{serverURL}}/api/v1/page/render/P1_MovingLayoutBUG?host_id=8a7d5e23-da1e-420a-b4f0-471e7da8ea2d&language_id=1&mode=PREVIEW_MODE", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "page", + "render", + "P1_MovingLayoutBUG" + ], + "query": [ + { + "key": "host_id", + "value": "8a7d5e23-da1e-420a-b4f0-471e7da8ea2d" + }, + { + "key": "language_id", + "value": "1" + }, + { + "key": "mode", + "value": "PREVIEW_MODE" + } + ] + } + }, + "response": [] + }, + { + "name": "Render P2", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "var jsonData = pm.response.json();", + "", + "", + "pm.test(\"Status code should be ok 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "var containerId = pm.collectionVariables.get(\"containerIdMovingLayoutBUG\");", + "var contentlets = jsonData.entity.containers[containerId].contentlets;", + "", + "pm.expect('A').to.equal(contentlets['uuid-1'][0].title);", + "pm.expect('B').to.equal(contentlets['uuid-2'][0].title);", + "", + "", + "" + ], + "type": "text/javascript", + "packages": {} + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{jwt}}", + "type": "string" + } + ] + }, + "method": "GET", + "header": [], + "url": { + "raw": "{{serverURL}}/api/v1/page/render/P2_MovingLayoutBUG?host_id=8a7d5e23-da1e-420a-b4f0-471e7da8ea2d&language_id=1&mode=PREVIEW_MODE", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "page", + "render", + "P2_MovingLayoutBUG" + ], + "query": [ + { + "key": "host_id", + "value": "8a7d5e23-da1e-420a-b4f0-471e7da8ea2d" + }, + { + "key": "language_id", + "value": "1" + }, + { + "key": "mode", + "value": "PREVIEW_MODE" + } + ] + } + }, + "response": [] + } + ] + }, + { + "name": "Put Create Page With CacheTTL 100", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code should be 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "var jsonData = pm.response.json();", + "", + "pm.test(\"Identifier must contains path\", function () {", + " pm.expect(jsonData.entity.template).eq(\"SYSTEM_TEMPLATE\");", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "auth": { + "type": "basic", + "basic": [ + { + "key": "password", + "value": "admin", + "type": "string" + }, + { + "key": "username", + "value": "admin@dotcms.com", + "type": "string" + }, + { + "key": "saveHelperData", + "type": "any" + }, + { + "key": "showPassword", + "value": false, + "type": "boolean" + } + ] + }, + "method": "PUT", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n\t\"contentlet\":{\n\t\t\"stName\": \"htmlpageasset\",\n\t\t\"title\": \"PageAsset SystemTemplate\",\n \"url\": \"pageassetsystemtemplate\",\n \"friendlyName\":\"pageassetsystemtemplate\",\n \"template\": \"SYSTEM_TEMPLATE\",\n \"sortOrder\": \"0\",\n \"cachettl\": \"100\",\n \"hostFolder\":\"48190c8c-42c4-46af-8d1a-0cd5db894797\"\n\t}\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{serverURL}}/api/v1/workflow/actions/default/fire/PUBLISH", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "workflow", + "actions", + "default", + "fire", + "PUBLISH" + ] + } + }, + "response": [] + }, + { + "name": "invalidateSession", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "pm.test(\"Body matches string\", function () {", + " pm.expect(pm.response.text()).to.include(\"Logout successfully\");", + "});", + "", + "pm.environment.unset('jwt');", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{serverURL}}/api/v1/logout", + "host": [ + "{{serverURL}}" + ], + "path": [ + "api", + "v1", + "logout" + ] + } + }, + "response": [] + }, + { + "name": "Check Cache-Control", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Cache-Control is correct\", function () {", + " pm.response.to.be.header('Cache-Control','max-age=100');", + "});" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{serverURL}}/pageassetsystemtemplate", + "host": [ + "{{serverURL}}" + ], + "path": [ + "pageassetsystemtemplate" + ] + } + }, + "response": [] + } + ], + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{jwt}}", + "type": "string" + } + ] + }, + "event": [ + { + "listen": "prerequest", + "script": { + "type": "text/javascript", + "exec": [ + " const serverURL = pm.environment.get('serverURL'); // Get the server URL from the environment variable", + " const apiUrl = `${serverURL}/api/v1/apitoken`; // Construct the full API URL", + "", + "// If we are unable to get the JWT we need to generate a new one", + " if (!pm.environment.get('jwt')) {", + " const username = pm.environment.get(\"user\");", + " const password = pm.environment.get(\"password\");", + " const basicAuth = Buffer.from(`${username}:${password}`).toString('base64');", + "", + "", + " const requestOptions = {", + " url: apiUrl,", + " method: \"POST\",", + " header: {", + " \"accept\": \"*/*\",", + " \"content-type\": \"application/json\",", + " \"Authorization\": `Basic ${basicAuth}`", + " },", + " body: {", + " mode: \"raw\",", + " raw: JSON.stringify({", + " \"expirationSeconds\": 7200,", + " \"userId\": \"dotcms.org.1\",", + " \"network\": \"0.0.0.0/0\",", + " \"claims\": {\"label\": \"postman-tests\"}", + " })", + " }", + " };", + "", + "", + " pm.sendRequest(requestOptions, function (err, response) {", + " if (err) {", + " console.log(err);", + " } else {", + " const jwt = response.json().entity.jwt;", + " pm.environment.set('jwt', jwt);", + " console.log(jwt);", + " }", + " });", + " }" + ] + } + }, + { + "listen": "test", + "script": { + "type": "text/javascript", + "exec": [ + "" + ] + } + } + ], + "variable": [ + { + "key": "contentTypeIdMovingLayoutBUG", + "value": "" + }, + { + "key": "spanish_content_container_id", + "value": "" + }, + { + "key": "containerIdMovingLayoutBUG", + "value": "" + }, + { + "key": "tamplateIdMovingLayoutBUG", + "value": "" + }, + { + "key": "p1IdMovingLayoutBUG", + "value": "" + }, + { + "key": "contentAId", + "value": "" + }, + { + "key": "contentBId", + "value": "" + }, + { + "key": "p2IdMovingLayoutBUG", + "value": "" + }, + { + "key": "relatedContentTypeVarName", + "value": "" + }, + { + "key": "relationshipContentTypeId", + "value": "" + }, + { + "key": "relationshipContentTypeName", + "value": "" + }, + { + "key": "relationshipContentTypeVarName", + "value": "" + }, + { + "key": "imageContentIdentifier", + "value": "" + }, + { + "key": "contentImgIdentifier", + "value": "" + }, + { + "key": "contentRelationshipIdentifier", + "value": "" + }, + { + "key": "page_id", + "value": "" + }, + { + "key": "page_name", + "value": "" + } + ] +} \ No newline at end of file