se.vgregion.portal.iframe.controller.CSViewControllerTest.java Source code

Java tutorial

Introduction

Here is the source code for se.vgregion.portal.iframe.controller.CSViewControllerTest.java

Source

/**
 * Copyright 2010 Vstra Gtalandsregionen
 *
 *   This library is free software; you can redistribute it and/or modify
 *   it under the terms of version 2.1 of the GNU Lesser General Public
 *   License as published by the Free Software Foundation.
 *
 *   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.
 *
 *   You should have received a copy of the GNU Lesser General Public
 *   License along with this library; if not, write to the
 *   Free Software Foundation, Inc., 59 Temple Place, Suite 330,
 *   Boston, MA 02111-1307  USA
 *
 */

package se.vgregion.portal.iframe.controller;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.fail;

import java.net.URISyntaxException;
import java.util.HashMap;
import java.util.Map;

import javax.portlet.PortletMode;
import javax.portlet.PortletPreferences;
import javax.portlet.PortletRequest;
import javax.portlet.ReadOnlyException;
import javax.portlet.RenderRequest;
import javax.portlet.RenderResponse;
import javax.portlet.ResourceRequest;
import javax.portlet.ResourceURL;
import javax.portlet.WindowState;

import org.junit.After;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
import org.mockito.Matchers;
import org.mockito.Mockito;
import org.springframework.mock.web.portlet.MockActionRequest;
import org.springframework.mock.web.portlet.MockPortletPreferences;
import org.springframework.mock.web.portlet.MockRenderRequest;
import org.springframework.mock.web.portlet.MockRenderResponse;
import org.springframework.mock.web.portlet.MockResourceRequest;
import org.springframework.mock.web.portlet.MockResourceURL;
import org.springframework.test.util.ReflectionTestUtils;
import org.springframework.ui.ModelMap;

import se.vgregion.ldapservice.LdapUser;
import se.vgregion.portal.cs.domain.UserSiteCredential;
import se.vgregion.ldapservice.AsyncCachingLdapServiceWrapper;
import se.vgregion.portal.csiframe.svc.MailInfService;
import se.vgregion.portal.iframe.BaseTestSetup;
import se.vgregion.portal.iframe.model.PortletConfig;

/**
 * @author <a href="mailto:david.rosell@redpill-linpro.com">David Rosell</a>
 */
public class CSViewControllerTest extends BaseTestSetup {

    CSViewController controller;
    se.vgregion.portal.iframe.controller.MockCredentialService storeService;

    @Before
    public void setUp() {
        controller = new CSViewController();

        storeService = new MockCredentialService();
        // Sets the private field userSiteCredentialService to our mock version.

        ReflectionTestUtils.setField(controller, "credentialService", storeService);
    }

    @After
    public void tearDown() {
    }

    @Test
    public void testShowView() throws ReadOnlyException {
        PortletPreferences prefs = new MockPortletPreferences();
        initPortletPreferences(prefs);

        RenderRequest mockReq = new MockRenderRequest(PortletMode.VIEW);
        RenderResponse mockResp = new MockRenderResponse();
        ModelMap model = new ModelMap();

        String response = controller.showView(prefs, mockReq, mockResp, model);
        assertEquals("userCredentialForm", response);
    }

    @Test
    public void testShowView_NoAuth() throws ReadOnlyException {
        PortletPreferences prefs = new MockPortletPreferences();
        initPortletPreferences(prefs);
        prefs.setValue("auth", "false");

        RenderRequest mockReq = new MockRenderRequest(PortletMode.VIEW);
        RenderResponse mockResp = new MockRenderResponse();
        ModelMap model = new ModelMap();

        String response = controller.showView(prefs, mockReq, mockResp, model);
        assertEquals("view", response);

        // Test model
        assertEquals("test-src", model.get("iFrameSrc"));
        assertEquals("test-src", model.get("baseSrc"));
        assertEquals("300", model.get("iFrameHeight"));
        assertEquals("0", model.get("border"));
        assertEquals("#000000", model.get("bordercolor"));
        assertEquals("0", model.get("frameborder"));
        assertEquals("600", model.get("height-maximized"));
        assertEquals("300", model.get("height-normal"));
        assertEquals("0", model.get("hspace"));
        assertEquals("auto", model.get("scrolling"));
        assertEquals("0", model.get("vspace"));
        assertEquals("100%", model.get("width"));
    }

