@Test
public void testDoProcessing() throws Exception {

    // Creating SOAP envelope
    SOAPEnvelope env = SOAPEnv.createEnvelope(SOAPEnv.SOAPVersion.SOAP_12);
    // Adding header
    SOAPHeaderBlock messaging = Messaging.createElement(env);
    MessageContext mc = new MessageContext();
    mc.setFLOW(MessageContext.OUT_FLOW);
    IMessageProcessingContext procCtx = MessageProcessingContext.getFromMessageContext(mc);
    
    try {
        mc.setEnvelope(env);
    } catch (AxisFault axisFault) {
        fail(axisFault.getMessage());
    }
    PullRequest pullRequest = new PullRequest();
    pullRequest.setMessageId(MessageIdUtils.createMessageId());
    pullRequest.setMPC("http://some.interesting.mpc.for.pulling/");
    StorageManager updateManager = HolodeckB2BCore.getStorageManager();
    procCtx.setPullRequest(updateManager.storeOutGoingMessageUnit(pullRequest));
    try {
        assertEquals(Handler.InvocationResponse.CONTINUE, new PackagePullRequestSignal().invoke(mc));
    } catch (Exception e) {
        fail(e.getMessage());
    }
    
    assertTrue(messaging.getChildElements().hasNext());
    OMElement signalElem = (OMElement) messaging.getChildElements().next();
    assertEquals("SignalMessage", signalElem.getLocalName());
    assertEquals(EbMSConstants.EBMS3_NS_URI, signalElem.getNamespaceURI());
    assertNotNull(signalElem.getFirstChildWithName(new QName(EbMSConstants.EBMS3_NS_URI, "PullRequest")));
    OMElement msgInfoElem = signalElem.getFirstChildWithName(new QName(EbMSConstants.EBMS3_NS_URI, "MessageInfo"));
    assertNotNull(msgInfoElem);
    assertEquals(pullRequest.getMessageId(), 
    			 msgInfoElem.getFirstChildWithName(new QName(EbMSConstants.EBMS3_NS_URI, "MessageId")).getText());
}