From eecaad8b8e2c447429c31a01d49260ddd6b4ee03 Mon Sep 17 00:00:00 2001 From: Paul Martin <paul@paulsputer.com> Date: Sat, 16 Apr 2016 17:35:32 -0400 Subject: [PATCH] Proof of concept #1026 --- src/test/java/com/gitblit/tests/GitServletTest.java | 304 ++++++++++++++++++++++++++------------------------ 1 files changed, 156 insertions(+), 148 deletions(-) diff --git a/src/test/java/com/gitblit/tests/GitServletTest.java b/src/test/java/com/gitblit/tests/GitServletTest.java index b6a58ac..705684a 100644 --- a/src/test/java/com/gitblit/tests/GitServletTest.java +++ b/src/test/java/com/gitblit/tests/GitServletTest.java @@ -1,8 +1,19 @@ +/* + * Copyright 2011 gitblit.com. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package com.gitblit.tests; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; import java.io.BufferedWriter; import java.io.File; @@ -38,7 +49,6 @@ import com.gitblit.Constants.AccessPermission; import com.gitblit.Constants.AccessRestrictionType; import com.gitblit.Constants.AuthorizationControl; -import com.gitblit.GitBlit; import com.gitblit.Keys; import com.gitblit.models.RefLogEntry; import com.gitblit.models.RepositoryModel; @@ -47,14 +57,14 @@ import com.gitblit.utils.JGitUtils; import com.gitblit.utils.RefLogUtils; -public class GitServletTest { +public class GitServletTest extends GitblitUnitTest { static File ticgitFolder = new File(GitBlitSuite.REPOSITORIES, "working/ticgit"); - + static File ticgit2Folder = new File(GitBlitSuite.REPOSITORIES, "working/ticgit2"); static File jgitFolder = new File(GitBlitSuite.REPOSITORIES, "working/jgit"); - + static File jgit2Folder = new File(GitBlitSuite.REPOSITORIES, "working/jgit2"); String url = GitBlitSuite.gitServletUrl; @@ -62,7 +72,7 @@ String password = GitBlitSuite.password; private static final AtomicBoolean started = new AtomicBoolean(false); - + private static UserModel getUser() { UserModel user = new UserModel("james"); user.displayName = "James Moger"; @@ -70,10 +80,10 @@ user.password = "james"; return user; } - + private static void delete(UserModel user) { - if (GitBlit.self().getUserModel(user.username) != null) { - GitBlit.self().deleteUser(user.username); + if (users().getUserModel(user.username) != null) { + users().deleteUser(user.username); } } @@ -90,10 +100,10 @@ GitBlitSuite.stopGitblit(); deleteWorkingFolders(); } - + delete(getUser()); } - + public static void deleteWorkingFolders() throws Exception { if (ticgitFolder.exists()) { GitBlitSuite.close(ticgitFolder); @@ -119,25 +129,25 @@ if (ticgitFolder.exists()) { FileUtils.delete(ticgitFolder, FileUtils.RECURSIVE | FileUtils.RETRY); } - + CloneCommand clone = Git.cloneRepository(); clone.setURI(MessageFormat.format("{0}/ticgit.git", url)); clone.setDirectory(ticgitFolder); clone.setBare(false); clone.setCloneAllBranches(true); clone.setCredentialsProvider(new UsernamePasswordCredentialsProvider(account, password)); - GitBlitSuite.close(clone.call()); + GitBlitSuite.close(clone.call()); assertTrue(true); } @Test public void testBogusLoginClone() throws Exception { // restrict repository access - RepositoryModel model = GitBlit.self().getRepositoryModel("ticgit.git"); + RepositoryModel model = repositories().getRepositoryModel("ticgit.git"); model.accessRestriction = AccessRestrictionType.CLONE; - GitBlit.self().updateRepositoryModel(model.name, model, false); + repositories().updateRepositoryModel(model.name, model, false); - // delete any existing working folder + // delete any existing working folder boolean cloned = false; try { CloneCommand clone = Git.cloneRepository(); @@ -154,25 +164,25 @@ // restore anonymous repository access model.accessRestriction = AccessRestrictionType.NONE; - GitBlit.self().updateRepositoryModel(model.name, model, false); + repositories().updateRepositoryModel(model.name, model, false); assertFalse("Bogus login cloned a repository?!", cloned); } - + @Test public void testUnauthorizedLoginClone() throws Exception { // restrict repository access - RepositoryModel model = GitBlit.self().getRepositoryModel("ticgit.git"); + RepositoryModel model = repositories().getRepositoryModel("ticgit.git"); model.accessRestriction = AccessRestrictionType.CLONE; model.authorizationControl = AuthorizationControl.NAMED; UserModel user = new UserModel("james"); user.password = "james"; - GitBlit.self().updateUserModel(user.username, user, true); - GitBlit.self().updateRepositoryModel(model.name, model, false); + gitblit().addUser(user); + repositories().updateRepositoryModel(model.name, model, false); FileUtils.delete(ticgit2Folder, FileUtils.RECURSIVE); - - // delete any existing working folder + + // delete any existing working folder boolean cloned = false; try { CloneCommand clone = Git.cloneRepository(); @@ -190,11 +200,11 @@ assertFalse("Unauthorized login cloned a repository?!", cloned); FileUtils.delete(ticgit2Folder, FileUtils.RECURSIVE); - + // switch to authenticated model.authorizationControl = AuthorizationControl.AUTHENTICATED; - GitBlit.self().updateRepositoryModel(model.name, model, false); - + repositories().updateRepositoryModel(model.name, model, false); + // try clone again cloned = false; CloneCommand clone = Git.cloneRepository(); @@ -207,15 +217,15 @@ cloned = true; assertTrue("Authenticated login could not clone!", cloned); - + FileUtils.delete(ticgit2Folder, FileUtils.RECURSIVE); - + // restore anonymous repository access model.accessRestriction = AccessRestrictionType.NONE; model.authorizationControl = AuthorizationControl.NAMED; - GitBlit.self().updateRepositoryModel(model.name, model, false); - - delete(user); + repositories().updateRepositoryModel(model.name, model, false); + + delete(user); } @Test @@ -225,9 +235,9 @@ FileUtils.delete(ticgitFolder, FileUtils.RECURSIVE | FileUtils.RETRY); } - RepositoryModel model = GitBlit.self().getRepositoryModel("ticgit.git"); + RepositoryModel model = repositories().getRepositoryModel("ticgit.git"); model.accessRestriction = AccessRestrictionType.NONE; - GitBlit.self().updateRepositoryModel(model.name, model, false); + repositories().updateRepositoryModel(model.name, model, false); CloneCommand clone = Git.cloneRepository(); clone.setURI(MessageFormat.format("{0}/ticgit.git", url)); @@ -235,9 +245,9 @@ clone.setBare(false); clone.setCloneAllBranches(true); clone.setCredentialsProvider(new UsernamePasswordCredentialsProvider(account, password)); - GitBlitSuite.close(clone.call()); + GitBlitSuite.close(clone.call()); assertTrue(true); - + Git git = Git.open(ticgitFolder); File file = new File(ticgitFolder, "TODO"); OutputStreamWriter os = new OutputStreamWriter(new FileOutputStream(file, true), Constants.CHARSET); @@ -261,7 +271,7 @@ if (jgitFolder.exists()) { FileUtils.delete(jgitFolder, FileUtils.RECURSIVE | FileUtils.RETRY); } - + CloneCommand clone = Git.cloneRepository(); clone.setURI(MessageFormat.format("{0}/test/jgit.git", url)); clone.setDirectory(jgitFolder); @@ -287,14 +297,14 @@ } } } - + @Test public void testPushToFrozenRepo() throws Exception { GitBlitSuite.close(jgitFolder); if (jgitFolder.exists()) { FileUtils.delete(jgitFolder, FileUtils.RECURSIVE | FileUtils.RETRY); } - + CloneCommand clone = Git.cloneRepository(); clone.setURI(MessageFormat.format("{0}/test/jgit.git", url)); clone.setDirectory(jgitFolder); @@ -303,11 +313,11 @@ clone.setCredentialsProvider(new UsernamePasswordCredentialsProvider(account, password)); GitBlitSuite.close(clone.call()); assertTrue(true); - + // freeze repo - RepositoryModel model = GitBlit.self().getRepositoryModel("test/jgit.git"); + RepositoryModel model = repositories().getRepositoryModel("test/jgit.git"); model.isFrozen = true; - GitBlit.self().updateRepositoryModel(model.name, model, false); + repositories().updateRepositoryModel(model.name, model, false); Git git = Git.open(jgitFolder); File file = new File(jgitFolder, "TODO"); @@ -317,17 +327,17 @@ w.close(); git.add().addFilepattern(file.getName()).call(); git.commit().setMessage("test commit").call(); - + Iterable<PushResult> results = git.push().setPushAll().setCredentialsProvider(new UsernamePasswordCredentialsProvider(account, password)).call(); for (PushResult result : results) { for (RemoteRefUpdate update : result.getRemoteUpdates()) { assertEquals(Status.REJECTED_OTHER_REASON, update.getStatus()); } } - + // unfreeze repo model.isFrozen = false; - GitBlit.self().updateRepositoryModel(model.name, model, false); + repositories().updateRepositoryModel(model.name, model, false); results = git.push().setPushAll().setCredentialsProvider(new UsernamePasswordCredentialsProvider(account, password)).call(); GitBlitSuite.close(git); @@ -337,7 +347,7 @@ } } } - + @Test public void testPushToNonBareRepository() throws Exception { CloneCommand clone = Git.cloneRepository(); @@ -370,35 +380,23 @@ public void testCommitterVerification() throws Exception { UserModel user = getUser(); - // account only uses account name to verify - testCommitterVerification(user, user.username, null, true); - // committer email address is ignored because account does not specify email - testCommitterVerification(user, user.username, "something", true); - // completely different committer testCommitterVerification(user, "joe", null, false); + testCommitterVerification(user, "joe", user.emailAddress, false); + testCommitterVerification(user, user.username, null, false); + testCommitterVerification(user, user.username, user.emailAddress, true); - // test display name verification user.displayName = "James Moger"; - testCommitterVerification(user, user.displayName, null, true); - testCommitterVerification(user, user.displayName, "something", true); - testCommitterVerification(user, "joe", null, false); - - // test email address verification - user.emailAddress = "something"; testCommitterVerification(user, user.displayName, null, false); - testCommitterVerification(user, user.displayName, "somethingelse", false); + testCommitterVerification(user, user.displayName, "something", false); testCommitterVerification(user, user.displayName, user.emailAddress, true); - - // use same email address but with different committer - testCommitterVerification(user, "joe", "somethingelse", false); } - + private void testCommitterVerification(UserModel user, String displayName, String emailAddress, boolean expectedSuccess) throws Exception { - + delete(user); - + CredentialsProvider cp = new UsernamePasswordCredentialsProvider(user.username, user.password); - + // fork from original to a temporary bare repo File verification = new File(GitBlitSuite.REPOSITORIES, "refchecks/verify-committer.git"); if (verification.exists()) { @@ -411,18 +409,18 @@ clone.setCloneAllBranches(true); clone.setCredentialsProvider(cp); GitBlitSuite.close(clone.call()); - + // require push permissions and committer verification - RepositoryModel model = GitBlit.self().getRepositoryModel("refchecks/verify-committer.git"); + RepositoryModel model = repositories().getRepositoryModel("refchecks/verify-committer.git"); model.authorizationControl = AuthorizationControl.NAMED; model.accessRestriction = AccessRestrictionType.PUSH; model.verifyCommitter = true; - + // grant user push permission user.setRepositoryPermission(model.name, AccessPermission.PUSH); - - GitBlit.self().updateUserModel(user.username, user, true); - GitBlit.self().updateRepositoryModel(model.name, model, false); + + gitblit().addUser(user); + repositories().updateRepositoryModel(model.name, model, false); // clone temp bare repo to working copy File local = new File(GitBlitSuite.REPOSITORIES, "refchecks/verify-wc"); @@ -436,14 +434,14 @@ clone.setCloneAllBranches(true); clone.setCredentialsProvider(cp); GitBlitSuite.close(clone.call()); - + Git git = Git.open(local); - + // force an identity which may or may not match the account's identity git.getRepository().getConfig().setString("user", null, "name", displayName); git.getRepository().getConfig().setString("user", null, "email", emailAddress); git.getRepository().getConfig().save(); - + // commit a file and push it File file = new File(local, "PUSHCHK"); OutputStreamWriter os = new OutputStreamWriter(new FileOutputStream(file, true), Constants.CHARSET); @@ -453,7 +451,7 @@ git.add().addFilepattern(file.getName()).call(); git.commit().setMessage("push test").call(); Iterable<PushResult> results = git.push().setCredentialsProvider(cp).setRemote("origin").call(); - + for (PushResult result : results) { RemoteRefUpdate ref = result.getRemoteUpdate("refs/heads/master"); Status status = ref.getStatus(); @@ -463,27 +461,27 @@ assertTrue("Verification failed! User was able to push commit! " + status.name(), Status.REJECTED_OTHER_REASON.equals(status)); } } - + GitBlitSuite.close(git); // close serving repository GitBlitSuite.close(verification); } - + @Test public void testMergeCommitterVerification() throws Exception { - + testMergeCommitterVerification(false); - + testMergeCommitterVerification(true); } - + private void testMergeCommitterVerification(boolean expectedSuccess) throws Exception { UserModel user = getUser(); - + delete(user); - + CredentialsProvider cp = new UsernamePasswordCredentialsProvider(user.username, user.password); - + // fork from original to a temporary bare repo File verification = new File(GitBlitSuite.REPOSITORIES, "refchecks/verify-committer.git"); if (verification.exists()) { @@ -496,18 +494,18 @@ clone.setCloneAllBranches(true); clone.setCredentialsProvider(cp); GitBlitSuite.close(clone.call()); - + // require push permissions and committer verification - RepositoryModel model = GitBlit.self().getRepositoryModel("refchecks/verify-committer.git"); + RepositoryModel model = repositories().getRepositoryModel("refchecks/verify-committer.git"); model.authorizationControl = AuthorizationControl.NAMED; model.accessRestriction = AccessRestrictionType.PUSH; model.verifyCommitter = true; - + // grant user push permission user.setRepositoryPermission(model.name, AccessPermission.PUSH); - - GitBlit.self().updateUserModel(user.username, user, true); - GitBlit.self().updateRepositoryModel(model.name, model, false); + + gitblit().addUser(user); + repositories().updateRepositoryModel(model.name, model, false); // clone temp bare repo to working copy File local = new File(GitBlitSuite.REPOSITORIES, "refchecks/verify-wc"); @@ -521,17 +519,17 @@ clone.setCloneAllBranches(true); clone.setCredentialsProvider(cp); GitBlitSuite.close(clone.call()); - + Git git = Git.open(local); - + // checkout a mergetest branch git.checkout().setCreateBranch(true).setName("mergetest").call(); - + // change identity git.getRepository().getConfig().setString("user", null, "name", "mergetest"); git.getRepository().getConfig().setString("user", null, "email", "mergetest@merge.com"); git.getRepository().getConfig().save(); - + // commit a file File file = new File(local, "MERGECHK2"); OutputStreamWriter os = new OutputStreamWriter(new FileOutputStream(file, true), Constants.CHARSET); @@ -540,7 +538,7 @@ w.close(); git.add().addFilepattern(file.getName()).call(); RevCommit mergeTip = git.commit().setMessage(file.getName() + " test").call(); - + // return to master git.checkout().setName("master").call(); @@ -559,14 +557,14 @@ w.close(); git.add().addFilepattern(file.getName()).call(); git.commit().setMessage(file.getName() + " test").call(); - + // merge the tip of the mergetest branch into master with --no-ff MergeResult mergeResult = git.merge().setFastForward(FastForwardMode.NO_FF).include(mergeTip.getId()).call(); assertEquals(MergeResult.MergeStatus.MERGED, mergeResult.getMergeStatus()); - + // push the merged master to the origin Iterable<PushResult> results = git.push().setCredentialsProvider(cp).setRemote("origin").call(); - + for (PushResult result : results) { RemoteRefUpdate ref = result.getRemoteUpdate("refs/heads/master"); Status status = ref.getStatus(); @@ -576,7 +574,7 @@ assertTrue("Verification failed! User was able to push commit! " + status.name(), Status.REJECTED_OTHER_REASON.equals(status)); } } - + GitBlitSuite.close(git); // close serving repository GitBlitSuite.close(verification); @@ -601,31 +599,41 @@ public void testBlockBranchDeletion() throws Exception { testRefChange(AccessPermission.CREATE, Status.OK, Status.REJECTED_OTHER_REASON, null); } - + @Test public void testBlockBranchRewind() throws Exception { testRefChange(AccessPermission.DELETE, Status.OK, Status.OK, Status.REJECTED_OTHER_REASON); } @Test - public void testBranchRewind() throws Exception { + public void testBranchRewind() throws Exception { testRefChange(AccessPermission.REWIND, Status.OK, Status.OK, Status.OK); } private void testRefChange(AccessPermission permission, Status expectedCreate, Status expectedDelete, Status expectedRewind) throws Exception { + final String originName = "ticgit.git"; + final String forkName = "refchecks/ticgit.git"; + final String workingCopy = "refchecks/ticgit-wc"; + + + // lower access restriction on origin repository + RepositoryModel origin = repositories().getRepositoryModel(originName); + origin.accessRestriction = AccessRestrictionType.NONE; + repositories().updateRepositoryModel(origin.name, origin, false); + UserModel user = getUser(); delete(user); - + CredentialsProvider cp = new UsernamePasswordCredentialsProvider(user.username, user.password); - + // fork from original to a temporary bare repo - File refChecks = new File(GitBlitSuite.REPOSITORIES, "refchecks/ticgit.git"); + File refChecks = new File(GitBlitSuite.REPOSITORIES, forkName); if (refChecks.exists()) { FileUtils.delete(refChecks, FileUtils.RECURSIVE); } CloneCommand clone = Git.cloneRepository(); - clone.setURI(MessageFormat.format("{0}/ticgit.git", url)); + clone.setURI(url + "/" + originName); clone.setDirectory(refChecks); clone.setBare(true); clone.setCloneAllBranches(true); @@ -633,7 +641,7 @@ GitBlitSuite.close(clone.call()); // elevate repository to clone permission - RepositoryModel model = GitBlit.self().getRepositoryModel("refchecks/ticgit.git"); + RepositoryModel model = repositories().getRepositoryModel(forkName); switch (permission) { case VIEW: model.accessRestriction = AccessRestrictionType.CLONE; @@ -645,15 +653,15 @@ model.accessRestriction = AccessRestrictionType.PUSH; } model.authorizationControl = AuthorizationControl.NAMED; - + // grant user specified user.setRepositoryPermission(model.name, permission); - GitBlit.self().updateUserModel(user.username, user, true); - GitBlit.self().updateRepositoryModel(model.name, model, false); + gitblit().addUser(user); + repositories().updateRepositoryModel(model.name, model, false); // clone temp bare repo to working copy - File local = new File(GitBlitSuite.REPOSITORIES, "refchecks/ticgit-wc"); + File local = new File(GitBlitSuite.REPOSITORIES, workingCopy); if (local.exists()) { FileUtils.delete(local, FileUtils.RECURSIVE); } @@ -663,7 +671,7 @@ clone.setBare(false); clone.setCloneAllBranches(true); clone.setCredentialsProvider(cp); - + try { GitBlitSuite.close(clone.call()); } catch (GitAPIException e) { @@ -672,15 +680,15 @@ } else { // close serving repository GitBlitSuite.close(refChecks); - + // user does not have clone permission - assertTrue(e.getMessage(), e.getMessage().contains("not permitted")); + assertTrue(e.getMessage(), e.getMessage().contains("not permitted")); return; } } - + Git git = Git.open(local); - + // commit a file and push it File file = new File(local, "PUSHCHK"); OutputStreamWriter os = new OutputStreamWriter(new FileOutputStream(file, true), Constants.CHARSET); @@ -698,14 +706,14 @@ } else { // close serving repository GitBlitSuite.close(refChecks); - + // user does not have push permission assertTrue(e.getMessage(), e.getMessage().contains("not permitted")); GitBlitSuite.close(git); return; } } - + for (PushResult result : results) { RemoteRefUpdate ref = result.getRemoteUpdate("refs/heads/master"); Status status = ref.getStatus(); @@ -721,8 +729,8 @@ return; } } - - // create a local branch and push the new branch back to the origin + + // create a local branch and push the new branch back to the origin git.branchCreate().setName("protectme").call(); RefSpec refSpec = new RefSpec("refs/heads/protectme:refs/heads/protectme"); results = git.push().setCredentialsProvider(cp).setRefSpecs(refSpec).setRemote("origin").call(); @@ -741,10 +749,10 @@ return; } } - + // delete the branch locally git.branchDelete().setBranchNames("protectme").call(); - + // push a delete ref command refSpec = new RefSpec(":refs/heads/protectme"); results = git.push().setCredentialsProvider(cp).setRefSpecs(refSpec).setRemote("origin").call(); @@ -763,10 +771,10 @@ return; } } - + // rewind master by two commits git.reset().setRef("HEAD~2").setMode(ResetType.HARD).call(); - + // commit a change on this detached HEAD file = new File(local, "REWINDCHK"); os = new OutputStreamWriter(new FileOutputStream(file, true), Constants.CHARSET); @@ -775,11 +783,11 @@ w.close(); git.add().addFilepattern(file.getName()).call(); RevCommit commit = git.commit().setMessage("rewind master and new commit").call(); - + // Reset master to our new commit now we our local branch tip is no longer // upstream of the remote branch tip. It is an alternate tip of the branch. JGitUtils.setBranchRef(git.getRepository(), "refs/heads/master", commit.getName()); - + // Try pushing our new tip to the origin. // This requires the server to "rewind" it's master branch and update it // to point to our alternate tip. This leaves the original master tip @@ -795,41 +803,41 @@ } } GitBlitSuite.close(git); - + // close serving repository GitBlitSuite.close(refChecks); delete(user); } - + @Test public void testCreateOnPush() throws Exception { testCreateOnPush(false, false); testCreateOnPush(true, false); testCreateOnPush(false, true); } - + private void testCreateOnPush(boolean canCreate, boolean canAdmin) throws Exception { UserModel user = new UserModel("sampleuser"); user.password = user.username; - + delete(user); - + user.canCreate = canCreate; user.canAdmin = canAdmin; - - GitBlit.self().updateUserModel(user.username, user, true); + + gitblit().addUser(user); CredentialsProvider cp = new UsernamePasswordCredentialsProvider(user.username, user.password); - + // fork from original to a temporary bare repo File tmpFolder = File.createTempFile("gitblit", "").getParentFile(); File createCheck = new File(tmpFolder, "ticgit.git"); if (createCheck.exists()) { FileUtils.delete(createCheck, FileUtils.RECURSIVE); } - + File personalRepo = new File(GitBlitSuite.REPOSITORIES, MessageFormat.format("~{0}/ticgit.git", user.username)); GitBlitSuite.close(personalRepo); if (personalRepo.exists()) { @@ -849,9 +857,9 @@ clone.setCloneAllBranches(true); clone.setCredentialsProvider(cp); Git git = clone.call(); - + GitBlitSuite.close(personalRepo); - + // add a personal repository remote and a project remote git.getRepository().getConfig().setString("remote", "user", "url", MessageFormat.format("{0}/~{1}/ticgit.git", url, user.username)); git.getRepository().getConfig().setString("remote", "project", "url", MessageFormat.format("{0}/project/ticgit.git", url)); @@ -868,18 +876,18 @@ } assertTrue("User canAdmin:" + user.canAdmin + " canCreate:" + user.canCreate, user.canAdmin || user.canCreate); - + // confirm default personal repository permissions - RepositoryModel model = GitBlit.self().getRepositoryModel(MessageFormat.format("~{0}/ticgit.git", user.username)); + RepositoryModel model = repositories().getRepositoryModel(MessageFormat.format("~{0}/ticgit.git", user.username)); assertEquals("Unexpected owner", user.username, ArrayUtils.toString(model.owners)); assertEquals("Unexpected authorization control", AuthorizationControl.NAMED, model.authorizationControl); assertEquals("Unexpected access restriction", AccessRestrictionType.VIEW, model.accessRestriction); - + } catch (GitAPIException e) { assertTrue(e.getMessage(), e.getMessage().contains("git-receive-pack not found")); assertFalse("User canAdmin:" + user.canAdmin + " canCreate:" + user.canCreate, user.canAdmin || user.canCreate); } - + // push to non-existent project repository try { Iterable<PushResult> results = git.push().setRemote("project").setPushAll().setCredentialsProvider(cp).call(); @@ -890,14 +898,14 @@ Status status = ref.getStatus(); assertTrue("User failed to create repository?! " + status.name(), Status.OK.equals(status)); } - + assertTrue("User canAdmin:" + user.canAdmin, user.canAdmin); - + // confirm default project repository permissions - RepositoryModel model = GitBlit.self().getRepositoryModel("project/ticgit.git"); + RepositoryModel model = repositories().getRepositoryModel("project/ticgit.git"); assertEquals("Unexpected owner", user.username, ArrayUtils.toString(model.owners)); - assertEquals("Unexpected authorization control", AuthorizationControl.fromName(GitBlit.getString(Keys.git.defaultAuthorizationControl, "NAMED")), model.authorizationControl); - assertEquals("Unexpected access restriction", AccessRestrictionType.fromName(GitBlit.getString(Keys.git.defaultAccessRestriction, "NONE")), model.accessRestriction); + assertEquals("Unexpected authorization control", AuthorizationControl.fromName(settings().getString(Keys.git.defaultAuthorizationControl, "NAMED")), model.authorizationControl); + assertEquals("Unexpected access restriction", AccessRestrictionType.fromName(settings().getString(Keys.git.defaultAccessRestriction, "NONE")), model.accessRestriction); } catch (GitAPIException e) { assertTrue(e.getMessage(), e.getMessage().contains("git-receive-pack not found")); @@ -907,7 +915,7 @@ GitBlitSuite.close(git); delete(user); } - + @Test public void testPushLog() throws IOException { String name = "refchecks/ticgit.git"; -- Gitblit v1.9.1