/modules/apps/export-import/export-import-test/src/testIntegration/java/com/liferay/exportimport/internal/content/processor/test/LayoutReferencesExportImportContentProcessorTest.java

https://github.com/danielreuther/liferay-portal · Java · 837 lines · 591 code · 230 blank · 16 comment · 18 complexity · f05383066c074f9226ed5fe1b29454ee MD5 · raw file

  1. /**
  2. * Copyright (c) 2000-present Liferay, Inc. All rights reserved.
  3. *
  4. * This library is free software; you can redistribute it and/or modify it under
  5. * the terms of the GNU Lesser General Public License as published by the Free
  6. * Software Foundation; either version 2.1 of the License, or (at your option)
  7. * any later version.
  8. *
  9. * This library is distributed in the hope that it will be useful, but WITHOUT
  10. * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
  11. * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
  12. * details.
  13. */
  14. package com.liferay.exportimport.internal.content.processor.test;
  15. import com.liferay.arquillian.extension.junit.bridge.junit.Arquillian;
  16. import com.liferay.exportimport.content.processor.ExportImportContentProcessor;
  17. import com.liferay.exportimport.kernel.lar.PortletDataContext;
  18. import com.liferay.exportimport.kernel.lar.PortletDataContextFactoryUtil;
  19. import com.liferay.exportimport.test.util.TestReaderWriter;
  20. import com.liferay.exportimport.test.util.TestUserIdStrategy;
  21. import com.liferay.journal.test.util.JournalTestUtil;
  22. import com.liferay.layout.test.util.LayoutFriendlyURLRandomizerBumper;
  23. import com.liferay.layout.test.util.LayoutTestUtil;
  24. import com.liferay.petra.string.StringBundler;
  25. import com.liferay.petra.string.StringPool;
  26. import com.liferay.portal.kernel.model.Company;
  27. import com.liferay.portal.kernel.model.Group;
  28. import com.liferay.portal.kernel.model.Layout;
  29. import com.liferay.portal.kernel.model.LayoutSet;
  30. import com.liferay.portal.kernel.model.StagedModel;
  31. import com.liferay.portal.kernel.service.CompanyLocalService;
  32. import com.liferay.portal.kernel.service.GroupLocalService;
  33. import com.liferay.portal.kernel.test.randomizerbumpers.NumericStringRandomizerBumper;
  34. import com.liferay.portal.kernel.test.randomizerbumpers.UniqueStringRandomizerBumper;
  35. import com.liferay.portal.kernel.test.rule.AggregateTestRule;
  36. import com.liferay.portal.kernel.test.util.GroupTestUtil;
  37. import com.liferay.portal.kernel.test.util.RandomTestUtil;
  38. import com.liferay.portal.kernel.util.LocaleUtil;
  39. import com.liferay.portal.kernel.util.Portal;
  40. import com.liferay.portal.kernel.util.Time;
  41. import com.liferay.portal.kernel.xml.Document;
  42. import com.liferay.portal.kernel.xml.Element;
  43. import com.liferay.portal.kernel.xml.SAXReaderUtil;
  44. import com.liferay.portal.test.rule.Inject;
  45. import com.liferay.portal.test.rule.LiferayIntegrationTestRule;
  46. import com.liferay.portal.test.rule.PermissionCheckerMethodTestRule;
  47. import com.liferay.portal.util.PropsValues;
  48. import java.util.Date;
  49. import java.util.HashMap;
  50. import java.util.Locale;
  51. import java.util.TreeMap;
  52. import org.junit.Assert;
  53. import org.junit.ClassRule;
  54. import org.junit.Rule;
  55. import org.junit.Test;
  56. import org.junit.runner.RunWith;
  57. /**
  58. * @author Michael Bowerman
  59. */
  60. @RunWith(Arquillian.class)
  61. public class LayoutReferencesExportImportContentProcessorTest {
  62. @ClassRule
  63. @Rule
  64. public static final AggregateTestRule aggregateTestRule =
  65. new AggregateTestRule(
  66. new LiferayIntegrationTestRule(),
  67. PermissionCheckerMethodTestRule.INSTANCE);
  68. @Test
  69. public void testExportDefaultGroupCompanyHostImportDefaultGroupCompanyHost()
  70. throws Exception {
  71. Group exportGroup = GroupTestUtil.addGroup();
  72. GroupTestUtil.addLayoutSetVirtualHost(exportGroup, false);
  73. Group importGroup = GroupTestUtil.addGroup();
  74. GroupTestUtil.addLayoutSetVirtualHost(importGroup, false);
  75. Layout exportLayout = LayoutTestUtil.addTypePortletLayout(exportGroup);
  76. Assert.assertEquals(
  77. _getCompanyHostPortalURL(importGroup) +
  78. exportLayout.getFriendlyURL(),
  79. _exportAndImportLayoutURL(
  80. _getCompanyHostPortalURL(exportGroup) +
  81. exportLayout.getFriendlyURL(),
  82. exportGroup, importGroup, true, true));
  83. }
  84. @Test
  85. public void testExportDefaultGroupCompanyHostImportNoVirtualHost()
  86. throws Exception {
  87. Group exportGroup = GroupTestUtil.addGroup();
  88. Layout exportLayout = LayoutTestUtil.addTypePortletLayout(exportGroup);
  89. Group importGroup = GroupTestUtil.addGroup();
  90. Assert.assertEquals(
  91. _getCompanyHostPortalURL(importGroup) +
  92. PropsValues.LAYOUT_FRIENDLY_URL_PUBLIC_SERVLET_MAPPING +
  93. importGroup.getFriendlyURL() +
  94. exportLayout.getFriendlyURL(),
  95. _exportAndImportLayoutURL(
  96. _getCompanyHostPortalURL(exportGroup) +
  97. exportLayout.getFriendlyURL(),
  98. exportGroup, importGroup, true, false));
  99. }
  100. @Test
  101. public void testExportDefaultGroupCompanyHostImportPublicPagesVirtualHost()
  102. throws Exception {
  103. Group exportGroup = GroupTestUtil.addGroup();
  104. Layout exportLayout = LayoutTestUtil.addTypePortletLayout(exportGroup);
  105. Group importGroup = GroupTestUtil.addGroup();
  106. GroupTestUtil.addLayoutSetVirtualHost(importGroup, false);
  107. Assert.assertEquals(
  108. _getGroupVirtualHostPortalURL(importGroup, false) +
  109. exportLayout.getFriendlyURL(),
  110. _exportAndImportLayoutURL(
  111. _getCompanyHostPortalURL(exportGroup) +
  112. exportLayout.getFriendlyURL(),
  113. exportGroup, importGroup, true, false));
  114. }
  115. @Test
  116. public void testExportDefaultGroupPublicPagesVirtualHostImportDefaultGroupNoVirtualHost()
  117. throws Exception {
  118. Group exportGroup = GroupTestUtil.addGroup();
  119. GroupTestUtil.addLayoutSetVirtualHost(exportGroup, false);
  120. Layout exportLayout = LayoutTestUtil.addTypePortletLayout(exportGroup);
  121. Group importGroup = GroupTestUtil.addGroup();
  122. Assert.assertEquals(
  123. _getCompanyHostPortalURL(importGroup) +
  124. exportLayout.getFriendlyURL(),
  125. _exportAndImportLayoutURL(
  126. _getGroupVirtualHostPortalURL(exportGroup, false) +
  127. exportLayout.getFriendlyURL(),
  128. exportGroup, importGroup, true, true));
  129. }
  130. @Test
  131. public void testExportDefaultGroupPublicPagesVirtualHostImportDefaultGroupPublicPagesVirtualHost()
  132. throws Exception {
  133. Group exportGroup = GroupTestUtil.addGroup();
  134. GroupTestUtil.addLayoutSetVirtualHost(exportGroup, false);
  135. Layout exportLayout = LayoutTestUtil.addTypePortletLayout(exportGroup);
  136. Group importGroup = GroupTestUtil.addGroup();
  137. GroupTestUtil.addLayoutSetVirtualHost(importGroup, false);
  138. Assert.assertEquals(
  139. _getGroupVirtualHostPortalURL(importGroup, false) +
  140. exportLayout.getFriendlyURL(),
  141. _exportAndImportLayoutURL(
  142. _getGroupVirtualHostPortalURL(exportGroup, false) +
  143. exportLayout.getFriendlyURL(),
  144. exportGroup, importGroup, true, true));
  145. }
  146. @Test
  147. public void testExportDefaultGroupPublicPagesVirtualHostImportNoVirtualHost()
  148. throws Exception {
  149. Group exportGroup = GroupTestUtil.addGroup();
  150. GroupTestUtil.addLayoutSetVirtualHost(exportGroup, false);
  151. Layout exportLayout = LayoutTestUtil.addTypePortletLayout(exportGroup);
  152. Group importGroup = GroupTestUtil.addGroup();
  153. Assert.assertEquals(
  154. _getCompanyHostPortalURL(importGroup) +
  155. PropsValues.LAYOUT_FRIENDLY_URL_PUBLIC_SERVLET_MAPPING +
  156. importGroup.getFriendlyURL() +
  157. exportLayout.getFriendlyURL(),
  158. _exportAndImportLayoutURL(
  159. _getGroupVirtualHostPortalURL(exportGroup, false) +
  160. exportLayout.getFriendlyURL(),
  161. exportGroup, importGroup, true, false));
  162. }
  163. @Test
  164. public void testExportDefaultGroupPublicPagesVirtualHostImportPublicPagesVirtualHost()
  165. throws Exception {
  166. Group exportGroup = GroupTestUtil.addGroup();
  167. GroupTestUtil.addLayoutSetVirtualHost(exportGroup, false);
  168. Layout exportLayout = LayoutTestUtil.addTypePortletLayout(exportGroup);
  169. Group importGroup = GroupTestUtil.addGroup();
  170. GroupTestUtil.addLayoutSetVirtualHost(importGroup, false);
  171. Assert.assertEquals(
  172. _getGroupVirtualHostPortalURL(importGroup, false) +
  173. exportLayout.getFriendlyURL(),
  174. _exportAndImportLayoutURL(
  175. _getGroupVirtualHostPortalURL(exportGroup, false) +
  176. exportLayout.getFriendlyURL(),
  177. exportGroup, importGroup, true, false));
  178. }
  179. @Test
  180. public void testExportDefaultGroupRelativeURLImportDefaultGroup()
  181. throws Exception {
  182. Group exportGroup = GroupTestUtil.addGroup();
  183. Layout exportLayout = LayoutTestUtil.addTypePortletLayout(exportGroup);
  184. Group importGroup = GroupTestUtil.addGroup();
  185. Assert.assertEquals(
  186. exportLayout.getFriendlyURL(),
  187. _exportAndImportLayoutURL(
  188. exportLayout.getFriendlyURL(), exportGroup, importGroup, true,
  189. true));
  190. }
  191. @Test
  192. public void testExportDefaultGroupRelativeURLImportNoVirtualHost()
  193. throws Exception {
  194. Group exportGroup = GroupTestUtil.addGroup();
  195. Layout exportLayout = LayoutTestUtil.addTypePortletLayout(exportGroup);
  196. Group importGroup = GroupTestUtil.addGroup();
  197. Assert.assertEquals(
  198. PropsValues.LAYOUT_FRIENDLY_URL_PUBLIC_SERVLET_MAPPING +
  199. importGroup.getFriendlyURL() + exportLayout.getFriendlyURL(),
  200. _exportAndImportLayoutURL(
  201. exportLayout.getFriendlyURL(), exportGroup, importGroup, true,
  202. false));
  203. }
  204. @Test
  205. public void testExportDefaultGroupRelativeURLImportPublicPagesVirtualHost()
  206. throws Exception {
  207. Group exportGroup = GroupTestUtil.addGroup();
  208. Layout exportLayout = LayoutTestUtil.addTypePortletLayout(exportGroup);
  209. Group importGroup = GroupTestUtil.addGroup();
  210. GroupTestUtil.addLayoutSetVirtualHost(importGroup, false);
  211. Assert.assertEquals(
  212. exportLayout.getFriendlyURL(),
  213. _exportAndImportLayoutURL(
  214. exportLayout.getFriendlyURL(), exportGroup, importGroup, true,
  215. false));
  216. }
  217. @Test
  218. public void testExportDefaultGroupRelativeURLWithLocaleImportDefaultGroup()
  219. throws Exception {
  220. Group exportGroup = GroupTestUtil.addGroup();
  221. Layout exportLayout = LayoutTestUtil.addTypePortletLayout(exportGroup);
  222. Group importGroup = GroupTestUtil.addGroup();
  223. Assert.assertEquals(
  224. StringPool.SLASH + LocaleUtil.getDefault() +
  225. exportLayout.getFriendlyURL(),
  226. _exportAndImportLayoutURL(
  227. StringPool.SLASH + LocaleUtil.getDefault() +
  228. exportLayout.getFriendlyURL(),
  229. exportGroup, importGroup, true, true));
  230. }
  231. @Test
  232. public void testExportPrivatePagesVirtualHostURLImportDefaultGroup()
  233. throws Exception {
  234. Group exportGroup = GroupTestUtil.addGroup();
  235. GroupTestUtil.addLayoutSetVirtualHost(exportGroup, true);
  236. Layout exportLayout = LayoutTestUtil.addTypePortletLayout(
  237. exportGroup, true);
  238. Group importGroup = GroupTestUtil.addGroup();
  239. Assert.assertEquals(
  240. _getCompanyHostPortalURL(importGroup) +
  241. PropsValues.LAYOUT_FRIENDLY_URL_PRIVATE_GROUP_SERVLET_MAPPING +
  242. importGroup.getFriendlyURL() +
  243. exportLayout.getFriendlyURL(),
  244. _exportAndImportLayoutURL(
  245. _getGroupVirtualHostPortalURL(exportGroup, true) +
  246. exportLayout.getFriendlyURL(),
  247. exportGroup, importGroup, false, true));
  248. }
  249. @Test
  250. public void testExportPublicPagesVirtualHostImportDefaultGroupNoVirtualHost()
  251. throws Exception {
  252. Group exportGroup = GroupTestUtil.addGroup();
  253. GroupTestUtil.addLayoutSetVirtualHost(exportGroup, false);
  254. Layout exportLayout = LayoutTestUtil.addTypePortletLayout(exportGroup);
  255. Group importGroup = GroupTestUtil.addGroup();
  256. Assert.assertEquals(
  257. _getCompanyHostPortalURL(importGroup) +
  258. exportLayout.getFriendlyURL(),
  259. _exportAndImportLayoutURL(
  260. _getGroupVirtualHostPortalURL(exportGroup, false) +
  261. exportLayout.getFriendlyURL(),
  262. exportGroup, importGroup, false, true));
  263. }
  264. @Test
  265. public void testExportPublicPagesVirtualHostImportDefaultGroupPublicPagesVirtualHost()
  266. throws Exception {
  267. Group exportGroup = GroupTestUtil.addGroup();
  268. GroupTestUtil.addLayoutSetVirtualHost(exportGroup, false);
  269. Layout exportLayout = LayoutTestUtil.addTypePortletLayout(exportGroup);
  270. Group importGroup = GroupTestUtil.addGroup();
  271. GroupTestUtil.addLayoutSetVirtualHost(importGroup, false);
  272. Assert.assertEquals(
  273. _getGroupVirtualHostPortalURL(importGroup, false) +
  274. exportLayout.getFriendlyURL(),
  275. _exportAndImportLayoutURL(
  276. _getGroupVirtualHostPortalURL(exportGroup, false) +
  277. exportLayout.getFriendlyURL(),
  278. exportGroup, importGroup, false, true));
  279. }
  280. @Test
  281. public void testExportRelativeURLImportDefaultGroupNoVirtualHost()
  282. throws Exception {
  283. Group exportGroup = GroupTestUtil.addGroup();
  284. GroupTestUtil.addLayoutSetVirtualHost(exportGroup, false);
  285. Layout exportLayout = LayoutTestUtil.addTypePortletLayout(exportGroup);
  286. Assert.assertEquals(
  287. exportLayout.getFriendlyURL(),
  288. _exportAndImportLayoutURL(
  289. exportLayout.getFriendlyURL(), exportGroup,
  290. GroupTestUtil.addGroup(), false, true));
  291. }
  292. @Test
  293. public void testExternalURLNotModified() throws Exception {
  294. String exportedURL = RandomTestUtil.randomString(
  295. LayoutFriendlyURLRandomizerBumper.INSTANCE);
  296. Assert.assertEquals(
  297. exportedURL,
  298. _exportAndImportLayoutURL(
  299. exportedURL, GroupTestUtil.addGroup(),
  300. GroupTestUtil.addGroup()));
  301. }
  302. @Test
  303. public void testPrivateVirtualHostLayoutFriendlyURLFormatModifiedWhenNecessary()
  304. throws Exception {
  305. Group exportGroup = GroupTestUtil.addGroup();
  306. GroupTestUtil.addLayoutSetVirtualHost(exportGroup, true);
  307. Layout exportLayout = LayoutTestUtil.addTypePortletLayout(
  308. exportGroup, true);
  309. Group importGroup = GroupTestUtil.addGroup();
  310. Assert.assertEquals(
  311. _getCompanyHostPortalURL(importGroup) +
  312. PropsValues.LAYOUT_FRIENDLY_URL_PRIVATE_GROUP_SERVLET_MAPPING +
  313. importGroup.getFriendlyURL() +
  314. exportLayout.getFriendlyURL(),
  315. _exportAndImportLayoutURL(
  316. _getGroupVirtualHostPortalURL(exportGroup, true) +
  317. exportLayout.getFriendlyURL(),
  318. exportGroup, importGroup));
  319. }
  320. @Test
  321. public void testPrivateVirtualHostLayoutFriendlyURLFormatPreservedWhenPossible()
  322. throws Exception {
  323. Group exportGroup = GroupTestUtil.addGroup();
  324. GroupTestUtil.addLayoutSetVirtualHost(exportGroup, true);
  325. Layout exportLayout = LayoutTestUtil.addTypePortletLayout(
  326. exportGroup, true);
  327. Group importGroup = GroupTestUtil.addGroup();
  328. GroupTestUtil.addLayoutSetVirtualHost(importGroup, true);
  329. Assert.assertEquals(
  330. _getGroupVirtualHostPortalURL(importGroup, true) +
  331. exportLayout.getFriendlyURL(),
  332. _exportAndImportLayoutURL(
  333. _getGroupVirtualHostPortalURL(exportGroup, true) +
  334. exportLayout.getFriendlyURL(),
  335. exportGroup, importGroup));
  336. }
  337. @Test
  338. public void testPublicVirtualHostLayoutFriendlyURLFormatModifiedWhenNecessary()
  339. throws Exception {
  340. Group exportGroup = GroupTestUtil.addGroup();
  341. GroupTestUtil.addLayoutSetVirtualHost(exportGroup, false);
  342. Layout exportLayout = LayoutTestUtil.addTypePortletLayout(exportGroup);
  343. Group importGroup = GroupTestUtil.addGroup();
  344. Assert.assertEquals(
  345. _getCompanyHostPortalURL(importGroup) +
  346. PropsValues.LAYOUT_FRIENDLY_URL_PUBLIC_SERVLET_MAPPING +
  347. importGroup.getFriendlyURL() +
  348. exportLayout.getFriendlyURL(),
  349. _exportAndImportLayoutURL(
  350. _getGroupVirtualHostPortalURL(exportGroup, false) +
  351. exportLayout.getFriendlyURL(),
  352. exportGroup, importGroup));
  353. }
  354. @Test
  355. public void testPublicVirtualHostLayoutFriendlyURLFormatPreservedWhenPossible()
  356. throws Exception {
  357. Group exportGroup = GroupTestUtil.addGroup();
  358. GroupTestUtil.addLayoutSetVirtualHost(exportGroup, false);
  359. Layout exportLayout = LayoutTestUtil.addTypePortletLayout(exportGroup);
  360. Group importGroup = GroupTestUtil.addGroup();
  361. GroupTestUtil.addLayoutSetVirtualHost(importGroup, false);
  362. Assert.assertEquals(
  363. _getGroupVirtualHostPortalURL(importGroup, false) +
  364. exportLayout.getFriendlyURL(),
  365. _exportAndImportLayoutURL(
  366. _getGroupVirtualHostPortalURL(exportGroup, false) +
  367. exportLayout.getFriendlyURL(),
  368. exportGroup, importGroup));
  369. }
  370. @Test
  371. public void testRelativeLayoutFriendlyURLFormatModifiedWhenNecessary()
  372. throws Exception {
  373. Group exportGroup = GroupTestUtil.addGroup();
  374. GroupTestUtil.addLayoutSetVirtualHost(exportGroup, false);
  375. Layout exportLayout = LayoutTestUtil.addTypePortletLayout(exportGroup);
  376. Group importGroup = GroupTestUtil.addGroup();
  377. Assert.assertEquals(
  378. PropsValues.LAYOUT_FRIENDLY_URL_PUBLIC_SERVLET_MAPPING +
  379. importGroup.getFriendlyURL() + exportLayout.getFriendlyURL(),
  380. _exportAndImportLayoutURL(
  381. exportLayout.getFriendlyURL(), exportGroup, importGroup));
  382. }
  383. @Test
  384. public void testRelativeLayoutFriendlyURLFormatPreservedWhenPossible()
  385. throws Exception {
  386. Group exportGroup = GroupTestUtil.addGroup();
  387. GroupTestUtil.addLayoutSetVirtualHost(exportGroup, false);
  388. Layout exportLayout = LayoutTestUtil.addTypePortletLayout(exportGroup);
  389. Group importGroup = GroupTestUtil.addGroup();
  390. GroupTestUtil.addLayoutSetVirtualHost(importGroup, false);
  391. Assert.assertEquals(
  392. exportLayout.getFriendlyURL(),
  393. _exportAndImportLayoutURL(
  394. exportLayout.getFriendlyURL(), exportGroup, importGroup));
  395. }
  396. @Test
  397. public void testRelativePublicDefaultPageURLWithLocale() throws Exception {
  398. Group exportGroup = GroupTestUtil.addGroup();
  399. GroupTestUtil.addLayoutSetVirtualHost(exportGroup, false);
  400. Group importGroup = GroupTestUtil.addGroup();
  401. GroupTestUtil.addLayoutSetVirtualHost(importGroup, false);
  402. Locale siteDefaultLocale = _portal.getSiteDefaultLocale(exportGroup);
  403. String url = StringPool.SLASH + siteDefaultLocale.getLanguage();
  404. Assert.assertEquals(
  405. url, _exportAndImportLayoutURL(url, exportGroup, importGroup));
  406. }
  407. @Test
  408. public void testRelativePublicPageURLWithSlashWithLocale()
  409. throws Exception {
  410. Group exportGroup = GroupTestUtil.addGroup();
  411. GroupTestUtil.addLayoutSetVirtualHost(exportGroup, false);
  412. Group importGroup = GroupTestUtil.addGroup();
  413. GroupTestUtil.addLayoutSetVirtualHost(importGroup, false);
  414. Locale siteDefaultLocale = _portal.getSiteDefaultLocale(exportGroup);
  415. String layoutName = RandomTestUtil.randomString(
  416. LayoutFriendlyURLRandomizerBumper.INSTANCE,
  417. NumericStringRandomizerBumper.INSTANCE,
  418. UniqueStringRandomizerBumper.INSTANCE);
  419. layoutName = layoutName + StringPool.SLASH + layoutName;
  420. Layout exportLayout = LayoutTestUtil.addTypePortletLayout(
  421. exportGroup.getGroupId(), layoutName, false, null, false);
  422. String url = StringBundler.concat(
  423. StringPool.SLASH, siteDefaultLocale.getLanguage(),
  424. exportLayout.getFriendlyURL());
  425. Assert.assertEquals(
  426. url, _exportAndImportLayoutURL(url, exportGroup, importGroup));
  427. }
  428. @Test
  429. public void testValidateContentRelativePublicDefaultPageURLWithLocale()
  430. throws Exception {
  431. Group group = GroupTestUtil.addGroup();
  432. GroupTestUtil.addLayoutSetVirtualHost(group, false);
  433. Locale siteDefaultLocale = _portal.getSiteDefaultLocale(group);
  434. _layoutReferencesExportImportContentProcessor.validateContentReferences(
  435. group.getGroupId(),
  436. StringBundler.concat(
  437. _CONTENT_PREFIX, StringPool.SLASH,
  438. siteDefaultLocale.getLanguage(), _CONTENT_POSTFIX));
  439. }
  440. @Test
  441. public void testValidateContentRelativePublicPageURLWithSlashWithLocale()
  442. throws Exception {
  443. Group group = GroupTestUtil.addGroup();
  444. GroupTestUtil.addLayoutSetVirtualHost(group, false);
  445. Locale siteDefaultLocale = _portal.getSiteDefaultLocale(group);
  446. String layoutName = RandomTestUtil.randomString(
  447. LayoutFriendlyURLRandomizerBumper.INSTANCE,
  448. NumericStringRandomizerBumper.INSTANCE,
  449. UniqueStringRandomizerBumper.INSTANCE);
  450. layoutName = layoutName + StringPool.SLASH + layoutName;
  451. Layout layout = LayoutTestUtil.addTypePortletLayout(
  452. group.getGroupId(), layoutName, false, null, false);
  453. String url = StringBundler.concat(
  454. StringPool.SLASH, siteDefaultLocale.getLanguage(),
  455. layout.getFriendlyURL());
  456. _layoutReferencesExportImportContentProcessor.validateContentReferences(
  457. group.getGroupId(),
  458. StringBundler.concat(_CONTENT_PREFIX, url, _CONTENT_POSTFIX));
  459. }
  460. private String _exportAndImportLayoutURL(
  461. String url, Group exportGroup, Group importGroup)
  462. throws Exception {
  463. return _exportAndImportLayoutURL(
  464. url, exportGroup, importGroup, false, false);
  465. }
  466. private String _exportAndImportLayoutURL(
  467. String url, Group exportGroup, Group importGroup,
  468. boolean exportFromDefaultGroup, boolean importToDefaultGroup)
  469. throws Exception {
  470. TestReaderWriter testReaderWriter = new TestReaderWriter();
  471. Group defaultGroup = _groupLocalService.fetchGroup(
  472. exportGroup.getCompanyId(),
  473. PropsValues.VIRTUAL_HOSTS_DEFAULT_SITE_NAME);
  474. if (defaultGroup != null) {
  475. defaultGroup = _groupLocalService.fetchGroup(
  476. defaultGroup.getGroupId());
  477. }
  478. String exportGroupKey = exportGroup.getGroupKey();
  479. String importGroupKey = importGroup.getGroupKey();
  480. try {
  481. if (exportFromDefaultGroup) {
  482. if (defaultGroup != null) {
  483. defaultGroup.setGroupKey(_GROUP_KEY);
  484. defaultGroup = _groupLocalService.updateGroup(defaultGroup);
  485. }
  486. exportGroup.setGroupKey(
  487. PropsValues.VIRTUAL_HOSTS_DEFAULT_SITE_NAME);
  488. exportGroup = _groupLocalService.updateGroup(exportGroup);
  489. }
  490. PortletDataContext exportPortletDataContext =
  491. PortletDataContextFactoryUtil.createExportPortletDataContext(
  492. exportGroup.getCompanyId(), exportGroup.getGroupId(),
  493. new HashMap<>(),
  494. new Date(System.currentTimeMillis() - Time.HOUR),
  495. new Date(), testReaderWriter);
  496. Document document = SAXReaderUtil.createDocument();
  497. Element manifestRootElement = document.addElement("root");
  498. manifestRootElement.addElement("header");
  499. testReaderWriter.addEntry("/manifest.xml", document.asXML());
  500. Element rootElement = SAXReaderUtil.createElement("root");
  501. exportPortletDataContext.setExportDataRootElement(rootElement);
  502. Element missingReferencesElement = rootElement.addElement(
  503. "missing-references");
  504. exportPortletDataContext.setMissingReferencesElement(
  505. missingReferencesElement);
  506. StagedModel referrerStagedModel = JournalTestUtil.addArticle(
  507. exportGroup.getGroupId(), RandomTestUtil.randomString(),
  508. RandomTestUtil.randomString());
  509. String contentToExport = _CONTENT_PREFIX + url + _CONTENT_POSTFIX;
  510. String exportedContent =
  511. _layoutReferencesExportImportContentProcessor.
  512. replaceExportContentReferences(
  513. exportPortletDataContext, referrerStagedModel,
  514. contentToExport, true, false);
  515. if (exportFromDefaultGroup) {
  516. exportGroup.setGroupKey(exportGroupKey);
  517. exportGroup = _groupLocalService.updateGroup(exportGroup);
  518. if (defaultGroup != null) {
  519. defaultGroup.setGroupKey(
  520. PropsValues.VIRTUAL_HOSTS_DEFAULT_SITE_NAME);
  521. defaultGroup = _groupLocalService.updateGroup(defaultGroup);
  522. }
  523. }
  524. if (importToDefaultGroup) {
  525. if (defaultGroup != null) {
  526. defaultGroup.setGroupKey(_GROUP_KEY);
  527. defaultGroup = _groupLocalService.updateGroup(defaultGroup);
  528. }
  529. importGroup.setGroupKey(
  530. PropsValues.VIRTUAL_HOSTS_DEFAULT_SITE_NAME);
  531. importGroup = _groupLocalService.updateGroup(importGroup);
  532. }
  533. PortletDataContext importPortletDataContext =
  534. PortletDataContextFactoryUtil.createImportPortletDataContext(
  535. importGroup.getCompanyId(), importGroup.getGroupId(),
  536. new HashMap<>(), new TestUserIdStrategy(),
  537. testReaderWriter);
  538. importPortletDataContext.setImportDataRootElement(rootElement);
  539. importPortletDataContext.setMissingReferencesElement(
  540. missingReferencesElement);
  541. String importedContent =
  542. _layoutReferencesExportImportContentProcessor.
  543. replaceImportContentReferences(
  544. importPortletDataContext, referrerStagedModel,
  545. exportedContent);
  546. if (importToDefaultGroup) {
  547. importGroup.setGroupKey(importGroupKey);
  548. importGroup = _groupLocalService.updateGroup(importGroup);
  549. if (defaultGroup != null) {
  550. defaultGroup.setGroupKey(
  551. PropsValues.VIRTUAL_HOSTS_DEFAULT_SITE_NAME);
  552. defaultGroup = _groupLocalService.updateGroup(defaultGroup);
  553. }
  554. }
  555. return importedContent.substring(
  556. _CONTENT_PREFIX.length(),
  557. importedContent.length() - _CONTENT_POSTFIX.length());
  558. }
  559. catch (Exception exception) {
  560. exportGroup.setGroupKey(exportGroupKey);
  561. _groupLocalService.updateGroup(exportGroup);
  562. importGroup.setGroupKey(importGroupKey);
  563. _groupLocalService.updateGroup(importGroup);
  564. if (defaultGroup != null) {
  565. defaultGroup.setGroupKey(
  566. PropsValues.VIRTUAL_HOSTS_DEFAULT_SITE_NAME);
  567. _groupLocalService.updateGroup(defaultGroup);
  568. }
  569. throw exception;
  570. }
  571. }
  572. private String _getCompanyHostPortalURL(Group group) throws Exception {
  573. Company company = _companyLocalService.getCompany(group.getCompanyId());
  574. return _portal.getPortalURL(
  575. company.getVirtualHostname(), _portal.getPortalServerPort(false),
  576. false);
  577. }
  578. private String _getGroupVirtualHostPortalURL(
  579. Group group, boolean privateLayout) {
  580. LayoutSet layoutSet = null;
  581. if (privateLayout) {
  582. layoutSet = group.getPrivateLayoutSet();
  583. }
  584. else {
  585. layoutSet = group.getPublicLayoutSet();
  586. }
  587. TreeMap<String, String> virtualHostnames =
  588. layoutSet.getVirtualHostnames();
  589. return _portal.getPortalURL(
  590. virtualHostnames.firstKey(), _portal.getPortalServerPort(false),
  591. false);
  592. }
  593. private static final String _CONTENT_POSTFIX = "\">link</a>";
  594. private static final String _CONTENT_PREFIX = "<a href=\"";
  595. private static final String _GROUP_KEY = RandomTestUtil.randomString(
  596. NumericStringRandomizerBumper.INSTANCE,
  597. UniqueStringRandomizerBumper.INSTANCE);
  598. @Inject
  599. private CompanyLocalService _companyLocalService;
  600. @Inject
  601. private GroupLocalService _groupLocalService;
  602. @Inject(filter = "content.processor.type=LayoutReferences")
  603. private ExportImportContentProcessor<String>
  604. _layoutReferencesExportImportContentProcessor;
  605. @Inject
  606. private Portal _portal;
  607. }