@Test
    void verifyOperation() throws Exception {
        val context = MockRequestContext.create(applicationContext).withUserAgent("Firefox");
        context.setRemoteAddr("185.86.151.11").setLocalAddr("185.88.151.11").setClientInfo();

        val ticketGrantingTicket = new MockTicketGrantingTicket("casuser");
        context.setCurrentEvent(new Event(this, CasWebflowConstants.TRANSITION_ID_SUCCESS,
            new LocalAttributeMap<>(TicketGrantingTicket.class.getName(), ticketGrantingTicket.getId())));

        var readResult = readSessionStorageAction.execute(context);
        val storage = WebUtils.getBrowserStorage(context);
        assertNotNull(storage);
        assertEquals(BrowserStorage.BrowserStorageTypes.LOCAL, storage.getStorageType());
        assertEquals(CasWebflowConstants.TRANSITION_ID_READ_BROWSER_STORAGE, readResult.getId());
        assertTrue(context.getFlowScope().contains(ReadBrowserStorageAction.BROWSER_STORAGE_REQUEST_IN_PROGRESS));

        val writeResult = writeSessionStorageAction.execute(context);
        assertEquals(CasWebflowConstants.TRANSITION_ID_SUCCESS, writeResult.getId());
        assertTrue(context.getFlowScope().contains(BrowserStorage.PARAMETER_BROWSER_STORAGE));

        context.setCurrentEvent(new Event(this, CasWebflowConstants.TRANSITION_ID_CONTINUE));
        val sessionStorage = writeResult.getAttributes().getRequired("result", BrowserStorage.class);
        context.setParameter(BrowserStorage.PARAMETER_BROWSER_STORAGE,
            MAPPER.writeValueAsString(Map.of(sessionStorage.getContext(), sessionStorage.getPayload())));
        readResult = readSessionStorageAction.execute(context);
        assertFalse(context.getFlowScope().contains(ReadBrowserStorageAction.BROWSER_STORAGE_REQUEST_IN_PROGRESS));
        assertEquals(CasWebflowConstants.TRANSITION_ID_SUCCESS, readResult.getId());
        assertEquals(CasWebflowConstants.STATE_ID_TICKET_GRANTING_TICKET_CHECK, WebUtils.getTargetState(context));
        assertNotNull(WebUtils.getTicketGrantingTicketId(context));

        context.getFlowScope().clear();
        context.getRequestScope().clear();
        context.setParameter(BrowserStorage.PARAMETER_BROWSER_STORAGE, StringUtils.EMPTY);
        readResult = readSessionStorageAction.execute(context);
        assertEquals(CasWebflowConstants.TRANSITION_ID_READ_BROWSER_STORAGE, readResult.getId());
        assertNull(WebUtils.getTicketGrantingTicketId(context));
        
        context.getFlowScope().put(ReadBrowserStorageAction.BROWSER_STORAGE_REQUEST_IN_PROGRESS, Boolean.TRUE);
        readResult = readSessionStorageAction.execute(context);
        assertEquals(CasWebflowConstants.TRANSITION_ID_SKIP, readResult.getId());
        assertFalse(context.getFlowScope().contains(ReadBrowserStorageAction.BROWSER_STORAGE_REQUEST_IN_PROGRESS));
    }
This is {@link BrowserStorageActionTests}.

@author Misagh Moayyed
@since 7.0.0
core/cas-server-core-webflow/src/test/java/org/apereo/cas/web/flow/actions/BrowserStorageActionTests.java