    @Test
    public void testShowView_AuthNoSiteUser() throws ReadOnlyException {
        PortletPreferences prefs = new MockPortletPreferences();
        initPortletPreferences(prefs);
        prefs.setValue("auth", "true");

        RenderRequest mockReq = new MockRenderRequest(PortletMode.VIEW);
        Map<String, String> userInfo = new HashMap<String, String>();
        userInfo.put(PortletRequest.P3PUserInfos.USER_LOGIN_ID.toString(), "no-credential-user");
        mockReq.setAttribute(PortletRequest.USER_INFO, userInfo);

        RenderResponse mockResp = new MockRenderResponse();
        ModelMap model = new ModelMap();

        String response = controller.showView(prefs, mockReq, mockResp, model);
        assertEquals("userCredentialForm", response);
    }

    @Test
    public void testShowView_AuthSiteUserExistWrongSiteKey() throws ReadOnlyException {
        PortletPreferences prefs = new MockPortletPreferences();
        initPortletPreferences(prefs);
        prefs.setValue("auth", "true");

        RenderRequest mockReq = (RenderRequest) initPortletRequest(new MockRenderRequest());

        RenderResponse mockResp = new MockRenderResponse();
        ModelMap model = new ModelMap();

        String response = controller.showView(prefs, mockReq, mockResp, model);
        assertEquals("userCredentialForm", response);
    }

    @Test
    public void testShowView_AuthSiteUserExistSiteKeyExistForm() throws ReadOnlyException {
        PortletPreferences prefs = new MockPortletPreferences();
        initPortletPreferences(prefs);
        prefs.setValue("src", "http://www.google.com");
        prefs.setValue("auth", "true");
        prefs.setValue("auth-type", "form");
        prefs.setValue("site-key", "test-site-key");

        MockRenderRequest mockReq = new MockRenderRequest(PortletMode.VIEW);
        RenderRequest req = (MockRenderRequest) initPortletRequest(mockReq);

        MockRenderResponse resp = new TestStubMockRenderResponse();

        ModelMap model = new ModelMap();

        String response = controller.showView(prefs, req, resp, model);
        assertEquals("view", response);

        UserSiteCredential siteCredential = (UserSiteCredential) model.get("siteCredential");
        assertEquals("test-user", siteCredential.getUid());
        assertEquals("test-site-key", siteCredential.getSiteKey());
        assertEquals("test-site-user", siteCredential.getSiteUser());
        assertEquals("test-site-password", siteCredential.getSitePassword());

        assertEquals("http://localhost/mockportlet?resourceID=resourceId", model.get("iFrameSrc"));
        assertEquals("http://localhost/mockportlet?resourceID=resourceId", model.get("preIFrameSrc"));

        // Test model
        assertEquals("http://localhost/mockportlet?resourceID=resourceId", model.get("iFrameSrc"));
        assertEquals("http://localhost/", model.get("baseSrc"));
        assertEquals("300", model.get("iFrameHeight"));
        assertEquals("0", model.get("border"));
        assertEquals("#000000", model.get("bordercolor"));
        assertEquals("0", model.get("frameborder"));
        assertEquals("600", model.get("height-maximized"));
        assertEquals("300", model.get("height-normal"));
        assertEquals("0", model.get("hspace"));
        assertEquals("auto", model.get("scrolling"));
        assertEquals("0", model.get("vspace"));
        assertEquals("100%", model.get("width"));
    }

