anchor.diff:      end.
   
   
  --spec load_repos(RepoCfg) -> {ok, FixedRepoCfg}
  -    when RepoCfg :: [binary() | #{atom() => binary() | [binary()]}],
  -         FixedRepoCfg :: [#{atom() => binary() | [binary()]}].
   load_repos(RepoCfg) ->
       AddDefaultKeyId =
           fun(Name) when is_binary(Name) ->
  -                #{domain => Name, keys => [Name]};
  +                #{domain => Name, keys => default};
              (#{domain := _Name, keys := _Keys} = R) ->
                   R
           end,
  
positive.code: 
  
  load_keys(KeyCfg, Repos, KeyLoader) ->
      RepoNames = sets:from_list(get_repo_names(Repos)),
  
      ExtractKeyIds = fun(#{keys := Keys}) -> Keys end,
      ReferencedKeyIds = sets:from_list(lists:flatmap(ExtractKeyIds, Repos)),
  
      DefinedKeys = lists:map(KeyLoader, KeyCfg),
      DefinedKeyIds = sets:from_list(lists:map(fun(#{id := Id}) -> Id end, DefinedKeys)),
  
      ExtraKeyIds = sets:to_list(sets:subtract(ReferencedKeyIds, DefinedKeyIds)),
  
      AddIfDefaultKeyId = fun(Id, Acc) ->
          case sets:is_element(Id, RepoNames) of
              true ->
                  [#{type => <<"file">>,
                     file_name => <<"/etc/cvmfs/keys/", Id/binary, ".gw">>,
                     repo_subpath => <<"/">>} | Acc];
              false ->
                  lager:warning("Referenced key id: ~p has not been defined. "
                                ++ "It may not be possible to take leases on repositories "
                                ++ "configured with that key.", [Id]),
                  Acc
              end
          end,
      DefaultKeys = lists:foldl(AddIfDefaultKeyId, [], ExtraKeyIds),
  
      {ok, Repos, DefinedKeys ++ lists:map(KeyLoader, DefaultKeys)}.
  
  
  %%% Private functions
  
negative.code:           repo_subpath => <<"/path">>}
      ],
  
      {ok, Repos, Keys} = load_keys(KeyCfg, RepoCfg, fun(K) -> mock_load_key(K) end),
  
      {value, #{secret := Secret}} = lists:search(
          fun(#{id := Id}) -> Id =:= <<"test3.domain.org">> end, Keys),
      ?assert(Secret =:= <<"mocksecret">>).
  
  mock_load_key(#{type := <<"plain_text">>, id := Id, secret := Secret, repo_subpath := Path}) ->
      #{id => Id, secret => Secret, path => Path};
  mock_load_key(#{type := <<"file">>, file_name := FileName, repo_subpath := Path}) ->
      [Id | _] = binary:split(lists:last(binary:split(FileName, <<"/">>, [global])), <<".gw">>),
      #{id => Id, secret => <<"mocksecret">>, path => Path}.
  