As it is now is fine. I just meant that the supported_types setup is not strictly needed and you could get away with

     token = tokens.BearerToken(self.mock_validator,
                token_generator=tokens.crypto_token_generator(self.private_pem),
                expires_in=self.expires_in, user_id=123)
     self.endpoint = Server(self.mock_validator, default_token_type=token)

And even that feels a bit awkward. Is there a reason we need the bearer token to accept the claims dict? Maybe this could also be included in the decorator? Resulting in something like

    sign_token = signed_token_generator("pem", claims={"foo": "bar"})
    self.endpoint = Server(self.mock_validator, token_generator=sign_token)

What do you think?