    @Test
    public void testShowView_AuthSiteUserExistSiteKeyExistForm_PreAction() throws ReadOnlyException {
        PortletPreferences prefs = new MockPortletPreferences();
        initPortletPreferences(prefs);
        prefs.setValue("pre-iframe-action", "http://localhost/mockportlet?preaction");
        prefs.setValue("src", "http://www.google.com");
        prefs.setValue("auth", "true");
        prefs.setValue("auth-type", "form");
        prefs.setValue("site-key", "test-site-key");

        MockRenderRequest mockReq = new MockRenderRequest(PortletMode.VIEW);
        RenderRequest req = (MockRenderRequest) initPortletRequest(mockReq);

        MockRenderResponse resp = new TestStubMockRenderResponse();

        ModelMap model = new ModelMap();

        String response = controller.showView(prefs, req, resp, model);
        assertEquals("view", response);

        UserSiteCredential siteCredential = (UserSiteCredential) model.get("siteCredential");
        assertEquals("test-user", siteCredential.getUid());
        assertEquals("test-site-key", siteCredential.getSiteKey());
        assertEquals("test-site-user", siteCredential.getSiteUser());
        assertEquals("test-site-password", siteCredential.getSitePassword());

        assertEquals("http://localhost/mockportlet?resourceID=resourceId", model.get("iFrameSrc"));
        assertEquals("http://localhost/mockportlet?preaction", model.get("preIFrameSrc"));

        // Test model
        assertEquals("http://localhost/mockportlet?resourceID=resourceId", model.get("iFrameSrc"));
        assertEquals("http://localhost/", model.get("baseSrc"));
        assertEquals("300", model.get("iFrameHeight"));
        assertEquals("0", model.get("border"));
        assertEquals("#000000", model.get("bordercolor"));
        assertEquals("0", model.get("frameborder"));
        assertEquals("600", model.get("height-maximized"));
        assertEquals("300", model.get("height-normal"));
        assertEquals("0", model.get("hspace"));
        assertEquals("auto", model.get("scrolling"));
        assertEquals("0", model.get("vspace"));
        assertEquals("100%", model.get("width"));
    }

    @Test
    public void testShowView_WindowStateMaximized() throws ReadOnlyException {
        PortletPreferences prefs = new MockPortletPreferences();
        initPortletPreferences(prefs);
        prefs.setValue("src", "http://www.google.com");
        prefs.setValue("auth", "true");
        prefs.setValue("auth-type", "form");
        prefs.setValue("site-key", "test-site-key");

        MockRenderRequest mockReq = new MockRenderRequest(PortletMode.VIEW);
        mockReq = (MockRenderRequest) initPortletRequest(mockReq);

        MockRenderResponse mockResp = new TestStubMockRenderResponse();
        mockResp.createResourceURL();

        ModelMap model = new ModelMap();

        // NORMAL
        mockReq.setWindowState(WindowState.NORMAL);
        controller.showView(prefs, mockReq, mockResp, model);
        assertEquals("300", model.get("iFrameHeight"));

        // MAXIMIZED
        mockReq.setWindowState(WindowState.MAXIMIZED);
        controller.showView(prefs, mockReq, mockResp, model);
        assertEquals("600", model.get("iFrameHeight"));
    }

    private PortletRequest initPortletRequest(PortletRequest req) {
        Map<String, String> userInfo = new HashMap<String, String>();
        userInfo.put(PortletRequest.P3PUserInfos.USER_LOGIN_ID.toString(), "test-user");
        req.setAttribute(PortletRequest.USER_INFO, userInfo);
        return req;
    }

    @Test
    public void testChangeVaultCredentials_NoUserSiteCredential() throws ReadOnlyException {
        PortletPreferences prefs = new MockPortletPreferences();
        initPortletPreferences(prefs);

        MockRenderRequest mockReq = new MockRenderRequest(PortletMode.VIEW);
        RenderRequest req = (RenderRequest) initPortletRequest(mockReq);
        ModelMap model = new ModelMap();

        String response = controller.changeVaultCredentials(prefs, req, model);
        assertEquals("userCredentialForm", response);

        PortletConfig portletConfig = (se.vgregion.portal.iframe.model.PortletConfig) model.get("portletConfig");
        assertNotNull(portletConfig);
        assertEquals("test-key", portletConfig.getSiteKey());
        assertEquals("test-src", portletConfig.getSrc());
        assertEquals(Boolean.FALSE, portletConfig.isRelative());
        assertEquals(Boolean.TRUE, portletConfig.isAuth());
        assertEquals("form", portletConfig.getAuthType());
        assertEquals("post", portletConfig.getFormMethod());
        assertEquals("username", portletConfig.getSiteUserNameField());
        assertEquals("password", portletConfig.getSitePasswordField());
        assertEquals("test1=hidden1&test2=hidden2", portletConfig.getHiddenVariables());
        assertEquals("html1=apa\nhtml2=bepa", portletConfig.getHtmlAttributes());

        UserSiteCredential siteCredential = (UserSiteCredential) model.get("siteCredential");
        assertNotNull(siteCredential);
        assertEquals("test-user", siteCredential.getUid());
        assertEquals("test-key", siteCredential.getSiteKey());
        assertEquals("test-user", siteCredential.getSiteUser());
        assertNull(siteCredential.getSitePassword());
    }

