@Test public void testRestoreSecurityContext() { final SecurityHelper sc = new SecurityHelper() { Object mycontext = null; @Override public Object getSecurityContext() { return this.mycontext; } @Override public void clearSecurityContext() { this.mycontext = null; } @Override public Object associateSecurityContext(Object context) { Object old = mycontext; this.mycontext = context; return old; } @Override public Subject getSubjectInContext(Object context) { return null; } @Override public Subject getSubjectInContext(String securityDomain) { return null; } @Override public Object authenticate( String securityDomain, String baseUserName, Credentials credentials, String applicationName) throws LoginException { return null; } @Override public GSSResult negotiateGssLogin(String securityDomain, byte[] serviceTicket) throws LoginException { return null; } }; Object previousSC = "testSC"; sc.associateSecurityContext(previousSC); DQPWorkContext message = new DQPWorkContext() { @Override public Subject getSubject() { return new Subject(); } }; message.setSecurityHelper(sc); message.setSession(Mockito.mock(SessionMetadata.class)); final String currentSC = "teiid-security-context"; // $NON-NLS-1$ Mockito.stub(message.getSession().getSecurityContext()).toReturn(currentSC); Runnable r = new Runnable() { @Override public void run() { assertEquals(currentSC, sc.getSecurityContext()); } }; message.runInContext(r); assertEquals(previousSC, sc.getSecurityContext()); }