anchor.diff:      test_utils:mock_expect(Workers, token_logic, verify_access_token, fun
           (AccessToken, _, _, _) ->
               case tokens:deserialize(AccessToken) of
  -                {ok, #token{subject = ?SUB(user, ?USER_ID)}} ->
  -                    {ok, ?SUB(user, ?USER_ID), undefined};
  +                {ok, #token{subject = ?SUB(user, ?USER_ID)} = Token} ->
  +                    Caveats = tokens:get_caveats(Token),
  +                    case infer_ttl(Caveats) of
  +                        undefined ->
  +                            {ok, ?SUB(user, ?USER_ID), undefined};
  +                        TokenTTL when TokenTTL > 0 ->
  +                            {ok, ?SUB(user, ?USER_ID), TokenTTL};
  +                        _ ->
  +                            ?ERROR_UNAUTHORIZED
  +                    end;
                   {error, _} = Error ->
                       Error
               end
  
positive.code: 
  get_auth_cache_size(Worker) ->
      rpc:call(Worker, ets, info, [auth_manager, size]).
  
negative.code: 
  -export([
      auth_cache_test/1,
      token_authentication/1,
      token_expiration/1
  ]).
  
  all() -> ?ALL([
      auth_cache_test,
      token_authentication,
      token_expiration
  ]).
  
  
  