    @Test
    @Ignore
    public void testChangeVaultCredentials_NoUserSiteCredential_NotSuggestScreenName() throws ReadOnlyException {
        PortletPreferences prefs = new MockPortletPreferences();
        initPortletPreferences(prefs);
        prefs.setValue("suggestScreenName", "false");

        MockRenderRequest mockReq = new MockRenderRequest(PortletMode.VIEW);
        RenderRequest req = (RenderRequest) initPortletRequest(mockReq);
        ModelMap model = new ModelMap();

        String response = controller.changeVaultCredentials(prefs, req, model);
        assertEquals("userCredentialForm", response);

        PortletConfig portletConfig = (se.vgregion.portal.iframe.model.PortletConfig) model.get("portletConfig");
        assertNotNull(portletConfig);
        assertEquals("test-key", portletConfig.getSiteKey());
        assertEquals("test-src", portletConfig.getSrc());
        assertEquals(Boolean.FALSE, portletConfig.isRelative());
        assertEquals(Boolean.TRUE, portletConfig.isAuth());
        assertEquals("form", portletConfig.getAuthType());
        assertEquals("post", portletConfig.getFormMethod());
        assertEquals("username", portletConfig.getSiteUserNameField());
        assertEquals("password", portletConfig.getSitePasswordField());
        assertEquals("test1=hidden1&test2=hidden2", portletConfig.getHiddenVariables());
        assertEquals("html1=apa\nhtml2=bepa", portletConfig.getHtmlAttributes());

        UserSiteCredential siteCredential = (UserSiteCredential) model.get("siteCredential");
        assertNotNull(siteCredential);
        assertEquals("test-user", siteCredential.getUid());
        assertEquals("test-key", siteCredential.getSiteKey());
        assertNull(siteCredential.getSiteUser());
        assertNull(siteCredential.getSitePassword());
    }

    @Test
    public void testChangeVaultCredentials_NoUserSiteCredential_ScreenNameOnly() throws ReadOnlyException {
        PortletPreferences prefs = new MockPortletPreferences();
        initPortletPreferences(prefs);
        prefs.setValue("suggestScreenName", "false");
        prefs.setValue("screenNameOnly", "true");

        MockRenderRequest mockReq = new MockRenderRequest(PortletMode.VIEW);
        RenderRequest req = (RenderRequest) initPortletRequest(mockReq);
        ModelMap model = new ModelMap();

        String response = controller.changeVaultCredentials(prefs, req, model);
        assertEquals("userCredentialForm", response);

        PortletConfig portletConfig = (se.vgregion.portal.iframe.model.PortletConfig) model.get("portletConfig");
        assertNotNull(portletConfig);
        assertEquals("test-key", portletConfig.getSiteKey());
        assertEquals("test-src", portletConfig.getSrc());
        assertEquals(Boolean.FALSE, portletConfig.isRelative());
        assertEquals(Boolean.TRUE, portletConfig.isAuth());
        assertEquals("form", portletConfig.getAuthType());
        assertEquals("post", portletConfig.getFormMethod());
        assertEquals("username", portletConfig.getSiteUserNameField());
        assertEquals("password", portletConfig.getSitePasswordField());
        assertEquals("test1=hidden1&test2=hidden2", portletConfig.getHiddenVariables());
        assertEquals("html1=apa\nhtml2=bepa", portletConfig.getHtmlAttributes());

        UserSiteCredential siteCredential = (UserSiteCredential) model.get("siteCredential");
        assertNotNull(siteCredential);
        assertEquals("test-user", siteCredential.getUid());
        assertEquals("test-key", siteCredential.getSiteKey());
        assertEquals("test-user", siteCredential.getSiteUser());
        assertNull(siteCredential.getSitePassword());
    }

