/* * Copyright (C) 2003-2012 eXo Platform SAS. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Affero General Public License * as published by the Free Software Foundation; either version 3 * of the License, or (at your option) any later version. * * This program 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 General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see<http://www.gnu.org/licenses/>. */ package org.exoplatform.forum.service.ws.test; import java.io.InputStream; import java.util.ArrayList; import java.util.List; import javax.ws.rs.core.MultivaluedMap; import javax.ws.rs.ext.RuntimeDelegate; import org.exoplatform.forum.service.MessageBuilder; import org.exoplatform.forum.service.Post; import org.exoplatform.forum.service.Tag; import org.exoplatform.forum.service.Topic; import org.exoplatform.forum.service.ws.AbstractResourceTest; import org.exoplatform.forum.service.ws.BanIP; import org.exoplatform.forum.service.ws.BeanToJsons; import org.exoplatform.forum.service.ws.ForumWebservice; import org.exoplatform.forum.service.ws.MessageBean; import org.exoplatform.services.rest.impl.ContainerResponse; import org.exoplatform.services.rest.impl.MultivaluedMapImpl; import org.exoplatform.services.rest.impl.RuntimeDelegateImpl; import org.exoplatform.services.rest.tools.ByteArrayContainerResponseWriter; public class ForumWebserviceTestCase extends AbstractResourceTest { ForumWebservice forumWebservice; static final String baseURI = "/ks/forum"; static final String fullURI = "http://localhost:8080".concat(baseURI); public void setUp() throws Exception { RuntimeDelegate.setInstance(new RuntimeDelegateImpl()); super.setUp(); forumWebservice = (ForumWebservice) getService(ForumWebservice.class); registry(forumWebservice); initDefaultData(); } public void tearDown() throws Exception { super.tearDown(); } public ContainerResponse performTestCase(String path) throws Exception { MultivaluedMap<String, String> h = new MultivaluedMapImpl(); ByteArrayContainerResponseWriter writer = new ByteArrayContainerResponseWriter(); ContainerResponse response = service("GET", fullURI.concat(path), "", h, null, writer); return response; } public void testGetMessage() throws Exception { loginUser(USER_ROOT); for (int i = 0; i < 10; i++) { Post post = createdPost(); post.setName("post " + i); forumService_.savePost(categoryId, forumId, topicId, post, true, new MessageBuilder()); } String eventURI = "/getmessage/5"; ContainerResponse response = performTestCase(eventURI); assertNotNull(response); assertEquals(response.getStatus(), 200); // assert data MessageBean bean = (MessageBean)response.getEntity(); assertEquals(bean.getData().size(), 5); } public void testGetPulicMessage() throws Exception { loginUser(USER_DEMO); for (int i = 0; i < 10; i++) { Post post = createdPost(); post.setOwner(USER_DEMO); post.setName("post of demo " + i); forumService_.savePost(categoryId, forumId, topicId, post, true, new MessageBuilder()); } String eventURI = "/getpublicmessage/5"; ContainerResponse response = performTestCase(eventURI); assertNotNull(response); assertEquals(response.getStatus(), 200); // assert data MessageBean bean = (MessageBean)response.getEntity(); assertEquals(bean.getData().size(), 5); } /** * @throws Exception */ public void testFilterIps() throws Exception { forumService_.addBanIP("192.168.1.10"); forumService_.addBanIP("192.168.1.11"); //Test with all String eventURI = "/filter/all"; ContainerResponse response = performTestCase(eventURI); assertNotNull(response); assertEquals(response.getStatus(), 200); BeanToJsons<BanIP> bean = (BeanToJsons<BanIP>) response.getEntity(); assertEquals(2,bean.getJsonList().size()); assertEquals("192.168.1.11",bean.getJsonList().get(1).getIp()); //Test with an ip exact eventURI="/filter/192.168.1.11"; response = performTestCase(eventURI); assertNotNull(response); assertEquals(response.getStatus(), 200); bean = (BeanToJsons<BanIP>) response.getEntity(); assertEquals(1,bean.getJsonList().size()); assertEquals("192.168.1.11",bean.getJsonList().get(0).getIp()); //Test with an ip that don't exist in the banip's list eventURI="/filter/192.168.1.12"; response = performTestCase(eventURI); assertNotNull(response); assertEquals(response.getStatus(), 200); bean = (BeanToJsons<BanIP>) response.getEntity(); assertEquals(0,bean.getJsonList().size()); } /** * @throws Exception */ public void testFilterIpBanForum() throws Exception { forumService_.addBanIPForum("192.168.0.1", categoryId+"/"+forumId); forumService_.addBanIPForum("192.168.0.2", categoryId+"/"+forumId); forumService_.addBanIPForum("192.168.0.3", categoryId+"/"+forumId); //Test with an ip that don't exist in the banip's list String eventURI = "/filterIpBanforum/"+categoryId+"."+forumId+"/192.168.0.10"; ContainerResponse response = performTestCase(eventURI); assertNotNull(response); assertEquals(response.getStatus(), 200); BeanToJsons<BanIP> bean = (BeanToJsons<BanIP>) response.getEntity(); assertEquals(0,bean.getJsonList().size()); //Test with an ip exact eventURI="/filterIpBanforum/"+categoryId+"."+forumId+"/192.168.0.1"; response = performTestCase(eventURI); assertNotNull(response); assertEquals(response.getStatus(), 200); bean = (BeanToJsons<BanIP>) response.getEntity(); assertEquals(1,bean.getJsonList().size()); assertEquals("192.168.0.1",bean.getJsonList().get(0).getIp()); //Test with all eventURI="/filterIpBanforum/"+categoryId+"."+forumId+"/all"; response = performTestCase(eventURI); assertNotNull(response); assertEquals(response.getStatus(), 200); bean = (BeanToJsons<BanIP>) response.getEntity(); assertEquals(3,bean.getJsonList().size()); assertEquals("192.168.0.3",bean.getJsonList().get(2).getIp()); } public void testFilterTagNameForum() throws Exception { List<Tag> tags = new ArrayList<Tag>(10); for (int i = 0; i < 10; i++) { Tag tag = new Tag(); tag.setName("newfoo" + i); tags.add(tag); } Topic A = forumService_.getTopic(categoryId, forumId, topicId, USER_ROOT); forumService_.addTag(tags, USER_ROOT, A.getPath()); tags = forumService_.getAllTags(); // when user click on add Tag, list all tags String userAndTopicId = USER_DEMO + "," + topicId; String eventURI = "/filterTagNameForum/"+userAndTopicId+"/onclickForm"; ContainerResponse response = performTestCase(eventURI); assertNotNull(response); assertEquals(response.getStatus(), 200); BeanToJsons<BanIP> results = (BeanToJsons<BanIP>) response.getEntity(); assertNotNull(results); // When other user filter tags on topic A userAndTopicId = USER_ROOT + "," + (new Topic()).getId(); eventURI = "/filterTagNameForum/"+userAndTopicId+"/foo"; response = performTestCase(eventURI); assertNotNull(response); assertEquals(response.getStatus(), 200); results = (BeanToJsons<BanIP>) response.getEntity(); assertNotNull(results); } public void testViewrss() throws Exception { String eventURI = "/rss/" + topicId; ContainerResponse response = performTestCase(eventURI); assertNotNull(response); assertEquals(response.getStatus(), 200); InputStream ip = (InputStream) response.getEntity(); assertNotNull(ip); } public void testCheckPublicRss() throws Exception { forumService_.addWatch(-1, forumId, null, USER_JOHN); // save watch rss by john and test String eventURI = "/rss/user/john"; ContainerResponse response = performTestCase(eventURI); assertNotNull(response); assertEquals(response.getStatus(), 200); InputStream ip = (InputStream) response.getEntity(); assertNotNull(ip); } }