org.hdiv.dataComposer.DataComposerCipherTest.java Source code

Java tutorial

Introduction

Here is the source code for org.hdiv.dataComposer.DataComposerCipherTest.java

Source

/**
 * Copyright 2005-2013 hdiv.org
 *
 * Licensed 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.hdiv.dataComposer;

import javax.servlet.http.HttpServletRequest;

import org.hdiv.AbstractHDIVTestCase;
import org.hdiv.config.HDIVConfig;
import org.hdiv.config.Strategy;
import org.hdiv.state.IParameter;
import org.hdiv.state.IState;
import org.hdiv.state.StateUtil;
import org.hdiv.util.HDIVUtil;
import org.springframework.mock.web.MockHttpServletRequest;

/**
 * Unit tests for the <code>org.hdiv.composer.DataComposerMemory</code> class.
 * 
 * @author Gorka Vicente
 */
public class DataComposerCipherTest extends AbstractHDIVTestCase {

    private DataComposerFactory dataComposerFactory;

    private StateUtil stateUtil;

    protected void postCreateHdivConfig(HDIVConfig config) {
        config.setStrategy(Strategy.CIPHER);
    }

    /*
     * @see TestCase#setUp()
     */
    protected void onSetUp() throws Exception {

        this.dataComposerFactory = this.getApplicationContext().getBean(DataComposerFactory.class);
        this.stateUtil = this.getApplicationContext().getBean(StateUtil.class);
    }

    /**
     * @see DataComposerMamory#compose(String, String, String, boolean)
     */
    public void testComposeSimple() {

        HttpServletRequest request = HDIVUtil.getHttpServletRequest();
        IDataComposer dataComposer = this.dataComposerFactory.newInstance(request);
        HDIVUtil.setDataComposer(dataComposer, request);
        assertTrue(dataComposer instanceof DataComposerCipher);

        dataComposer.startPage();
        dataComposer.beginRequest("test.do");

        boolean confidentiality = this.getConfig().getConfidentiality();

        // we add a multiple parameter that will be encoded as 0, 1, 2, ...
        String result = dataComposer.compose("test.do", "parameter1", "2", false);
        String value = (!confidentiality) ? "2" : "0";
        assertTrue(value.equals(result));

        result = dataComposer.compose("test.do", "parameter1", "2", false);
        value = (!confidentiality) ? "2" : "1";
        assertTrue(value.equals(result));

        result = dataComposer.compose("test.do", "parameter1", "2", false);
        assertTrue("2".equals(result));

        result = dataComposer.compose("test.do", "parameter2", "2", false);
        value = (!confidentiality) ? "2" : "0";
        assertTrue(value.equals(result));

        result = dataComposer.compose("test.do", "parameter2", "2", false);
        value = (!confidentiality) ? "2" : "1";
        assertTrue(value.equals(result));

        String id = dataComposer.endRequest();
        assertNotNull(id);
    }

    public void testComposeAndRestore() {

        HttpServletRequest request = HDIVUtil.getHttpServletRequest();
        IDataComposer dataComposer = this.dataComposerFactory.newInstance(request);

        dataComposer.startPage();
        dataComposer.beginRequest("test.do");
        dataComposer.compose("parameter1", "2", false);
        String stateId = dataComposer.endRequest();
        dataComposer.endPage();

        assertNotNull(stateId);

        IState state = this.stateUtil.restoreState(stateId);

        assertEquals("test.do", state.getAction());
    }

    public void testAjax() {

        MockHttpServletRequest request = (MockHttpServletRequest) HDIVUtil.getHttpServletRequest();
        IDataComposer dataComposer = this.dataComposerFactory.newInstance(request);
        HDIVUtil.setDataComposer(dataComposer, request);

        dataComposer.startPage();
        dataComposer.beginRequest("test.do");
        dataComposer.compose("parameter1", "1", false);
        String state1 = dataComposer.endRequest();
        dataComposer.endPage();

        assertNotNull(state1);

        // Ajax request to modify state

        request.addParameter("_MODIFY_HDIV_STATE_", state1);
        IDataComposer dataComposer2 = this.dataComposerFactory.newInstance(request);
        HDIVUtil.setDataComposer(dataComposer2, request);

        // Add new parameter
        dataComposer2.compose("parameter2", "2", false);
        String state2 = dataComposer2.endRequest();
        dataComposer2.endPage();

        // Restore state
        IState state = this.stateUtil.restoreState(state2);

        // State contains both parameters
        IParameter param = state.getParameter("parameter1");
        String val = param.getValues().get(0);
        assertEquals("1", val);

        param = state.getParameter("parameter2");
        val = param.getValues().get(0);
        assertEquals("2", val);
    }

}