    @Test
    public void testChangeVaultCredentials_NoAuth() throws ReadOnlyException {
        PortletPreferences prefs = new MockPortletPreferences();
        initPortletPreferences(prefs);
        prefs.setValue("auth", "false");

        MockRenderRequest mockReq = new MockRenderRequest(PortletMode.VIEW);
        RenderRequest req = (RenderRequest) initPortletRequest(mockReq);
        ModelMap model = new ModelMap();

        String response = controller.changeVaultCredentials(prefs, req, model);
        assertEquals("view", response);

        PortletConfig portletConfig = (PortletConfig) model.get("portletConfig");
        assertNotNull(portletConfig);
        assertEquals("test-src", portletConfig.getSrc());
        assertEquals(Boolean.FALSE, portletConfig.isRelative());
        assertEquals(Boolean.FALSE, portletConfig.isAuth());
        assertEquals("html1=apa\nhtml2=bepa", portletConfig.getHtmlAttributes());
    }

    @Test
    public void testShowProxyForm_AuthForm() throws ReadOnlyException, URISyntaxException {
        PortletPreferences prefs = new MockPortletPreferences();
        initPortletPreferences(prefs);
        prefs.setValue("site-key", "test-site-key");

        ResourceRequest mockReq = new MockResourceRequest();
        ResourceRequest req = (ResourceRequest) initPortletRequest(mockReq);

        ModelMap model = new ModelMap();

        String result = controller.showProxyForm(prefs, req, model, null);

        assertEquals("proxyLoginForm", result);

        PortletConfig portletConfig = (PortletConfig) model.get("portletConfig");
        assertNotNull(portletConfig);
        assertEquals("", portletConfig.getPreIFrameAction());

        String proxyFormAction = (String) model.get("proxyAction");
        assertEquals("test-src", proxyFormAction);

        UserSiteCredential siteCredential = (UserSiteCredential) model.get("siteCredential");
        assertNotNull(siteCredential);
        assertEquals("test-user", siteCredential.getUid());
        assertEquals("test-site-key", siteCredential.getSiteKey());
        assertEquals("test-site-user", siteCredential.getSiteUser());
        assertEquals("test-site-password", siteCredential.getSitePassword());
    }

    @Test
    @Ignore
    public void testShowProxyForm_AuthFormScreenNameOnly() throws ReadOnlyException, URISyntaxException {
        PortletPreferences prefs = new MockPortletPreferences();
        initPortletPreferences(prefs);
        prefs.setValue("site-key", "test-site-key");
        prefs.setValue("screenNameOnly", "true");

        ResourceRequest mockReq = new MockResourceRequest();
        ResourceRequest req = (ResourceRequest) initPortletRequest(mockReq);

        ModelMap model = new ModelMap();

        String result = controller.showProxyForm(prefs, req, model, null);

        assertEquals("proxyLoginForm", result);

        PortletConfig portletConfig = (PortletConfig) model.get("portletConfig");
        assertNotNull(portletConfig);

        UserSiteCredential siteCredential = (UserSiteCredential) model.get("siteCredential");
        assertNotNull(siteCredential);
        assertEquals("test-user", siteCredential.getUid());
        assertEquals("test-site-key", siteCredential.getSiteKey());
        assertEquals("test-user", siteCredential.getSiteUser());
        assertEquals("test-site-password", siteCredential.getSitePassword());
    }

    @Test
    public void testShowProxyForm_NoAuthForm() throws ReadOnlyException, URISyntaxException {
        PortletPreferences prefs = new MockPortletPreferences();
        initPortletPreferences(prefs);
        prefs.setValue("auth", "false");

        ResourceRequest mockReq = new MockResourceRequest();
        ResourceRequest req = (ResourceRequest) initPortletRequest(mockReq);

        ModelMap model = new ModelMap();

        String result = controller.showProxyForm(prefs, req, model, null);

        assertEquals("view", result);
    }

    @Test
    @Ignore
    public void testShowProxyForm_AuthNoForm() throws ReadOnlyException, URISyntaxException {
        PortletPreferences prefs = new MockPortletPreferences();
        initPortletPreferences(prefs);
        prefs.setValue("auth-type", "basic");

        ResourceRequest mockReq = new MockResourceRequest();
        ResourceRequest req = (ResourceRequest) initPortletRequest(mockReq);

        ModelMap model = new ModelMap();

        String result = controller.showProxyForm(prefs, req, model, null);

        assertEquals("view", result);
    }

