Renaming repositories ===================== Sometimes a repository doesn't have the correct name. Since in Gitano, the repository name is merely a side-effect of its location on the filesystem (though that may play into rules in some cases) renaming a repository is a fairly simple operation to perform. SCENARIO rename repository GIVEN a standard instance WHEN testinstance adminkey runs copy gitano-admin public/testrepo THEN server-side public/testrepo has identical refs to gitano-admin When a repository is renamed it does not modify any of the refs. WHEN testinstance adminkey runs rename public/testrepo public/testrepo2 THEN server-side public/testrepo2 has identical refs to gitano-admin FINALLY the instance is torn down Permissions for renaming ======================== A user must have read access, rename access for the existing repository, and must have create access for the destination name. SCENARIO rename permissions GIVEN a standard instance AND testinstance using adminkey has patched gitano-admin with personal-repo-create.patch AND testinstance, using adminkey, adds a new user alice, with a key called main WHEN alice main runs create personal/alice/testrepo WHEN alice main runs create personal/alice/testrepo2 AND alice main runs ls THEN stdout contains personal/alice/testrepo AND stdout contains personal/alice/testrepo2 WHEN alice main, expecting failure, runs rename personal/alice/testrepo personal/alice/testrepo2 THEN stderr contains CRIT: Destination location is in use WHEN alice main, expecting failure, runs rename personal/alice/testrepo3 personal/alice/testrepo4 THEN stderr contains CRIT: Cannot rename a repository which does not exist If a user is not permitted to see a repository they can't rename it, and it does not reveal the existence of the repository. WHEN alice main, expecting failure, runs rename personal/alice/testrepo gitano-admin THEN stderr contains CRIT: Ruleset denied action. AND stderr does not contain CRIT: Destination location is in use WHEN alice main, expecting failure, runs rename testrepo personal/alice/gitano-admin THEN stderr contains CRIT: The ruleset didn't provide access. AND stderr does not contain ERROR: Cannot rename testrepo as it does not exist FINALLY the instance is torn down