You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@rave.apache.org by mf...@apache.org on 2011/04/01 18:42:42 UTC
svn commit: r1087796 [25/37] - in /incubator/rave/donations/mitre-osec: ./
conf/ db/ db/data/ db/sequences/ db/tables/ lib/ lib/apache-commons/
lib/apache-taglibs/ lib/build/ lib/build/cobertura/ lib/eclipselink/
lib/freemarker/ lib/google-collections/...
Added: incubator/rave/donations/mitre-osec/test/unit/java/org/mitre/portal/web/controller/RepositoryControllerTest.java
URL: http://svn.apache.org/viewvc/incubator/rave/donations/mitre-osec/test/unit/java/org/mitre/portal/web/controller/RepositoryControllerTest.java?rev=1087796&view=auto
==============================================================================
--- incubator/rave/donations/mitre-osec/test/unit/java/org/mitre/portal/web/controller/RepositoryControllerTest.java (added)
+++ incubator/rave/donations/mitre-osec/test/unit/java/org/mitre/portal/web/controller/RepositoryControllerTest.java Fri Apr 1 16:42:22 2011
@@ -0,0 +1,2345 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in
+ * compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.mitre.portal.web.controller;
+
+import org.mitre.portal.service.exception.RegionGadgetNotFoundException;
+import org.mitre.portal.model.PersonGadget;
+import org.mitre.portal.model.RegionGadget;
+import javax.mail.MessagingException;
+import javax.servlet.http.HttpServletRequest;
+import org.mitre.portal.service.EmailService;
+import org.mitre.portal.service.PersonService;
+import org.mitre.portal.service.exception.GadgetCommentNotFoundException;
+import org.mitre.portal.model.GadgetComment;
+import java.util.Arrays;
+import org.mitre.portal.model.GadgetAudience;
+import org.mitre.portal.model.GadgetRating;
+import org.mitre.portal.model.util.GadgetStatistics;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+import org.junit.Before;
+import org.junit.Test;
+import org.mitre.portal.model.Container;
+import org.mitre.portal.model.ContainerRegistry;
+import org.mitre.portal.model.Gadget;
+import org.mitre.portal.model.GadgetAuthorType;
+import org.mitre.portal.model.GadgetSupportLinkType;
+import org.mitre.portal.model.Page;
+import org.mitre.portal.model.Person;
+import org.mitre.portal.repository.ContainerRepository;
+import org.mitre.portal.security.UserService;
+import org.mitre.portal.service.ContainerService;
+import org.mitre.portal.service.GadgetService;
+import org.mitre.portal.service.PageService;
+import org.mitre.portal.service.StatisticsService;
+import org.mitre.portal.service.exception.DuplicateGadgetUrlException;
+import org.mitre.portal.service.exception.GadgetAudienceNotFoundException;
+import org.mitre.portal.service.exception.GadgetException;
+import org.mitre.portal.service.exception.GadgetNotFoundException;
+import org.mitre.portal.service.exception.GadgetUserPrefNotFoundException;
+import org.mitre.portal.service.exception.PageNotFoundException;
+import org.mitre.portal.web.model.JsonGadget;
+import org.mitre.portal.web.model.JsonRpcResult;
+import org.mitre.portal.web.util.ModelKeys;
+import org.mitre.portal.web.util.ViewNames;
+import org.springframework.ui.ExtendedModelMap;
+import static org.junit.Assert.*;
+import org.springframework.ui.Model;
+import static org.easymock.EasyMock.*;
+
+/**
+ *
+ * @author ACARLUCCI
+ */
+public class RepositoryControllerTest {
+
+ private RepositoryController repositoryController;
+ private PageService pageService;
+ private ContainerService containerService;
+ private GadgetService gadgetService;
+ private UserService userService;
+ private StatisticsService statisticsService;
+ private PersonService personService;
+ private EmailService emailService;
+
+ private Container container;
+ private Person user;
+ private Page page;
+ private Gadget gadget;
+ private List<ContainerRegistry> containerRegistryList;
+ private List<GadgetSupportLinkType> gadgetSupportLinkTypeList;
+ private List<GadgetAuthorType> gadgetAuthorTypeList;
+ private HttpServletResponse mockServletResponse;
+ private HttpServletRequest mockServletRequest;
+
+ // test data
+ private final Long VALID_CONTAINER_ID = 1L;
+ private final Long VALID_PAGE_ID = 1L;
+ private final Long VALID_GADGET_ID = 1L;
+ private final String VALID_USER_ID = "acarlucci";
+ private final Long VALID_REGION_GADGET_ID = 1L;
+ // TODO - change this to a more permanent test gadget file location on bishop
+ private final String VALID_GADGET_URL = "http://content.example.com/a/acarlucci/transfer/gadgets/junit_gadget_test.xml";
+ private final String VALID_TITLE = "Test Title";
+ private final String VALID_AUTHOR = "author";
+ private final String VALID_AUTHOR_EMAIL = "test@example.com";
+ private final String VALID_AUTHOR_USER_ID = "12345";
+ private final String VALID_DESCRIPTION = "Test Desc";
+ private final String VALID_VERSION = "0.9.9";
+ private final String VALID_THUMBNAIL_URL = "http://content.example.com/a/acarlucci/transfer/gadgets/sample.png";
+ private final boolean VALID_USE_CUSTOM_EDIT_UI = false;
+ private final boolean VALID_FEATURED = true;
+ private final Long VALID_GADGET_SUPPORT_LINK_TYPE_ID = 1L;
+ private final Long VALID_CONTAINER_REGISTRY_ID = 99L;
+ private final Long VALID_GADGET_AUTHOR_TYPE_ID = 1L;
+ private final String VALID_SCREENSHOT_URL = "http://content.example.com/a/acarlucci/transfer/gadgets/sample.png";
+ private final String VALID_SUPPORT_LINK = "acarlucci@example.com";
+ private final Long VALID_GADGET_HEIGHT = 300L;
+ private final String VALID_EMPTY_OAUTH_SERVICE_NAME = "";
+ private final String VALID_EMPTY_OAUTH_CONSUMER_KEY = "";
+ private final String VALID_EMPTY_OAUTH_CONSUMER_SECRET = "";
+ private final boolean VALID_SCROLLING = true;
+ private final boolean VALID_HIDDEN = false;
+ private final boolean VALID_SEND_COMMENT_EMAILS = true;
+ private final Long VALID_GADGET_RATING_ID = 33L;
+ private final String REDIRECT_VIEW = "redirect:view";
+ private final String REDIRECT_ADD_GADGET = "redirect:addGadget";
+ private final String REDIRECT_EDIT_GADGET = "redirect:editGadget";
+ private final String REDIRECT_GADGET_DETAIL = "redirect:gadgetDetail";
+ private final String REDIRECT_GADGET_COMMENTS = REDIRECT_GADGET_DETAIL + "#addcomment";
+ private List<GadgetAudience> validGadgetAudienceList;
+ private List<Gadget> validGadgetList;
+ private List<String> validGadgetTagsList;
+ private final Long VALID_GADGET_COMMENT_ID = 3L;
+ private List<GadgetComment> validGadgetCommentList;
+ private final String VALID_HOST_NAME = "dummy.example.com";
+ private int VALID_APPLICATION_PORT = 80;
+ private final String VALID_CONTEXT = "/portal";
+
+ private Long[] validGadgetAudiences;
+ private String validGadgetTags;
+ private RegionGadget validRegionGadget;
+
+ private final Long INVALID_PAGE_ID = -1L;
+ private final Long INVALID_REGION_GADGET_ID = -222L;
+ private final Long INVALID_GADGET_ID = -21L;
+ private final Long INVALID_GADGET_COMMENT_ID = -99L;
+ private final String MALFORMED_GADGET_URL = "THISISNOTAVALIDURL";
+ private final String INVALID_GADGET_URL = "http://validurlthatdoesnotexist.xyz/gadget.xml";
+
+ @Before
+ public void setup() throws MalformedURLException {
+ mockServletResponse = createNiceMock(HttpServletResponse.class);
+ mockServletRequest = createNiceMock(HttpServletRequest.class);
+
+ gadget = new Gadget(VALID_GADGET_ID);
+ gadget.setUrl(new URL(VALID_GADGET_URL));
+ gadget.setSendCommentEmails(VALID_SEND_COMMENT_EMAILS);
+ Gadget gadget2 = new Gadget(99L);
+
+ PersonGadget pg = new PersonGadget();
+ pg.setGadget(gadget);
+ validRegionGadget = new RegionGadget(VALID_REGION_GADGET_ID);
+ validRegionGadget.setPersonGadget(pg);
+
+ container = new Container(VALID_CONTAINER_ID);
+ user = new Person();
+ user.setUsername(VALID_USER_ID);
+ page = new Page(VALID_PAGE_ID);
+ containerRegistryList = new ArrayList<ContainerRegistry>();
+
+ ContainerRegistry cr1 = new ContainerRegistry(1L);
+ cr1.setGadget(gadget);
+ ContainerRegistry cr2 = new ContainerRegistry(2L);
+ cr2.setGadget(gadget2);
+ containerRegistryList.add(cr2);
+ containerRegistryList.add(cr1);
+
+ gadgetSupportLinkTypeList = new ArrayList<GadgetSupportLinkType>();
+ gadgetSupportLinkTypeList.add(new GadgetSupportLinkType());
+ gadgetSupportLinkTypeList.add(new GadgetSupportLinkType());
+
+ gadgetAuthorTypeList = new ArrayList<GadgetAuthorType>();
+ gadgetAuthorTypeList.add(new GadgetAuthorType());
+ gadgetAuthorTypeList.add(new GadgetAuthorType());
+
+ validGadgetAudiences = new Long[3];
+ validGadgetAudiences[0] = new Long(4L);
+ validGadgetAudiences[1] = new Long(2L);
+ validGadgetAudiences[2] = new Long(9L);
+
+ validGadgetTags = "cool tag, mytag2, another tag,tag4";
+ validGadgetTagsList = Arrays.asList(validGadgetTags.split(","));
+
+ validGadgetList = new ArrayList<Gadget>();
+ validGadgetList.add(gadget);
+
+ validGadgetAudienceList = new ArrayList<GadgetAudience>();
+ GadgetAudience ga = new GadgetAudience();
+ ga.setGadgetList(validGadgetList);
+
+ validGadgetCommentList = new ArrayList<GadgetComment>();
+ GadgetComment gc = new GadgetComment();
+ gc.setLastModifiedUserId("100");
+ validGadgetCommentList.add(gc);
+ GadgetComment gc2 = new GadgetComment();
+ gc2.setLastModifiedUserId("");
+ validGadgetCommentList.add(gc2);
+ validGadgetCommentList.add(new GadgetComment());
+
+ pageService = createNiceMock(PageService.class);
+ containerService = createNiceMock(ContainerService.class);
+ gadgetService = createNiceMock(GadgetService.class);
+ userService = createNiceMock(UserService.class);
+ statisticsService = createNiceMock(StatisticsService.class);
+ personService = createNiceMock(PersonService.class);
+ emailService = createNiceMock(EmailService.class);
+ repositoryController = new RepositoryController(container, containerService, pageService, gadgetService, userService, statisticsService, personService, emailService);
+ }
+
+ @Test
+ public void view_validPageId_validModel_validViewName() throws Exception {
+ expect(gadgetService.getAllAudiencesAssignedToGadgets()).andReturn(validGadgetAudienceList);
+ expect(containerService.findContainerRegistry(container)).andReturn(containerRegistryList);
+ expect(containerService.findAllGadgetTags()).andReturn(validGadgetTagsList);
+ expect(pageService.getPage(VALID_PAGE_ID)).andReturn(page);
+ expect(userService.getCurrentAuthenticatedUser()).andReturn(user);
+ replay(containerService);
+ replay(pageService);
+ replay(userService);
+
+ Model model = new ExtendedModelMap();
+ String viewName = repositoryController.view(model);
+
+ assertTrue(model.asMap().containsKey(ModelKeys.CONTAINER));
+ assertEquals(VALID_CONTAINER_ID, ((Container)model.asMap().get(ModelKeys.CONTAINER)).getContainerId());
+ assertTrue(model.asMap().containsKey(ModelKeys.GADGET_REPOSITORY_LIST));
+ assertEquals(containerRegistryList.size(), ((List<ContainerRepository>)model.asMap().get(ModelKeys.GADGET_REPOSITORY_LIST)).size());
+ assertEquals(ViewNames.Repository.LIST, viewName);
+ assertTrue(model.asMap().containsKey(ModelKeys.AUDIENCE_TAG_CLOUD));
+ assertTrue(model.asMap().containsKey(ModelKeys.TAGS_TAG_CLOUD));
+
+ }
+
+ @Test(expected = NullPointerException.class)
+ public void view_validPageId_nullModel_exception() throws Exception {
+ expect(gadgetService.getAllAudiencesAssignedToGadgets()).andReturn(validGadgetAudienceList);
+ expect(pageService.findDefaultPage(container, user)).andReturn(page);
+ expect(pageService.getPage(VALID_PAGE_ID)).andReturn(page);
+ expect(containerService.findContainerRegistry(container)).andReturn(containerRegistryList);
+ expect(containerService.findAllGadgetTags()).andReturn(validGadgetTagsList);
+ expect(userService.getCurrentAuthenticatedUser()).andReturn(user);
+ replay(pageService);
+ replay(containerService);
+ replay(userService);
+
+ String viewName = repositoryController.view(null);
+ }
+
+ @Test
+ public void getAddGadget_validModel_validViewName() throws Exception {
+ expect(gadgetService.getAllSupportLinkTypes()).andReturn(gadgetSupportLinkTypeList);
+ expect(gadgetService.getAllAuthorTypes()).andReturn(gadgetAuthorTypeList);
+ replay(gadgetService);
+
+ Model model = new ExtendedModelMap();
+ String viewName = repositoryController.getAddGadget(model);
+
+ assertTrue(model.asMap().containsKey(ModelKeys.CONTAINER));
+ assertEquals(VALID_CONTAINER_ID, ((Container)model.asMap().get(ModelKeys.CONTAINER)).getContainerId());
+
+ assertTrue(model.asMap().containsKey(ModelKeys.GADGET_SUPPORT_LINK_TYPE_LIST));
+ List<GadgetSupportLinkType> gssList = (List<GadgetSupportLinkType>) model.asMap().get(ModelKeys.GADGET_SUPPORT_LINK_TYPE_LIST);
+ assertNotNull(gssList);
+ assertFalse(gssList.isEmpty());
+
+ assertTrue(model.asMap().containsKey(ModelKeys.GADGET_AUTHOR_TYPE_LIST));
+ List<GadgetAuthorType> gaList = (List<GadgetAuthorType>) model.asMap().get(ModelKeys.GADGET_AUTHOR_TYPE_LIST);
+ assertNotNull(gaList);
+ assertFalse(gaList.isEmpty());
+
+ assertEquals(ViewNames.Repository.ADD, viewName);
+ }
+
+ @Test(expected = NullPointerException.class)
+ public void getAddGadget_nullModel_exception() throws Exception {
+ String viewName = repositoryController.getAddGadget(null);
+ }
+
+ @Test
+ public void postAddGadget_validGadgetUrl_validTitle_validAuthor_validThumbnailUrl_valid_description_validModel_validViewName() throws Exception {
+ URL url = new URL(VALID_GADGET_URL);
+ expect(gadgetService.findGadgetFromUrl(url, container)).andReturn(gadget);
+ replay(gadgetService);
+ containerService.registerNewGadget(gadget, container);
+ expectLastCall();
+ replay(containerService);
+
+ Model model = new ExtendedModelMap();
+ String viewName = repositoryController.postAddGadget(VALID_GADGET_URL,
+ VALID_TITLE,
+ VALID_AUTHOR,
+ VALID_AUTHOR_USER_ID,
+ VALID_THUMBNAIL_URL,
+ VALID_SCREENSHOT_URL,
+ VALID_DESCRIPTION,
+ VALID_USE_CUSTOM_EDIT_UI,
+ VALID_GADGET_SUPPORT_LINK_TYPE_ID,
+ VALID_VERSION,
+ VALID_FEATURED,
+ validGadgetAudiences,
+ validGadgetTags,
+ VALID_GADGET_AUTHOR_TYPE_ID,
+ VALID_SUPPORT_LINK,
+ VALID_GADGET_HEIGHT,
+ VALID_EMPTY_OAUTH_SERVICE_NAME,
+ VALID_EMPTY_OAUTH_CONSUMER_KEY,
+ VALID_EMPTY_OAUTH_CONSUMER_SECRET,
+ VALID_SCROLLING,
+ VALID_HIDDEN,
+ VALID_SEND_COMMENT_EMAILS,
+ model);
+ assertEquals(REDIRECT_ADD_GADGET, viewName);
+ }
+
+ @Test
+ public void postAddGadget_nullThumbnailUrl_validViewName() throws Exception {
+ URL url = new URL(VALID_GADGET_URL);
+ expect(gadgetService.findGadgetFromUrl(url, container)).andReturn(gadget);
+ replay(gadgetService);
+ containerService.registerNewGadget(gadget, container);
+ expectLastCall();
+ replay(containerService);
+
+ Model model = new ExtendedModelMap();
+ String viewName = repositoryController.postAddGadget(VALID_GADGET_URL,
+ VALID_TITLE,
+ VALID_AUTHOR,
+ VALID_AUTHOR_USER_ID,
+ null,
+ VALID_SCREENSHOT_URL,
+ VALID_DESCRIPTION,
+ VALID_USE_CUSTOM_EDIT_UI,
+ VALID_GADGET_SUPPORT_LINK_TYPE_ID,
+ VALID_VERSION,
+ VALID_FEATURED,
+ validGadgetAudiences,
+ validGadgetTags,
+ VALID_GADGET_AUTHOR_TYPE_ID,
+ VALID_SUPPORT_LINK,
+ VALID_GADGET_HEIGHT,
+ VALID_EMPTY_OAUTH_SERVICE_NAME,
+ VALID_EMPTY_OAUTH_CONSUMER_KEY,
+ VALID_EMPTY_OAUTH_CONSUMER_SECRET,
+ VALID_SCROLLING,
+ VALID_HIDDEN,
+ VALID_SEND_COMMENT_EMAILS,
+ model);
+
+ assertEquals(REDIRECT_ADD_GADGET, viewName);
+ }
+
+ @Test
+ public void postAddGadget_emptyThumbnailUrl_validViewName() throws Exception {
+ URL url = new URL(VALID_GADGET_URL);
+ expect(gadgetService.findGadgetFromUrl(url, container)).andReturn(gadget);
+ replay(gadgetService);
+ containerService.registerNewGadget(gadget, container);
+ expectLastCall();
+ replay(containerService);
+
+ Model model = new ExtendedModelMap();
+ String viewName = repositoryController.postAddGadget(VALID_GADGET_URL,
+ VALID_TITLE,
+ VALID_AUTHOR,
+ VALID_AUTHOR_USER_ID,
+ "",
+ VALID_SCREENSHOT_URL,
+ VALID_DESCRIPTION,
+ VALID_USE_CUSTOM_EDIT_UI,
+ VALID_GADGET_SUPPORT_LINK_TYPE_ID,
+ VALID_VERSION,
+ VALID_FEATURED,
+ validGadgetAudiences,
+ validGadgetTags,
+ VALID_GADGET_AUTHOR_TYPE_ID,
+ VALID_SUPPORT_LINK,
+ VALID_GADGET_HEIGHT,
+ VALID_EMPTY_OAUTH_SERVICE_NAME,
+ VALID_EMPTY_OAUTH_CONSUMER_KEY,
+ VALID_EMPTY_OAUTH_CONSUMER_SECRET,
+ VALID_SCROLLING,
+ VALID_HIDDEN,
+ VALID_SEND_COMMENT_EMAILS,
+ model);
+
+ assertEquals(REDIRECT_ADD_GADGET, viewName);
+ }
+
+ @Test
+ public void postAddGadget_emptyScreenshotUrl_validViewName() throws Exception {
+ URL url = new URL(VALID_GADGET_URL);
+ expect(gadgetService.findGadgetFromUrl(url, container)).andReturn(gadget);
+ replay(gadgetService);
+ containerService.registerNewGadget(gadget, container);
+ expectLastCall();
+ replay(containerService);
+
+ Model model = new ExtendedModelMap();
+ String viewName = repositoryController.postAddGadget(VALID_GADGET_URL,
+ VALID_TITLE,
+ VALID_AUTHOR,
+ VALID_AUTHOR_USER_ID,
+ VALID_THUMBNAIL_URL,
+ "",
+ VALID_DESCRIPTION,
+ VALID_USE_CUSTOM_EDIT_UI,
+ VALID_GADGET_SUPPORT_LINK_TYPE_ID,
+ VALID_VERSION,
+ VALID_FEATURED,
+ validGadgetAudiences,
+ validGadgetTags,
+ VALID_GADGET_AUTHOR_TYPE_ID,
+ VALID_SUPPORT_LINK,
+ VALID_GADGET_HEIGHT,
+ VALID_EMPTY_OAUTH_SERVICE_NAME,
+ VALID_EMPTY_OAUTH_CONSUMER_KEY,
+ VALID_EMPTY_OAUTH_CONSUMER_SECRET,
+ VALID_SCROLLING,
+ VALID_HIDDEN,
+ VALID_SEND_COMMENT_EMAILS,
+ model);
+
+ assertEquals(REDIRECT_ADD_GADGET, viewName);
+ }
+
+ @Test
+ public void postAddGadget_nullScreenshotUrl_validViewName() throws Exception {
+ URL url = new URL(VALID_GADGET_URL);
+ expect(gadgetService.findGadgetFromUrl(url, container)).andReturn(gadget);
+ replay(gadgetService);
+ containerService.registerNewGadget(gadget, container);
+ expectLastCall();
+ replay(containerService);
+
+ Model model = new ExtendedModelMap();
+ String viewName = repositoryController.postAddGadget(VALID_GADGET_URL,
+ VALID_TITLE,
+ VALID_AUTHOR,
+ VALID_AUTHOR_USER_ID,
+ VALID_THUMBNAIL_URL,
+ null,
+ VALID_DESCRIPTION,
+ VALID_USE_CUSTOM_EDIT_UI,
+ VALID_GADGET_SUPPORT_LINK_TYPE_ID,
+ VALID_VERSION,
+ VALID_FEATURED,
+ validGadgetAudiences,
+ validGadgetTags,
+ VALID_GADGET_AUTHOR_TYPE_ID,
+ VALID_SUPPORT_LINK,
+ VALID_GADGET_HEIGHT,
+ VALID_EMPTY_OAUTH_SERVICE_NAME,
+ VALID_EMPTY_OAUTH_CONSUMER_KEY,
+ VALID_EMPTY_OAUTH_CONSUMER_SECRET,
+ VALID_SCROLLING,
+ VALID_HIDDEN,
+ VALID_SEND_COMMENT_EMAILS,
+ model);
+
+ assertEquals(REDIRECT_ADD_GADGET, viewName);
+ }
+
+ @Test
+ public void postAddGadget_nullGadgetAudiences_validModel_validViewName() throws Exception {
+ URL url = new URL(VALID_GADGET_URL);
+ expect(gadgetService.findGadgetFromUrl(url, container)).andReturn(gadget);
+ replay(gadgetService);
+ containerService.registerNewGadget(gadget, container);
+ expectLastCall();
+ replay(containerService);
+
+ Model model = new ExtendedModelMap();
+ String viewName = repositoryController.postAddGadget(VALID_GADGET_URL,
+ VALID_TITLE,
+ VALID_AUTHOR,
+ VALID_AUTHOR_USER_ID,
+ VALID_THUMBNAIL_URL,
+ VALID_SCREENSHOT_URL,
+ VALID_DESCRIPTION,
+ VALID_USE_CUSTOM_EDIT_UI,
+ VALID_GADGET_SUPPORT_LINK_TYPE_ID,
+ VALID_VERSION,
+ VALID_FEATURED,
+ null,
+ validGadgetTags,
+ VALID_GADGET_AUTHOR_TYPE_ID,
+ VALID_SUPPORT_LINK,
+ VALID_GADGET_HEIGHT,
+ VALID_EMPTY_OAUTH_SERVICE_NAME,
+ VALID_EMPTY_OAUTH_CONSUMER_KEY,
+ VALID_EMPTY_OAUTH_CONSUMER_SECRET,
+ VALID_SCROLLING,
+ VALID_HIDDEN,
+ VALID_SEND_COMMENT_EMAILS,
+ model);
+
+ assertEquals(REDIRECT_ADD_GADGET, viewName);
+ }
+
+ @Test
+ public void postAddGadget_emptyGadgetAudiences_validModel_validViewName() throws Exception {
+ URL url = new URL(VALID_GADGET_URL);
+ expect(gadgetService.findGadgetFromUrl(url, container)).andReturn(gadget);
+ replay(gadgetService);
+ containerService.registerNewGadget(gadget, container);
+ expectLastCall();
+ replay(containerService);
+
+ Model model = new ExtendedModelMap();
+ String viewName = repositoryController.postAddGadget(VALID_GADGET_URL,
+ VALID_TITLE,
+ VALID_AUTHOR,
+ VALID_AUTHOR_USER_ID,
+ VALID_THUMBNAIL_URL,
+ VALID_SCREENSHOT_URL,
+ VALID_DESCRIPTION,
+ VALID_USE_CUSTOM_EDIT_UI,
+ VALID_GADGET_SUPPORT_LINK_TYPE_ID,
+ VALID_VERSION,
+ VALID_FEATURED,
+ new Long[0],
+ validGadgetTags,
+ VALID_GADGET_AUTHOR_TYPE_ID,
+ VALID_SUPPORT_LINK,
+ VALID_GADGET_HEIGHT,
+ VALID_EMPTY_OAUTH_SERVICE_NAME,
+ VALID_EMPTY_OAUTH_CONSUMER_KEY,
+ VALID_EMPTY_OAUTH_CONSUMER_SECRET,
+ VALID_SCROLLING,
+ VALID_HIDDEN,
+ VALID_SEND_COMMENT_EMAILS,
+ model);
+
+ assertEquals(REDIRECT_ADD_GADGET, viewName);
+ }
+
+ @Test
+ public void postAddGadget_nullGadgetTags_validModel_validViewName() throws Exception {
+ URL url = new URL(VALID_GADGET_URL);
+ expect(gadgetService.findGadgetFromUrl(url, container)).andReturn(gadget);
+ replay(gadgetService);
+ containerService.registerNewGadget(gadget, container);
+ expectLastCall();
+ replay(containerService);
+
+ Model model = new ExtendedModelMap();
+ String viewName = repositoryController.postAddGadget(VALID_GADGET_URL,
+ VALID_TITLE,
+ VALID_AUTHOR,
+ VALID_AUTHOR_USER_ID,
+ VALID_THUMBNAIL_URL,
+ VALID_SCREENSHOT_URL,
+ VALID_DESCRIPTION,
+ VALID_USE_CUSTOM_EDIT_UI,
+ VALID_GADGET_SUPPORT_LINK_TYPE_ID,
+ VALID_VERSION,
+ VALID_FEATURED,
+ validGadgetAudiences,
+ null,
+ VALID_GADGET_AUTHOR_TYPE_ID,
+ VALID_SUPPORT_LINK,
+ VALID_GADGET_HEIGHT,
+ VALID_EMPTY_OAUTH_SERVICE_NAME,
+ VALID_EMPTY_OAUTH_CONSUMER_KEY,
+ VALID_EMPTY_OAUTH_CONSUMER_SECRET,
+ VALID_SCROLLING,
+ VALID_HIDDEN,
+ VALID_SEND_COMMENT_EMAILS,
+ model);
+
+ assertEquals(REDIRECT_ADD_GADGET, viewName);
+ }
+
+ @Test
+ public void postAddGadget_emptyGadgetTags_validModel_validViewName() throws Exception {
+ URL url = new URL(VALID_GADGET_URL);
+ expect(gadgetService.findGadgetFromUrl(url, container)).andReturn(gadget);
+ replay(gadgetService);
+ containerService.registerNewGadget(gadget, container);
+ expectLastCall();
+ replay(containerService);
+
+ Model model = new ExtendedModelMap();
+ String viewName = repositoryController.postAddGadget(VALID_GADGET_URL,
+ VALID_TITLE,
+ VALID_AUTHOR,
+ VALID_AUTHOR_USER_ID,
+ VALID_THUMBNAIL_URL,
+ VALID_SCREENSHOT_URL,
+ VALID_DESCRIPTION,
+ VALID_USE_CUSTOM_EDIT_UI,
+ VALID_GADGET_SUPPORT_LINK_TYPE_ID,
+ VALID_VERSION,
+ VALID_FEATURED,
+ validGadgetAudiences,
+ "",
+ VALID_GADGET_AUTHOR_TYPE_ID,
+ VALID_SUPPORT_LINK,
+ VALID_GADGET_HEIGHT,
+ VALID_EMPTY_OAUTH_SERVICE_NAME,
+ VALID_EMPTY_OAUTH_CONSUMER_KEY,
+ VALID_EMPTY_OAUTH_CONSUMER_SECRET,
+ VALID_SCROLLING,
+ VALID_HIDDEN,
+ VALID_SEND_COMMENT_EMAILS,
+ model);
+
+ assertEquals(REDIRECT_ADD_GADGET, viewName);
+ }
+
+ @Test(expected = MalformedURLException.class)
+ public void postAddGadget_invalidGadgetUrl_validModel_exception() throws Exception {
+ URL url = new URL(MALFORMED_GADGET_URL);
+ expect(gadgetService.findGadgetFromUrl(url, container)).andReturn(gadget);
+ replay(gadgetService);
+ containerService.registerNewGadget(gadget, container);
+ expectLastCall();
+ replay(containerService);
+
+ Model model = new ExtendedModelMap();
+ String viewName = repositoryController.postAddGadget(MALFORMED_GADGET_URL,
+ VALID_TITLE,
+ VALID_AUTHOR,
+ VALID_AUTHOR_USER_ID,
+ VALID_THUMBNAIL_URL,
+ VALID_SCREENSHOT_URL,
+ VALID_DESCRIPTION,
+ VALID_USE_CUSTOM_EDIT_UI,
+ VALID_GADGET_SUPPORT_LINK_TYPE_ID,
+ VALID_VERSION,
+ VALID_FEATURED,
+ validGadgetAudiences,
+ validGadgetTags,
+ VALID_GADGET_AUTHOR_TYPE_ID,
+ VALID_SUPPORT_LINK,
+ VALID_GADGET_HEIGHT,
+ VALID_EMPTY_OAUTH_SERVICE_NAME,
+ VALID_EMPTY_OAUTH_CONSUMER_KEY,
+ VALID_EMPTY_OAUTH_CONSUMER_SECRET,
+ VALID_SCROLLING,
+ VALID_HIDDEN,
+ VALID_SEND_COMMENT_EMAILS,
+ model);
+ }
+
+ @Test(expected = MalformedURLException.class)
+ public void postAddGadget_nullGadgetUrl_validModel_exception() throws Exception {
+ URL url = new URL(null);
+ expect(gadgetService.findGadgetFromUrl(url, container)).andReturn(gadget);
+ replay(gadgetService);
+ containerService.registerNewGadget(gadget, container);
+ expectLastCall();
+ replay(containerService);
+
+ Model model = new ExtendedModelMap();
+ String viewName = repositoryController.postAddGadget(null,
+ VALID_TITLE,
+ VALID_AUTHOR,
+ VALID_AUTHOR_USER_ID,
+ VALID_THUMBNAIL_URL,
+ VALID_SCREENSHOT_URL,
+ VALID_DESCRIPTION,
+ VALID_USE_CUSTOM_EDIT_UI,
+ VALID_GADGET_SUPPORT_LINK_TYPE_ID,
+ VALID_VERSION,
+ VALID_FEATURED,
+ validGadgetAudiences,
+ validGadgetTags,
+ VALID_GADGET_AUTHOR_TYPE_ID,
+ VALID_SUPPORT_LINK,
+ VALID_GADGET_HEIGHT,
+ VALID_EMPTY_OAUTH_SERVICE_NAME,
+ VALID_EMPTY_OAUTH_CONSUMER_KEY,
+ VALID_EMPTY_OAUTH_CONSUMER_SECRET,
+ VALID_SCROLLING,
+ VALID_HIDDEN,
+ VALID_SEND_COMMENT_EMAILS,
+ model);
+ }
+
+ @Test(expected = NullPointerException.class)
+ public void postAddGadget_validGadgetUrl_nullModel_exception() throws Exception {
+ URL url = new URL(VALID_GADGET_URL);
+ expect(gadgetService.findGadgetFromUrl(url, container)).andReturn(gadget);
+ replay(gadgetService);
+ containerService.registerNewGadget(gadget, container);
+ expectLastCall();
+ replay(containerService);
+
+ String viewName = repositoryController.postAddGadget(VALID_GADGET_URL,
+ VALID_TITLE,
+ VALID_AUTHOR,
+ VALID_AUTHOR_USER_ID,
+ VALID_THUMBNAIL_URL,
+ VALID_SCREENSHOT_URL,
+ VALID_DESCRIPTION,
+ VALID_USE_CUSTOM_EDIT_UI,
+ VALID_GADGET_SUPPORT_LINK_TYPE_ID,
+ VALID_VERSION,
+ VALID_FEATURED,
+ validGadgetAudiences,
+ validGadgetTags,
+ VALID_GADGET_AUTHOR_TYPE_ID,
+ VALID_SUPPORT_LINK,
+ VALID_GADGET_HEIGHT,
+ VALID_EMPTY_OAUTH_SERVICE_NAME,
+ VALID_EMPTY_OAUTH_CONSUMER_KEY,
+ VALID_EMPTY_OAUTH_CONSUMER_SECRET,
+ VALID_SCROLLING,
+ VALID_HIDDEN,
+ VALID_SEND_COMMENT_EMAILS,
+ null);
+ }
+
+ @Test
+ public void postAddGadget_GadgetAudienceNotFoundException_validViewName() throws Exception {
+ URL url = new URL(VALID_GADGET_URL);
+ expect(gadgetService.findGadgetFromUrl(url, container)).andReturn(gadget);
+ replay(gadgetService);
+ containerService.registerNewGadget(gadget, container);
+ expectLastCall().andThrow(new GadgetAudienceNotFoundException("error"));
+ replay(containerService);
+
+ Model model = new ExtendedModelMap();
+ String viewName = repositoryController.postAddGadget(VALID_GADGET_URL,
+ VALID_TITLE,
+ VALID_AUTHOR,
+ VALID_AUTHOR_USER_ID,
+ VALID_THUMBNAIL_URL,
+ VALID_SCREENSHOT_URL,
+ VALID_DESCRIPTION,
+ VALID_USE_CUSTOM_EDIT_UI,
+ VALID_GADGET_SUPPORT_LINK_TYPE_ID,
+ VALID_VERSION,
+ VALID_FEATURED,
+ validGadgetAudiences,
+ validGadgetTags,
+ VALID_GADGET_AUTHOR_TYPE_ID,
+ VALID_SUPPORT_LINK,
+ VALID_GADGET_HEIGHT,
+ VALID_EMPTY_OAUTH_SERVICE_NAME,
+ VALID_EMPTY_OAUTH_CONSUMER_KEY,
+ VALID_EMPTY_OAUTH_CONSUMER_SECRET,
+ VALID_SCROLLING,
+ VALID_HIDDEN,
+ VALID_SEND_COMMENT_EMAILS,
+ model);
+ assertEquals(REDIRECT_ADD_GADGET, viewName);
+ assertTrue(model.containsAttribute(ModelKeys.GADGET_AUDIENCE_NOT_FOUND));
+ assertTrue(Boolean.valueOf((String)model.asMap().get(ModelKeys.GADGET_AUDIENCE_NOT_FOUND)));
+ assertTrue(model.containsAttribute(ModelKeys.FORM_SUCCESS_STATUS));
+ assertFalse((Boolean)model.asMap().get(ModelKeys.FORM_SUCCESS_STATUS));
+ assertTrue(model.containsAttribute(ModelKeys.GADGET_URL));
+ assertEquals(url.toString(), model.asMap().get(ModelKeys.GADGET_URL).toString());
+ }
+
+ @Test
+ public void delete_validGadgetId_validModel_validViewName() throws Exception {
+ // simluate removal of object
+ containerRegistryList.remove(0);
+
+ expect(gadgetService.getGadget(VALID_GADGET_ID)).andReturn(gadget);
+ gadgetService.delete(gadget);
+ expectLastCall();
+ expect(pageService.findDefaultPage(container, user)).andReturn(page);
+ expect(pageService.getPage(VALID_PAGE_ID)).andReturn(page);
+ expect(containerService.findContainerRegistry(container)).andReturn(containerRegistryList);
+ expect(userService.getCurrentAuthenticatedUser()).andReturn(user);
+
+ replay(gadgetService);
+ replay(containerService);
+ replay(pageService);
+ replay(userService);
+
+ Model model = new ExtendedModelMap();
+ String viewName = repositoryController.delete(VALID_GADGET_ID, model);
+
+ assertEquals(REDIRECT_VIEW, viewName);
+ }
+
+ @Test(expected = GadgetNotFoundException.class)
+ public void delete_invalidGadgetId_validModel_exception() throws Exception {
+ expect(gadgetService.getGadget(INVALID_GADGET_ID)).andThrow(new GadgetNotFoundException(INVALID_GADGET_ID));
+ replay(gadgetService);
+
+ Model model = new ExtendedModelMap();
+ String viewName = repositoryController.delete(INVALID_GADGET_ID, model);
+ }
+
+ @Test
+ public void delete_validGadgetId_nullModel_validViewName() throws Exception {
+ expect(gadgetService.getGadget(VALID_GADGET_ID)).andReturn(gadget);
+ gadgetService.delete(gadget);
+ expectLastCall();
+ expect(pageService.findDefaultPage(container, user)).andReturn(page);
+ expect(pageService.getPage(VALID_PAGE_ID)).andReturn(page);
+ expect(containerService.findContainerRegistry(container)).andReturn(containerRegistryList);
+ expect(userService.getCurrentAuthenticatedUser()).andReturn(user);
+
+ replay(gadgetService);
+ replay(containerService);
+ replay(pageService);
+ replay(userService);
+
+ Model model = new ExtendedModelMap();
+ String viewName = repositoryController.delete(VALID_GADGET_ID, null);
+ }
+
+ @Test
+ public void getGadgetFromUrl_validModel_validGadgetUrl_validJsonView() throws MalformedURLException {
+ URL url = new URL(VALID_GADGET_URL);
+ expect(gadgetService.findGadgetFromUrl(url, container)).andReturn(gadget);
+ expect(userService.getCurrentAuthenticatedUser()).andReturn(user);
+ replay(gadgetService);
+ replay(userService);
+
+ Model model = new ExtendedModelMap();
+ String viewName = repositoryController.getGadgetFromUrl(model, VALID_GADGET_URL, true);
+ assertEquals(ViewNames.JSON, viewName);
+ assertTrue(model.asMap().containsKey(ModelKeys.JSON_RESULT));
+ JsonRpcResult result = ((JsonRpcResult)model.asMap().get(ModelKeys.JSON_RESULT));
+ assertTrue(result.isResult());
+ assertTrue(model.asMap().containsKey(ModelKeys.JSON_GADGET));
+ JsonGadget jsonGadget = ((JsonGadget)model.asMap().get(ModelKeys.JSON_GADGET));
+ assertNotNull(jsonGadget);
+ }
+
+ @Test
+ public void getGadgetFromUrl_noCheckRegister_validModel_validGadgetUrl_validJsonView() throws MalformedURLException {
+ URL url = new URL(VALID_GADGET_URL);
+ expect(gadgetService.findGadgetFromUrl(url, container)).andReturn(gadget);
+ expect(userService.getCurrentAuthenticatedUser()).andReturn(user);
+ replay(gadgetService);
+ replay(userService);
+
+ Model model = new ExtendedModelMap();
+ String viewName = repositoryController.getGadgetFromUrl(model, VALID_GADGET_URL, false);
+ assertEquals(ViewNames.JSON, viewName);
+ assertTrue(model.asMap().containsKey(ModelKeys.JSON_RESULT));
+ JsonRpcResult result = ((JsonRpcResult)model.asMap().get(ModelKeys.JSON_RESULT));
+ assertTrue(result.isResult());
+ assertTrue(model.asMap().containsKey(ModelKeys.JSON_GADGET));
+ JsonGadget jsonGadget = ((JsonGadget)model.asMap().get(ModelKeys.JSON_GADGET));
+ assertNotNull(jsonGadget);
+ }
+
+ @Test
+ public void getGadgetFromUrl_validModel_invalidGadgetUrl_validJsonView() throws MalformedURLException {
+ URL url = new URL(INVALID_GADGET_URL);
+ expect(gadgetService.findGadgetFromUrl(url, container)).andReturn(null);
+ replay(gadgetService);
+
+ Model model = new ExtendedModelMap();
+ String viewName = repositoryController.getGadgetFromUrl(model, INVALID_GADGET_URL, true);
+ assertEquals(ViewNames.JSON, viewName);
+ assertTrue(model.asMap().containsKey(ModelKeys.JSON_RESULT));
+ JsonRpcResult result = ((JsonRpcResult)model.asMap().get(ModelKeys.JSON_RESULT));
+ assertFalse(result.isResult());
+ assertEquals(GadgetNotFoundException.class.getName(), result.getConsoleMessage());
+ }
+
+ @Test
+ public void getGadgetFromUrl_validModel_malformedGadgetUrl_validJsonView() throws MalformedURLException {
+ Model model = new ExtendedModelMap();
+ String viewName = repositoryController.getGadgetFromUrl(model, MALFORMED_GADGET_URL, true);
+ assertEquals(ViewNames.JSON, viewName);
+ assertTrue(model.asMap().containsKey(ModelKeys.JSON_RESULT));
+ JsonRpcResult result = ((JsonRpcResult)model.asMap().get(ModelKeys.JSON_RESULT));
+ assertFalse(result.isResult());
+ assertEquals(MalformedURLException.class.getName(), result.getConsoleMessage());
+ }
+
+ @Test
+ public void getGadgetFromUrl_validModel_duplicateGadgetUrl_validJsonView() throws MalformedURLException {
+ ContainerRegistry cr = new ContainerRegistry();
+ URL url = new URL(VALID_GADGET_URL);
+
+ expect(gadgetService.findGadgetFromUrl(url, container)).andReturn(gadget);
+ replay(gadgetService);
+ expect(containerService.findContainerRegistry(container, url)).andReturn(cr);
+ replay(containerService);
+
+ Model model = new ExtendedModelMap();
+ String viewName = repositoryController.getGadgetFromUrl(model, VALID_GADGET_URL, true);
+ assertEquals(ViewNames.JSON, viewName);
+ assertTrue(model.asMap().containsKey(ModelKeys.JSON_RESULT));
+ JsonRpcResult result = ((JsonRpcResult)model.asMap().get(ModelKeys.JSON_RESULT));
+ assertFalse(result.isResult());
+ assertEquals(DuplicateGadgetUrlException.class.getName(), result.getConsoleMessage());
+ }
+
+ @Test
+ public void getGadgetFromUrl_RuntimeException_validJsonView() throws MalformedURLException {
+ ContainerRegistry cr = new ContainerRegistry();
+ URL url = new URL(VALID_GADGET_URL);
+
+ expect(gadgetService.findGadgetFromUrl(url, container)).andThrow(new RuntimeException("error"));
+ replay(gadgetService);
+ expect(containerService.findContainerRegistry(container, url)).andReturn(cr);
+ replay(containerService);
+
+ Model model = new ExtendedModelMap();
+ String viewName = repositoryController.getGadgetFromUrl(model, VALID_GADGET_URL, true);
+ assertEquals(ViewNames.JSON, viewName);
+ assertTrue(model.asMap().containsKey(ModelKeys.JSON_RESULT));
+ JsonRpcResult result = ((JsonRpcResult)model.asMap().get(ModelKeys.JSON_RESULT));
+ assertFalse(result.isResult());
+ assertEquals(RuntimeException.class.getName(), result.getConsoleMessage());
+ }
+
+ @Test
+ public void getEditGadget_validModel_validViewName() throws Exception {
+ expect(gadgetService.getGadget(VALID_GADGET_ID)).andReturn(gadget);
+ expect(gadgetService.getAllSupportLinkTypes()).andReturn(gadgetSupportLinkTypeList);
+ expect(gadgetService.getAllAuthorTypes()).andReturn(gadgetAuthorTypeList);
+ replay(gadgetService);
+
+ Model model = new ExtendedModelMap();
+ String viewName = repositoryController.getEditGadget(VALID_GADGET_ID, model);
+
+ assertTrue(model.asMap().containsKey(ModelKeys.CONTAINER));
+ assertEquals(VALID_CONTAINER_ID, ((Container)model.asMap().get(ModelKeys.CONTAINER)).getContainerId());
+ assertEquals(ViewNames.Repository.EDIT, viewName);
+
+ assertTrue(model.asMap().containsKey(ModelKeys.GADGET_SUPPORT_LINK_TYPE_LIST));
+ List<GadgetSupportLinkType> gssList = (List<GadgetSupportLinkType>) model.asMap().get(ModelKeys.GADGET_SUPPORT_LINK_TYPE_LIST);
+ assertNotNull(gssList);
+ assertFalse(gssList.isEmpty());
+
+ assertTrue(model.asMap().containsKey(ModelKeys.GADGET_AUTHOR_TYPE_LIST));
+ List<GadgetAuthorType> gaList = (List<GadgetAuthorType>) model.asMap().get(ModelKeys.GADGET_AUTHOR_TYPE_LIST);
+ assertNotNull(gaList);
+ assertFalse(gaList.isEmpty());
+ }
+
+ @Test(expected = GadgetNotFoundException.class)
+ public void getEditGadget_invalidGadgetId_exception() throws Exception {
+ expect(gadgetService.getGadget(-1L)).andThrow(new GadgetNotFoundException(-1L));
+ replay(gadgetService);
+
+ String viewName = repositoryController.getEditGadget(-1L, null);
+ }
+
+ @Test
+ public void postEditGadget_validGadget() throws GadgetNotFoundException, MalformedURLException, GadgetException, PageNotFoundException, GadgetAudienceNotFoundException {
+ Model model = new ExtendedModelMap();
+
+ final String NEW_AUTHOR = "new author";
+ final String NEW_AUTHOR_USER_ID = "88888";
+ final String NEW_AUTHOR_EMAIL = "abc@example.com";
+ final String NEW_DESC = "new desc";
+ final String NEW_TITLE = "new title";
+ final String NEW_THUMBNAIL_URL = "http://a.example.com/image.png";
+ final String NEW_SCREENSHOT_URL = "http://b.example.com/newscreen.png";
+ final String NEW_VERSION = "new version";
+ final boolean NEW_USE_CUSTOM_UI = false;
+ final boolean NEW_FEATURED = false;
+ final Long NEW_GADGET_SUPPORT_LINK_TYPE_ID = 1L;
+ final Long NEW_GADGET_AUTHOR_TYPE_ID = 1L;
+ final String NEW_SUPPORT_LINK = "http://helplink.com";
+ final Long NEW_GADGET_HEIGHT = 888L;
+ final boolean NEW_SCROLLING = false;
+ final boolean NEW_HIDDEN = false;
+ final boolean NEW_SEND_COMMENT_EMAILS = false;
+ Long[] newAudiences = new Long[3];
+ newAudiences[0] = 3L;
+ newAudiences[1] = 1L;
+ newAudiences[2] = 4L;
+ String newTags = "one tag,two tag, three tag";
+
+ Gadget updatedGadget = new Gadget();
+ updatedGadget.setAuthor(NEW_AUTHOR);
+ updatedGadget.setDescription(NEW_DESC);
+ updatedGadget.setThumbnailUrl(new URL(NEW_THUMBNAIL_URL));
+ updatedGadget.setTitle(NEW_TITLE);
+ updatedGadget.setUseCustomEditUi(NEW_USE_CUSTOM_UI);
+
+ expect(gadgetService.getGadget(VALID_GADGET_ID)).andReturn(gadget);
+ expect(gadgetService.findGadgetFromUrl(new URL(VALID_GADGET_URL), container)).andReturn(updatedGadget);
+ gadgetService.save(gadget);
+ expectLastCall();
+
+ // needed for call to view at end of controller
+ expect(pageService.findDefaultPage(container, user)).andReturn(page);
+ expect(pageService.getPage(VALID_PAGE_ID)).andReturn(page);
+ expect(containerService.findContainerRegistry(container)).andReturn(containerRegistryList);
+ expect(userService.getCurrentAuthenticatedUser()).andReturn(user);
+
+ replay(gadgetService);
+ replay(containerService);
+ replay(pageService);
+ replay(userService);
+
+ String viewName = repositoryController.postEditGadget(VALID_GADGET_ID,
+ NEW_TITLE,
+ NEW_AUTHOR,
+ NEW_AUTHOR_USER_ID,
+ NEW_THUMBNAIL_URL,
+ NEW_SCREENSHOT_URL,
+ NEW_DESC,
+ NEW_USE_CUSTOM_UI,
+ NEW_GADGET_SUPPORT_LINK_TYPE_ID,
+ NEW_VERSION,
+ NEW_FEATURED,
+ newAudiences,
+ newTags,
+ NEW_GADGET_AUTHOR_TYPE_ID,
+ NEW_SUPPORT_LINK,
+ NEW_GADGET_HEIGHT,
+ VALID_EMPTY_OAUTH_SERVICE_NAME,
+ VALID_EMPTY_OAUTH_CONSUMER_KEY,
+ VALID_EMPTY_OAUTH_CONSUMER_SECRET,
+ NEW_SCROLLING,
+ NEW_HIDDEN,
+ NEW_SEND_COMMENT_EMAILS,
+ model);
+ assertEquals(REDIRECT_VIEW, viewName);
+ }
+
+ @Test
+ public void postEditGadget_GadgetAudienceNotFoundException() throws GadgetNotFoundException, MalformedURLException, GadgetException, PageNotFoundException, GadgetAudienceNotFoundException {
+ Model model = new ExtendedModelMap();
+
+ final String NEW_AUTHOR = "new author";
+ final String NEW_AUTHOR_USER_ID = "88888";
+ final String NEW_AUTHOR_EMAIL = "abc@example.com";
+ final String NEW_DESC = "new desc";
+ final String NEW_TITLE = "new title";
+ final String NEW_THUMBNAIL_URL = "http://a.example.com/image.png";
+ final String NEW_SCREENSHOT_URL = "http://b.example.com/newscreen.png";
+ final String NEW_VERSION = "new version";
+ final boolean NEW_USE_CUSTOM_UI = false;
+ final boolean NEW_FEATURED = false;
+ final Long NEW_GADGET_SUPPORT_LINK_TYPE_ID = 1L;
+ final Long NEW_GADGET_AUTHOR_TYPE_ID = 1L;
+ final String NEW_SUPPORT_LINK = "http://helplink.com";
+ final Long NEW_GADGET_HEIGHT = 888L;
+ final boolean NEW_SCROLLING = false;
+ final boolean NEW_HIDDEN = false;
+ final boolean NEW_SEND_COMMENT_EMAILS = false;
+ Long[] newAudiences = new Long[3];
+ newAudiences[0] = 3L;
+ newAudiences[1] = 1L;
+ newAudiences[2] = 4L;
+ String newTags = "one tag,two tag, three tag";
+
+ Gadget updatedGadget = new Gadget();
+ updatedGadget.setAuthor(NEW_AUTHOR);
+ updatedGadget.setDescription(NEW_DESC);
+ updatedGadget.setThumbnailUrl(new URL(NEW_THUMBNAIL_URL));
+ updatedGadget.setTitle(NEW_TITLE);
+ updatedGadget.setUseCustomEditUi(NEW_USE_CUSTOM_UI);
+
+ expect(gadgetService.getGadget(VALID_GADGET_ID)).andReturn(gadget);
+ expect(gadgetService.findGadgetFromUrl(new URL(VALID_GADGET_URL), container)).andReturn(updatedGadget);
+ gadgetService.save(gadget);
+ expectLastCall().andThrow(new GadgetAudienceNotFoundException("error"));
+
+ // needed for call to view at end of controller
+ expect(pageService.findDefaultPage(container, user)).andReturn(page);
+ expect(pageService.getPage(VALID_PAGE_ID)).andReturn(page);
+ expect(containerService.findContainerRegistry(container)).andReturn(containerRegistryList);
+ expect(userService.getCurrentAuthenticatedUser()).andReturn(user);
+
+ replay(gadgetService);
+ replay(containerService);
+ replay(pageService);
+ replay(userService);
+
+ String viewName = repositoryController.postEditGadget(VALID_GADGET_ID,
+ NEW_TITLE,
+ NEW_AUTHOR,
+ NEW_AUTHOR_USER_ID,
+ NEW_THUMBNAIL_URL,
+ NEW_SCREENSHOT_URL,
+ NEW_DESC,
+ NEW_USE_CUSTOM_UI,
+ NEW_GADGET_SUPPORT_LINK_TYPE_ID,
+ NEW_VERSION,
+ NEW_FEATURED,
+ newAudiences,
+ newTags,
+ NEW_GADGET_AUTHOR_TYPE_ID,
+ NEW_SUPPORT_LINK,
+ NEW_GADGET_HEIGHT,
+ VALID_EMPTY_OAUTH_SERVICE_NAME,
+ VALID_EMPTY_OAUTH_CONSUMER_KEY,
+ VALID_EMPTY_OAUTH_CONSUMER_SECRET,
+ NEW_SCROLLING,
+ NEW_HIDDEN,
+ NEW_SEND_COMMENT_EMAILS,
+ model);
+ assertEquals(REDIRECT_EDIT_GADGET, viewName);
+ assertTrue(model.containsAttribute(ModelKeys.GADGET_AUDIENCE_NOT_FOUND));
+ assertTrue(Boolean.valueOf((String)model.asMap().get(ModelKeys.GADGET_AUDIENCE_NOT_FOUND)));
+ assertTrue(model.containsAttribute(ModelKeys.GADGET_ID));
+ assertEquals(VALID_GADGET_ID, model.asMap().get(ModelKeys.GADGET_ID));
+ }
+
+ @Test
+ public void postEditGadget_nullThumbnail_validGadget() throws GadgetNotFoundException, MalformedURLException, GadgetException, PageNotFoundException, GadgetAudienceNotFoundException {
+ Model model = new ExtendedModelMap();
+
+ final String NEW_AUTHOR = "new author";
+ final String NEW_AUTHOR_USER_ID = "88888";
+ final String NEW_AUTHOR_EMAIL = "abc@example.com";
+ final String NEW_DESC = "new desc";
+ final String NEW_TITLE = "new title";
+ final String NEW_THUMBNAIL_URL = "http://a.example.com/image.png";
+ final String NEW_SCREENSHOT_URL = "http://b.example.com/newscreen.png";
+ final String NEW_VERSION = "new version";
+ final boolean NEW_USE_CUSTOM_UI = false;
+ final boolean NEW_FEATURED = false;
+ final Long NEW_GADGET_SUPPORT_LINK_TYPE_ID = 1L;
+ final Long NEW_GADGET_AUTHOR_TYPE_ID = 1L;
+ final String NEW_SUPPORT_LINK = "http://helplink.com";
+ final Long NEW_GADGET_HEIGHT = 888L;
+ final boolean NEW_SCROLLING = false;
+ final boolean NEW_HIDDEN = false;
+ final boolean NEW_SEND_COMMENT_EMAILS = false;
+ Long[] newAudiences = new Long[3];
+ newAudiences[0] = 3L;
+ newAudiences[1] = 1L;
+ newAudiences[2] = 4L;
+ String newTags = "one tag,two tag, three tag";
+
+ Gadget updatedGadget = new Gadget();
+ updatedGadget.setAuthor(NEW_AUTHOR);
+ updatedGadget.setDescription(NEW_DESC);
+ updatedGadget.setThumbnailUrl(new URL(NEW_THUMBNAIL_URL));
+ updatedGadget.setTitle(NEW_TITLE);
+ updatedGadget.setUseCustomEditUi(NEW_USE_CUSTOM_UI);
+
+ expect(gadgetService.getGadget(VALID_GADGET_ID)).andReturn(gadget);
+ expect(gadgetService.findGadgetFromUrl(new URL(VALID_GADGET_URL), container)).andReturn(updatedGadget);
+ gadgetService.save(gadget);
+ expectLastCall();
+
+ // needed for call to view at end of controller
+ expect(pageService.findDefaultPage(container, user)).andReturn(page);
+ expect(pageService.getPage(VALID_PAGE_ID)).andReturn(page);
+ expect(containerService.findContainerRegistry(container)).andReturn(containerRegistryList);
+ expect(userService.getCurrentAuthenticatedUser()).andReturn(user);
+
+ replay(gadgetService);
+ replay(containerService);
+ replay(pageService);
+ replay(userService);
+
+ String viewName = repositoryController.postEditGadget(VALID_GADGET_ID,
+ NEW_TITLE,
+ NEW_AUTHOR,
+ NEW_AUTHOR_USER_ID,
+ null,
+ NEW_SCREENSHOT_URL,
+ NEW_DESC,
+ NEW_USE_CUSTOM_UI,
+ NEW_GADGET_SUPPORT_LINK_TYPE_ID,
+ NEW_VERSION,
+ NEW_FEATURED,
+ newAudiences,
+ newTags,
+ NEW_GADGET_AUTHOR_TYPE_ID,
+ NEW_SUPPORT_LINK,
+ NEW_GADGET_HEIGHT,
+ VALID_EMPTY_OAUTH_SERVICE_NAME,
+ VALID_EMPTY_OAUTH_CONSUMER_KEY,
+ VALID_EMPTY_OAUTH_CONSUMER_SECRET,
+ NEW_SCROLLING,
+ NEW_HIDDEN,
+ NEW_SEND_COMMENT_EMAILS,
+ model);
+ assertEquals(REDIRECT_VIEW, viewName);
+ }
+
+ @Test
+ public void postEditGadget_emptyThumbnail_validGadget() throws GadgetNotFoundException, MalformedURLException, GadgetException, PageNotFoundException, GadgetAudienceNotFoundException {
+ Model model = new ExtendedModelMap();
+
+ final String NEW_AUTHOR = "new author";
+ final String NEW_AUTHOR_USER_ID = "88888";
+ final String NEW_AUTHOR_EMAIL = "abc@example.com";
+ final String NEW_DESC = "new desc";
+ final String NEW_TITLE = "new title";
+ final String NEW_THUMBNAIL_URL = "http://a.example.com/image.png";
+ final String NEW_SCREENSHOT_URL = "http://b.example.com/newscreen.png";
+ final String NEW_VERSION = "new version";
+ final boolean NEW_USE_CUSTOM_UI = false;
+ final boolean NEW_FEATURED = false;
+ final Long NEW_GADGET_SUPPORT_LINK_TYPE_ID = 1L;
+ final Long NEW_GADGET_AUTHOR_TYPE_ID = 1L;
+ final String NEW_SUPPORT_LINK = "http://helplink.com";
+ final Long NEW_GADGET_HEIGHT = 888L;
+ final boolean NEW_SCROLLING = false;
+ final boolean NEW_HIDDEN = false;
+ final boolean NEW_SEND_COMMENT_EMAILS = false;
+ Long[] newAudiences = new Long[3];
+ newAudiences[0] = 3L;
+ newAudiences[1] = 1L;
+ newAudiences[2] = 4L;
+ String newTags = "one tag,two tag, three tag";
+
+ Gadget updatedGadget = new Gadget();
+ updatedGadget.setAuthor(NEW_AUTHOR);
+ updatedGadget.setDescription(NEW_DESC);
+ updatedGadget.setThumbnailUrl(new URL(NEW_THUMBNAIL_URL));
+ updatedGadget.setTitle(NEW_TITLE);
+ updatedGadget.setUseCustomEditUi(NEW_USE_CUSTOM_UI);
+
+ expect(gadgetService.getGadget(VALID_GADGET_ID)).andReturn(gadget);
+ expect(gadgetService.findGadgetFromUrl(new URL(VALID_GADGET_URL), container)).andReturn(updatedGadget);
+ gadgetService.save(gadget);
+ expectLastCall();
+
+ // needed for call to view at end of controller
+ expect(pageService.findDefaultPage(container, user)).andReturn(page);
+ expect(pageService.getPage(VALID_PAGE_ID)).andReturn(page);
+ expect(containerService.findContainerRegistry(container)).andReturn(containerRegistryList);
+ expect(userService.getCurrentAuthenticatedUser()).andReturn(user);
+
+ replay(gadgetService);
+ replay(containerService);
+ replay(pageService);
+ replay(userService);
+
+ String viewName = repositoryController.postEditGadget(VALID_GADGET_ID,
+ NEW_TITLE,
+ NEW_AUTHOR,
+ NEW_AUTHOR_USER_ID,
+ "",
+ NEW_SCREENSHOT_URL,
+ NEW_DESC,
+ NEW_USE_CUSTOM_UI,
+ NEW_GADGET_SUPPORT_LINK_TYPE_ID,
+ NEW_VERSION,
+ NEW_FEATURED,
+ newAudiences,
+ newTags,
+ NEW_GADGET_AUTHOR_TYPE_ID,
+ NEW_SUPPORT_LINK,
+ NEW_GADGET_HEIGHT,
+ VALID_EMPTY_OAUTH_SERVICE_NAME,
+ VALID_EMPTY_OAUTH_CONSUMER_KEY,
+ VALID_EMPTY_OAUTH_CONSUMER_SECRET,
+ NEW_SCROLLING,
+ NEW_HIDDEN,
+ NEW_SEND_COMMENT_EMAILS,
+ model);
+ assertEquals(REDIRECT_VIEW, viewName);
+ }
+
+ @Test
+ public void postEditGadget_nullScreenshot_validGadget() throws GadgetNotFoundException, MalformedURLException, GadgetException, PageNotFoundException, GadgetAudienceNotFoundException {
+ Model model = new ExtendedModelMap();
+
+ final String NEW_AUTHOR = "new author";
+ final String NEW_AUTHOR_USER_ID = "88888";
+ final String NEW_AUTHOR_EMAIL = "abc@example.com";
+ final String NEW_DESC = "new desc";
+ final String NEW_TITLE = "new title";
+ final String NEW_THUMBNAIL_URL = "http://a.example.com/image.png";
+ final String NEW_SCREENSHOT_URL = "http://b.example.com/newscreen.png";
+ final String NEW_VERSION = "new version";
+ final boolean NEW_USE_CUSTOM_UI = false;
+ final boolean NEW_FEATURED = false;
+ final Long NEW_GADGET_SUPPORT_LINK_TYPE_ID = 1L;
+ final Long NEW_GADGET_AUTHOR_TYPE_ID = 1L;
+ final String NEW_SUPPORT_LINK = "http://helplink.com";
+ final Long NEW_GADGET_HEIGHT = 888L;
+ final boolean NEW_SCROLLING = false;
+ final boolean NEW_HIDDEN = false;
+ final boolean NEW_SEND_COMMENT_EMAILS = false;
+ Long[] newAudiences = new Long[3];
+ newAudiences[0] = 3L;
+ newAudiences[1] = 1L;
+ newAudiences[2] = 4L;
+ String newTags = "one tag,two tag, three tag";
+
+ Gadget updatedGadget = new Gadget();
+ updatedGadget.setAuthor(NEW_AUTHOR);
+ updatedGadget.setDescription(NEW_DESC);
+ updatedGadget.setThumbnailUrl(new URL(NEW_THUMBNAIL_URL));
+ updatedGadget.setTitle(NEW_TITLE);
+ updatedGadget.setUseCustomEditUi(NEW_USE_CUSTOM_UI);
+
+ expect(gadgetService.getGadget(VALID_GADGET_ID)).andReturn(gadget);
+ expect(gadgetService.findGadgetFromUrl(new URL(VALID_GADGET_URL), container)).andReturn(updatedGadget);
+ gadgetService.save(gadget);
+ expectLastCall();
+
+ // needed for call to view at end of controller
+ expect(pageService.findDefaultPage(container, user)).andReturn(page);
+ expect(pageService.getPage(VALID_PAGE_ID)).andReturn(page);
+ expect(containerService.findContainerRegistry(container)).andReturn(containerRegistryList);
+ expect(userService.getCurrentAuthenticatedUser()).andReturn(user);
+
+ replay(gadgetService);
+ replay(containerService);
+ replay(pageService);
+ replay(userService);
+
+ String viewName = repositoryController.postEditGadget(VALID_GADGET_ID,
+ NEW_TITLE,
+ NEW_AUTHOR,
+ NEW_AUTHOR_USER_ID,
+ NEW_THUMBNAIL_URL,
+ null,
+ NEW_DESC,
+ NEW_USE_CUSTOM_UI,
+ NEW_GADGET_SUPPORT_LINK_TYPE_ID,
+ NEW_VERSION,
+ NEW_FEATURED,
+ newAudiences,
+ newTags,
+ NEW_GADGET_AUTHOR_TYPE_ID,
+ NEW_SUPPORT_LINK,
+ NEW_GADGET_HEIGHT,
+ VALID_EMPTY_OAUTH_SERVICE_NAME,
+ VALID_EMPTY_OAUTH_CONSUMER_KEY,
+ VALID_EMPTY_OAUTH_CONSUMER_SECRET,
+ NEW_SCROLLING,
+ NEW_HIDDEN,
+ NEW_SEND_COMMENT_EMAILS,
+ model);
+ assertEquals(REDIRECT_VIEW, viewName);
+ }
+
+ @Test
+ public void postEditGadget_emptyScreenshot_validGadget() throws GadgetNotFoundException, MalformedURLException, GadgetException, PageNotFoundException, GadgetAudienceNotFoundException {
+ Model model = new ExtendedModelMap();
+
+ final String NEW_AUTHOR = "new author";
+ final String NEW_AUTHOR_USER_ID = "88888";
+ final String NEW_AUTHOR_EMAIL = "abc@example.com";
+ final String NEW_DESC = "new desc";
+ final String NEW_TITLE = "new title";
+ final String NEW_THUMBNAIL_URL = "http://a.example.com/image.png";
+ final String NEW_SCREENSHOT_URL = "http://b.example.com/newscreen.png";
+ final String NEW_VERSION = "new version";
+ final boolean NEW_USE_CUSTOM_UI = false;
+ final boolean NEW_FEATURED = false;
+ final Long NEW_GADGET_SUPPORT_LINK_TYPE_ID = 1L;
+ final Long NEW_GADGET_AUTHOR_TYPE_ID = 1L;
+ final String NEW_SUPPORT_LINK = "http://helplink.com";
+ final Long NEW_GADGET_HEIGHT = 888L;
+ final boolean NEW_SCROLLING = false;
+ final boolean NEW_HIDDEN = false;
+ final boolean NEW_SEND_COMMENT_EMAILS = false;
+ Long[] newAudiences = new Long[3];
+ newAudiences[0] = 3L;
+ newAudiences[1] = 1L;
+ newAudiences[2] = 4L;
+ String newTags = "one tag,two tag, three tag";
+
+ Gadget updatedGadget = new Gadget();
+ updatedGadget.setAuthor(NEW_AUTHOR);
+ updatedGadget.setDescription(NEW_DESC);
+ updatedGadget.setThumbnailUrl(new URL(NEW_THUMBNAIL_URL));
+ updatedGadget.setTitle(NEW_TITLE);
+ updatedGadget.setUseCustomEditUi(NEW_USE_CUSTOM_UI);
+
+ expect(gadgetService.getGadget(VALID_GADGET_ID)).andReturn(gadget);
+ expect(gadgetService.findGadgetFromUrl(new URL(VALID_GADGET_URL), container)).andReturn(updatedGadget);
+ gadgetService.save(gadget);
+ expectLastCall();
+
+ // needed for call to view at end of controller
+ expect(pageService.findDefaultPage(container, user)).andReturn(page);
+ expect(pageService.getPage(VALID_PAGE_ID)).andReturn(page);
+ expect(containerService.findContainerRegistry(container)).andReturn(containerRegistryList);
+ expect(userService.getCurrentAuthenticatedUser()).andReturn(user);
+
+ replay(gadgetService);
+ replay(containerService);
+ replay(pageService);
+ replay(userService);
+
+ String viewName = repositoryController.postEditGadget(VALID_GADGET_ID,
+ NEW_TITLE,
+ NEW_AUTHOR,
+ NEW_AUTHOR_USER_ID,
+ NEW_THUMBNAIL_URL,
+ "",
+ NEW_DESC,
+ NEW_USE_CUSTOM_UI,
+ NEW_GADGET_SUPPORT_LINK_TYPE_ID,
+ NEW_VERSION,
+ NEW_FEATURED,
+ newAudiences,
+ newTags,
+ NEW_GADGET_AUTHOR_TYPE_ID,
+ NEW_SUPPORT_LINK,
+ NEW_GADGET_HEIGHT,
+ VALID_EMPTY_OAUTH_SERVICE_NAME,
+ VALID_EMPTY_OAUTH_CONSUMER_KEY,
+ VALID_EMPTY_OAUTH_CONSUMER_SECRET,
+ NEW_SCROLLING,
+ NEW_HIDDEN,
+ NEW_SEND_COMMENT_EMAILS,
+ model);
+ assertEquals(REDIRECT_VIEW, viewName);
+ }
+
+ @Test
+ public void postEditGadget_nullGadgetAudiences_validGadget() throws GadgetNotFoundException, MalformedURLException, GadgetException, PageNotFoundException, GadgetAudienceNotFoundException {
+ Model model = new ExtendedModelMap();
+
+ final String NEW_AUTHOR = "new author";
+ final String NEW_AUTHOR_USER_ID = "88888";
+ final String NEW_AUTHOR_EMAIL = "abc@example.com";
+ final String NEW_DESC = "new desc";
+ final String NEW_TITLE = "new title";
+ final String NEW_THUMBNAIL_URL = "http://a.example.com/image.png";
+ final String NEW_SCREENSHOT_URL = "http://b.example.com/newscreen.png";
+ final String NEW_VERSION = "new version";
+ final boolean NEW_USE_CUSTOM_UI = false;
+ final boolean NEW_FEATURED = false;
+ final Long NEW_GADGET_SUPPORT_LINK_TYPE_ID = 1L;
+ final Long NEW_GADGET_AUTHOR_TYPE_ID = 1L;
+ final String NEW_SUPPORT_LINK = "http://helplink.com";
+ final Long NEW_GADGET_HEIGHT = 888L;
+ final boolean NEW_SCROLLING = false;
+ final boolean NEW_HIDDEN = false;
+ final boolean NEW_SEND_COMMENT_EMAILS = false;
+ Long[] newAudiences = new Long[3];
+ newAudiences[0] = 3L;
+ newAudiences[1] = 1L;
+ newAudiences[2] = 4L;
+ String newTags = "one tag,two tag, three tag";
+
+ Gadget updatedGadget = new Gadget();
+ updatedGadget.setAuthor(NEW_AUTHOR);
+ updatedGadget.setDescription(NEW_DESC);
+ updatedGadget.setThumbnailUrl(new URL(NEW_THUMBNAIL_URL));
+ updatedGadget.setTitle(NEW_TITLE);
+ updatedGadget.setUseCustomEditUi(NEW_USE_CUSTOM_UI);
+
+ expect(gadgetService.getGadget(VALID_GADGET_ID)).andReturn(gadget);
+ expect(gadgetService.findGadgetFromUrl(new URL(VALID_GADGET_URL), container)).andReturn(updatedGadget);
+ gadgetService.save(gadget);
+ expectLastCall();
+
+ // needed for call to view at end of controller
+ expect(pageService.findDefaultPage(container, user)).andReturn(page);
+ expect(pageService.getPage(VALID_PAGE_ID)).andReturn(page);
+ expect(containerService.findContainerRegistry(container)).andReturn(containerRegistryList);
+ expect(userService.getCurrentAuthenticatedUser()).andReturn(user);
+
+ replay(gadgetService);
+ replay(containerService);
+ replay(pageService);
+ replay(userService);
+
+ String viewName = repositoryController.postEditGadget(VALID_GADGET_ID,
+ NEW_TITLE,
+ NEW_AUTHOR,
+ NEW_AUTHOR_USER_ID,
+ NEW_THUMBNAIL_URL,
+ NEW_SCREENSHOT_URL,
+ NEW_DESC,
+ NEW_USE_CUSTOM_UI,
+ NEW_GADGET_SUPPORT_LINK_TYPE_ID,
+ NEW_VERSION,
+ NEW_FEATURED,
+ null,
+ newTags,
+ NEW_GADGET_AUTHOR_TYPE_ID,
+ NEW_SUPPORT_LINK,
+ NEW_GADGET_HEIGHT,
+ VALID_EMPTY_OAUTH_SERVICE_NAME,
+ VALID_EMPTY_OAUTH_CONSUMER_KEY,
+ VALID_EMPTY_OAUTH_CONSUMER_SECRET,
+ NEW_SCROLLING,
+ NEW_HIDDEN,
+ NEW_SEND_COMMENT_EMAILS,
+ model);
+ assertEquals(REDIRECT_VIEW, viewName);
+ }
+
+ @Test
+ public void postEditGadget_emptyGadgetAudiences_validGadget() throws GadgetNotFoundException, MalformedURLException, GadgetException, PageNotFoundException, GadgetAudienceNotFoundException {
+ Model model = new ExtendedModelMap();
+
+ final String NEW_AUTHOR = "new author";
+ final String NEW_AUTHOR_USER_ID = "88888";
+ final String NEW_AUTHOR_EMAIL = "abc@example.com";
+ final String NEW_DESC = "new desc";
+ final String NEW_TITLE = "new title";
+ final String NEW_THUMBNAIL_URL = "http://a.example.com/image.png";
+ final String NEW_SCREENSHOT_URL = "http://b.example.com/newscreen.png";
+ final String NEW_VERSION = "new version";
+ final boolean NEW_USE_CUSTOM_UI = false;
+ final boolean NEW_FEATURED = false;
+ final Long NEW_GADGET_SUPPORT_LINK_TYPE_ID = 1L;
+ final Long NEW_GADGET_AUTHOR_TYPE_ID = 1L;
+ final String NEW_SUPPORT_LINK = "http://helplink.com";
+ final Long NEW_GADGET_HEIGHT = 888L;
+ final boolean NEW_SCROLLING = false;
+ final boolean NEW_HIDDEN = false;
+ final boolean NEW_SEND_COMMENT_EMAILS = false;
+ Long[] newAudiences = new Long[3];
+ newAudiences[0] = 3L;
+ newAudiences[1] = 1L;
+ newAudiences[2] = 4L;
+ String newTags = "one tag,two tag, three tag";
+
+ Gadget updatedGadget = new Gadget();
+ updatedGadget.setAuthor(NEW_AUTHOR);
+ updatedGadget.setDescription(NEW_DESC);
+ updatedGadget.setThumbnailUrl(new URL(NEW_THUMBNAIL_URL));
+ updatedGadget.setTitle(NEW_TITLE);
+ updatedGadget.setUseCustomEditUi(NEW_USE_CUSTOM_UI);
+
+ expect(gadgetService.getGadget(VALID_GADGET_ID)).andReturn(gadget);
+ expect(gadgetService.findGadgetFromUrl(new URL(VALID_GADGET_URL), container)).andReturn(updatedGadget);
+ gadgetService.save(gadget);
+ expectLastCall();
+
+ // needed for call to view at end of controller
+ expect(pageService.findDefaultPage(container, user)).andReturn(page);
+ expect(pageService.getPage(VALID_PAGE_ID)).andReturn(page);
+ expect(containerService.findContainerRegistry(container)).andReturn(containerRegistryList);
+ expect(userService.getCurrentAuthenticatedUser()).andReturn(user);
+
+ replay(gadgetService);
+ replay(containerService);
+ replay(pageService);
+ replay(userService);
+
+ String viewName = repositoryController.postEditGadget(VALID_GADGET_ID,
+ NEW_TITLE,
+ NEW_AUTHOR,
+ NEW_AUTHOR_USER_ID,
+ NEW_THUMBNAIL_URL,
+ NEW_SCREENSHOT_URL,
+ NEW_DESC,
+ NEW_USE_CUSTOM_UI,
[... 800 lines stripped ...]