    @Test
    public void testShowProxyForm_NoAuthNoForm() throws ReadOnlyException, URISyntaxException {
        PortletPreferences prefs = new MockPortletPreferences();
        initPortletPreferences(prefs);
        prefs.setValue("auth", "false");
        prefs.setValue("auth-type", "basic");

        ResourceRequest mockReq = new MockResourceRequest();
        ResourceRequest req = (ResourceRequest) initPortletRequest(mockReq);

        ModelMap model = new ModelMap();

        String result = controller.showProxyForm(prefs, req, model, null);

        assertEquals("view", result);
    }

    @Test
    public void testStoreUserCredential_StoreInvalidUid() {
        UserSiteCredential userSiteCredential = new UserSiteCredential();
        userSiteCredential.setSiteKey("test-key");
        MockActionRequest request = new MockActionRequest();

        try {
            controller.storeUserCredential(userSiteCredential, request);
            fail("No uid, exception should have been thrown.");
        } catch (Exception ex) {
            // OK
        }

        userSiteCredential.setUid(" ");
        try {
            controller.storeUserCredential(userSiteCredential, request);
            fail("No uid, exception should have been thrown.");
        } catch (Exception ex) {
            // OK
        }
    }

    @Test
    public void testStoreUserCredential_StoreInvalidSiteKey() {
        UserSiteCredential userSiteCredential = new UserSiteCredential();
        userSiteCredential.setUid("test-user");
        MockActionRequest request = new MockActionRequest();

        try {
            controller.storeUserCredential(userSiteCredential, request);
            fail("No SiteKey, exception should have been thrown.");
        } catch (Exception ex) {
            // OK
        }

        userSiteCredential.setSiteKey(" ");
        try {
            controller.storeUserCredential(userSiteCredential, request);
            fail("No SiteKey, exception should have been thrown.");
        } catch (Exception ex) {
            // OK
        }
    }

    @Test
    public void testStoreUserCredential_Store() {
        UserSiteCredential userSiteCredential = new UserSiteCredential();
        userSiteCredential.setUid("test-user");
        userSiteCredential.setSiteKey("test-key");
        MockActionRequest request = new MockActionRequest();

        controller.storeUserCredential(userSiteCredential, request);

        assertEquals(1, storeService.getStoreCalled());
    }

    @Test
    public void testStoreUserCredential_StoreCanceled() {
        UserSiteCredential userSiteCredential = new UserSiteCredential();
        userSiteCredential.setUid("test-user");
        userSiteCredential.setSiteKey("test-key");
        MockActionRequest request = new MockActionRequest();
        request.setParameter("_cancel", "");

        controller.storeUserCredential(userSiteCredential, request);

        assertEquals(0, storeService.getStoreCalled());
    }

    @Test
    public void testReplacePlaceholders() throws Exception {
        String url = "http://localhost:8081/msrv?";
        controller.setFindMailServerNameServiceUrl(url);

        // Given
        AsyncCachingLdapServiceWrapper ldapService = Mockito.mock(AsyncCachingLdapServiceWrapper.class);
        LdapUser ldapUser = Mockito.mock(LdapUser.class);
        Mockito.when(ldapUser.getAttributeValue("mailServer")).thenReturn("CN=liv,OU=epost,O=vgregion");
        Mockito.when(ldapService.getLdapUserByUid(Matchers.eq("aUserId"))).thenReturn(ldapUser);
        ReflectionTestUtils.setField(controller, "ldapService", ldapService);

        MailInfService mailInfService = Mockito.mock(MailInfService.class);
        Mockito.when(mailInfService.findServerName("aUserId")).thenReturn("liv");
        ReflectionTestUtils.setField(controller, "mailInfService", mailInfService);

        // When
        String result = controller.replacePlaceholders("aUserId", "http://{ldap.mailserver.cn}.vgregion.se");

        assertEquals("http://liv.vgregion.se", result);
    }

    class TestStubMockRenderResponse extends MockRenderResponse {
        @Override
        public ResourceURL createResourceURL() {
            MockResourceURL mockResourceURL = new MockResourceURL();
            mockResourceURL.setResourceID("resourceId");

            return mockResourceURL;
        }
    }
}