anchor.diff:       {resource_check, [], [check_root, check_repos, check_leases]},
        {leases, [], [create_and_delete_session,
                      create_invalid_leases,
  +                   busy_path,
  +                   independent_leases,
                      create_session_when_already_created,
                      end_invalid_session]},
        {payloads, [], [normal_payload_submission,
  
positive.code:          check_leases/1,
           create_and_delete_session/1,
           create_invalid_leases/1,
           create_session_when_already_created/1,
           end_invalid_session/1,
           normal_payload_submission/1,
  
negative.code:     lists:foreach(Check, RequestReplies).
  
  
  busy_path(Config) ->
      RequestBody1 = jsx:encode(#{<<"path">> => <<"repo1.domain1.org/dir">>,
                              <<"api_version">> => integer_to_binary(cvmfs_fe:api_version())}),
      HMAC1 = p_make_hmac(RequestBody1),
      RequestHeaders1 = p_make_headers(RequestBody1, <<"key1">>, HMAC1),
      {ok, ReplyBody1} = p_post(conn_pid(Config), ?API_ROOT ++ "/leases", RequestHeaders1, RequestBody1),
      #{<<"session_token">> := Token} = jsx:decode(ReplyBody1, [return_maps]),
  
      RequestBody2 = jsx:encode(#{<<"path">> => <<"repo1.domain1.org/dir/subdir">>,
                              <<"api_version">> => integer_to_binary(cvmfs_fe:api_version())}),
      HMAC2 = p_make_hmac(RequestBody2),
      RequestHeaders2 = p_make_headers(RequestBody2, <<"key1">>, HMAC2),
      {ok, ReplyBody2} = p_post(conn_pid(Config), ?API_ROOT ++ "/leases", RequestHeaders2, RequestBody2),
      #{<<"status">> := <<"path_busy">>} = jsx:decode(ReplyBody2, [return_maps]),
  
      HMAC3 = p_make_hmac(Token),
      RequestHeaders3 = p_make_headers(<<"key1">>, HMAC3),
      {ok, ReplyBody3} = p_delete(conn_pid(Config), ?API_ROOT ++ "/leases/" ++ binary_to_list(Token),
                                  RequestHeaders3),
      #{<<"status">> := <<"ok">>} = jsx:decode(ReplyBody3, [return_maps]).
  
  
  independent_leases(Config) ->
      RequestBody1 = jsx:encode(#{<<"path">> => <<"repo1.domain1.org/dir1">>,
                              <<"api_version">> => integer_to_binary(cvmfs_fe:api_version())}),
      HMAC1 = p_make_hmac(RequestBody1),
      RequestHeaders1 = p_make_headers(RequestBody1, <<"key1">>, HMAC1),
      {ok, ReplyBody1} = p_post(conn_pid(Config), ?API_ROOT ++ "/leases", RequestHeaders1, RequestBody1),
      #{<<"session_token">> := Token1} = jsx:decode(ReplyBody1, [return_maps]),
  
      RequestBody2 = jsx:encode(#{<<"path">> => <<"repo1.domain1.org/dir2">>,
                              <<"api_version">> => integer_to_binary(cvmfs_fe:api_version())}),
      HMAC2 = p_make_hmac(RequestBody2),
      RequestHeaders2 = p_make_headers(RequestBody2, <<"key1">>, HMAC2),
      {ok, ReplyBody2} = p_post(conn_pid(Config), ?API_ROOT ++ "/leases", RequestHeaders2, RequestBody2),
      #{<<"session_token">> := Token2} = jsx:decode(ReplyBody2, [return_maps]),
  
      HMAC3 = p_make_hmac(Token1),
      RequestHeaders3 = p_make_headers(<<"key1">>, HMAC3),
      {ok, ReplyBody3} = p_delete(conn_pid(Config), ?API_ROOT ++ "/leases/" ++ binary_to_list(Token1),
                                  RequestHeaders3),
      #{<<"status">> := <<"ok">>} = jsx:decode(ReplyBody3, [return_maps]),
  
      HMAC4 = p_make_hmac(Token2),
      RequestHeaders4 = p_make_headers(<<"key1">>, HMAC4),
      {ok, ReplyBody4} = p_delete(conn_pid(Config), ?API_ROOT ++ "/leases/" ++ binary_to_list(Token2),
                                  RequestHeaders4),
      #{<<"status">> := <<"ok">>} = jsx:decode(ReplyBody4, [return_maps]).
  
  
  create_session_when_already_created(Config) ->
      % Create new lease
      RequestBody = jsx:encode(#{<<"path">> => <<"repo1.domain1.org">>,
  