@Test
    void verifyOperation() throws Throwable {
        val service = getOidcRegisteredService(UUID.randomUUID().toString());
        servicesManager.save(service);

        val request = new MockHttpServletRequest();
        request.addParameter(OAuth20Constants.CLIENT_ID, service.getClientId());
        request.setRequestURI("/cas/oidc");

        val ctx = new JEEContext(request, new MockHttpServletResponse());
        new ProfileManager(ctx, new JEESessionStore()).removeProfiles();

        val ecJWK = new ECKeyGenerator(Curve.P_256).keyID("1").generate();
        val proofFactory = new DefaultDPoPProofFactory(ecJWK, JWSAlgorithm.ES256);
        val proof = proofFactory.createDPoPJWT("POST", new URI(request.getRequestURL().toString()));
        request.addHeader(OAuth20Constants.DPOP, proof.serialize());
        val client = (HeaderClient) oidcDPoPClientProvider.createClient();
        val credentials = new TokenCredentials(OAuth20Constants.DPOP);
        client.getAuthenticator().validate(new CallContext(ctx, new JEESessionStore()), credentials);
        val profile = credentials.getUserProfile();
        assertNotNull(profile);
        assertNotNull(profile.getAttribute(OAuth20Constants.DPOP));
        assertNotNull(profile.getAttribute(OAuth20Constants.DPOP_CONFIRMATION));
    }
This is {@link OidcDPoPAuthenticatorTests}.

@author Misagh Moayyed
@since 6.6.0
support/cas-server-support-oidc/src/test/java/org/apereo/cas/oidc/authn/OidcDPoPAuthenticatorTests.java