/**
* Copyright (c) 2000-present Liferay, Inc. All rights reserved.
*
* This library is free software; you can redistribute it and/or modify it under
* the terms of the GNU Lesser General Public License as published by the Free
* Software Foundation; either version 2.1 of the License, or (at your option)
* any later version.
*
* This library is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
* details.
*/
package com.liferay.blogs.attachments.test;
import com.liferay.arquillian.extension.junit.bridge.junit.Arquillian;
import com.liferay.blogs.model.BlogsEntry;
import com.liferay.blogs.service.BlogsEntryLocalServiceUtil;
import com.liferay.blogs.util.BlogsEntryAttachmentFileEntryUtil;
import com.liferay.blogs.util.test.BlogsTestUtil;
import com.liferay.portal.kernel.editor.EditorConstants;
import com.liferay.portal.kernel.model.Group;
import com.liferay.portal.kernel.model.User;
import com.liferay.portal.kernel.portletfilerepository.PortletFileRepositoryUtil;
import com.liferay.portal.kernel.repository.model.FileEntry;
import com.liferay.portal.kernel.repository.model.Folder;
import com.liferay.portal.kernel.service.ServiceContext;
import com.liferay.portal.kernel.test.rule.AggregateTestRule;
import com.liferay.portal.kernel.test.rule.DeleteAfterTestRun;
import com.liferay.portal.kernel.test.rule.Sync;
import com.liferay.portal.kernel.test.rule.SynchronousDestinationTestRule;
import com.liferay.portal.kernel.test.util.GroupTestUtil;
import com.liferay.portal.kernel.test.util.RandomTestUtil;
import com.liferay.portal.kernel.test.util.ServiceContextTestUtil;
import com.liferay.portal.kernel.test.util.TestPropsValues;
import com.liferay.portal.kernel.test.util.UserTestUtil;
import com.liferay.portal.kernel.util.ContentTypes;
import com.liferay.portal.kernel.util.DigesterUtil;
import com.liferay.portal.kernel.util.StringBundler;
import com.liferay.portal.kernel.util.StringPool;
import com.liferay.portal.kernel.util.TempFileEntryUtil;
import com.liferay.portal.service.test.ServiceTestUtil;
import com.liferay.portal.test.rule.LiferayIntegrationTestRule;
import com.liferay.portlet.blogs.BlogsEntryAttachmentFileEntryReference;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import org.junit.Assert;
import org.junit.Before;
import org.junit.ClassRule;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
/**
* @author Roberto Díaz
* @author Sergio González
*/
@RunWith(Arquillian.class)
@Sync
public class BlogsEntryAttachmentFileEntryHelperTest {
@ClassRule
@Rule
public static final AggregateTestRule aggregateTestRule =
new AggregateTestRule(
new LiferayIntegrationTestRule(),
SynchronousDestinationTestRule.INSTANCE);
@Before
public void setUp() throws Exception {
_group = GroupTestUtil.addGroup();
_user = UserTestUtil.addGroupAdminUser(_group);
ServiceTestUtil.setUser(TestPropsValues.getUser());
}
@Test
public void testAddBlogsEntryAttachmentFileEntries() throws Exception {
FileEntry tempFileEntry = TempFileEntryUtil.addTempFileEntry(
_group.getGroupId(), _user.getUserId(), _TEMP_FOLDER_NAME,
"image.jpg", getInputStream(), ContentTypes.IMAGE_JPEG);
List<BlogsEntryAttachmentFileEntryReference>
blogsEntryAttachmentFileEntryReferences =
getBlogsEntryAttachmentFileEntryReferences(tempFileEntry);
Assert.assertEquals(
blogsEntryAttachmentFileEntryReferences.toString(), 1,
blogsEntryAttachmentFileEntryReferences.size());
BlogsEntryAttachmentFileEntryReference
blogsEntryAttachmentFileEntryReference =
blogsEntryAttachmentFileEntryReferences.get(0);
Assert.assertEquals(
tempFileEntry.getFileEntryId(),
blogsEntryAttachmentFileEntryReference.
getTempBlogsEntryAttachmentFileEntryId());
FileEntry fileEntry =
blogsEntryAttachmentFileEntryReference.
getBlogsEntryAttachmentFileEntry();
Assert.assertEquals(tempFileEntry.getTitle(), fileEntry.getTitle());
Assert.assertEquals(
tempFileEntry.getMimeType(), fileEntry.getMimeType());
Assert.assertEquals(
DigesterUtil.digestBase64(tempFileEntry.getContentStream()),
DigesterUtil.digestBase64(fileEntry.getContentStream()));
}
@Test
public void testGetTempBlogsEntryAttachmentFileEntries() throws Exception {
FileEntry tempFileEntry = TempFileEntryUtil.addTempFileEntry(
_group.getGroupId(), _user.getUserId(), _TEMP_FOLDER_NAME,
"image.jpg", getInputStream(), ContentTypes.IMAGE_JPEG);
String tempFileEntryImgTag =
BlogsTestUtil.getTempBlogsEntryAttachmentFileEntryImgTag(
tempFileEntry.getFileEntryId(),
PortletFileRepositoryUtil.getPortletFileEntryURL(
null, tempFileEntry, StringPool.BLANK));
List<FileEntry> tempBlogsEntryAttachmentFileEntries =
BlogsEntryAttachmentFileEntryUtil.
getTempBlogsEntryAttachmentFileEntries(
getContent(tempFileEntryImgTag));
Assert.assertEquals(
tempBlogsEntryAttachmentFileEntries.toString(), 1,
tempBlogsEntryAttachmentFileEntries.size());
for (FileEntry tempBlogsEntryAttachmentFileEntry :
tempBlogsEntryAttachmentFileEntries) {
Assert.assertEquals(
tempFileEntry.getFileEntryId(),
tempBlogsEntryAttachmentFileEntry.getFileEntryId());
}
}
@Test
public void testGetTempBlogsEntryAttachmentFileEntriesWithModifiedImgTag()
throws Exception {
FileEntry tempFileEntry = TempFileEntryUtil.addTempFileEntry(
_group.getGroupId(), _user.getUserId(), _TEMP_FOLDER_NAME,
"image.jpg", getInputStream(), ContentTypes.IMAGE_JPEG);
String tempFileEntryImgTag = getModifiedTempFileEntryImgTag(
tempFileEntry);
List<FileEntry> tempBlogsEntryAttachmentFileEntries =
BlogsEntryAttachmentFileEntryUtil.
getTempBlogsEntryAttachmentFileEntries(
getContent(tempFileEntryImgTag));
Assert.assertEquals(
tempBlogsEntryAttachmentFileEntries.toString(), 1,
tempBlogsEntryAttachmentFileEntries.size());
for (FileEntry tempBlogsEntryAttachmentFileEntry :
tempBlogsEntryAttachmentFileEntries) {
Assert.assertEquals(
tempFileEntry.getFileEntryId(),
tempBlogsEntryAttachmentFileEntry.getFileEntryId());
}
}
protected List<BlogsEntryAttachmentFileEntryReference>
getBlogsEntryAttachmentFileEntryReferences(
FileEntry tempFileEntry)
throws Exception {
ServiceContext serviceContext =
ServiceContextTestUtil.getServiceContext(
_group.getGroupId(), _user.getUserId());
BlogsEntry entry = BlogsEntryLocalServiceUtil.addEntry(
_user.getUserId(), RandomTestUtil.randomString(),
RandomTestUtil.randomString(), serviceContext);
List<FileEntry> tempFileEntries = new ArrayList<>();
tempFileEntries.add(tempFileEntry);
Folder folder = BlogsEntryLocalServiceUtil.addAttachmentsFolder(
_user.getUserId(), _group.getGroupId());
return BlogsEntryAttachmentFileEntryUtil.
addBlogsEntryAttachmentFileEntries(
_group.getGroupId(), _user.getUserId(), entry.getEntryId(),
folder.getFolderId(), tempFileEntries);
}
protected String getContent(String tempFileEntryImgTag) {
StringBundler sb = new StringBundler(10);
sb.append("<p>");
sb.append(RandomTestUtil.randomStrings(50));
sb.append("</p>");
sb.append("<a href=\"www.liferay.com\"><span>");
sb.append(RandomTestUtil.randomStrings(50));
sb.append("<img src=\"www.liferay.com/logo.png\" /><span>");
sb.append(RandomTestUtil.randomStrings(50));
sb.append("</span>");
sb.append(tempFileEntryImgTag);
sb.append("<span></a>");
return sb.toString();
}
protected InputStream getInputStream() {
Class<?> clazz = BlogsEntryAttachmentFileEntryHelperTest.class;
ClassLoader classLoader = clazz.getClassLoader();
return classLoader.getResourceAsStream(
"com/liferay/blogs/dependencies/test.jpg");
}
protected String getModifiedTempFileEntryImgTag(FileEntry tempFileEntry) {
StringBundler sb = new StringBundler(7);
sb.append("<img ");
sb.append(EditorConstants.ATTRIBUTE_DATA_IMAGE_ID);
sb.append("=\"");
sb.append(tempFileEntry.getFileEntryId());
sb.append("\" class=\"test-class\" id=\"test-id\" src=\"");
sb.append(
PortletFileRepositoryUtil.getPortletFileEntryURL(
null, tempFileEntry, StringPool.BLANK));
sb.append("\" title=\"test-title\" />");
return sb.toString();
}
private static final String _TEMP_FOLDER_NAME = BlogsEntry.class.getName();
@DeleteAfterTestRun
private Group _group;
@DeleteAfterTestRun
private User _user;
}