PushCertificateChecker: Convert to a builder pattern
Change-Id: Ic32ad26ea89b5cbe9c0c4bfa33ace23d09a35750
This commit is contained in:
		| @@ -26,8 +26,7 @@ import java.io.IOException; | |||||||
|  |  | ||||||
| public class GerritPushCertificateChecker extends PushCertificateChecker { | public class GerritPushCertificateChecker extends PushCertificateChecker { | ||||||
|   public interface Factory { |   public interface Factory { | ||||||
|     GerritPushCertificateChecker create(IdentifiedUser expectedUser, |     GerritPushCertificateChecker create(IdentifiedUser expectedUser); | ||||||
|         boolean checkNonce); |  | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   private final GitRepositoryManager repoManager; |   private final GitRepositoryManager repoManager; | ||||||
| @@ -38,9 +37,8 @@ public class GerritPushCertificateChecker extends PushCertificateChecker { | |||||||
|       GerritPublicKeyChecker.Factory keyCheckerFactory, |       GerritPublicKeyChecker.Factory keyCheckerFactory, | ||||||
|       GitRepositoryManager repoManager, |       GitRepositoryManager repoManager, | ||||||
|       AllUsersName allUsers, |       AllUsersName allUsers, | ||||||
|       @Assisted IdentifiedUser expectedUser, |       @Assisted IdentifiedUser expectedUser) { | ||||||
|       @Assisted boolean checkNonce) { |     super(keyCheckerFactory.create().setExpectedUser(expectedUser)); | ||||||
|     super(keyCheckerFactory.create().setExpectedUser(expectedUser), checkNonce); |  | ||||||
|     this.repoManager = repoManager; |     this.repoManager = repoManager; | ||||||
|     this.allUsers = allUsers; |     this.allUsers = allUsers; | ||||||
|   } |   } | ||||||
|   | |||||||
| @@ -67,12 +67,18 @@ public abstract class PushCertificateChecker { | |||||||
|   } |   } | ||||||
|  |  | ||||||
|   private final PublicKeyChecker publicKeyChecker; |   private final PublicKeyChecker publicKeyChecker; | ||||||
|   private final boolean checkNonce; |  | ||||||
|  |  | ||||||
|   protected PushCertificateChecker(PublicKeyChecker publicKeyChecker, |   private boolean checkNonce; | ||||||
|       boolean checkNonce) { |  | ||||||
|  |   protected PushCertificateChecker(PublicKeyChecker publicKeyChecker) { | ||||||
|     this.publicKeyChecker = publicKeyChecker; |     this.publicKeyChecker = publicKeyChecker; | ||||||
|  |     checkNonce = true; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   /** Set whether to check the status of the nonce; defaults to true. */ | ||||||
|  |   public PushCertificateChecker setCheckNonce(boolean checkNonce) { | ||||||
|     this.checkNonce = checkNonce; |     this.checkNonce = checkNonce; | ||||||
|  |     return this; | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   /** |   /** | ||||||
|   | |||||||
| @@ -54,7 +54,8 @@ public class SignedPushPreReceiveHook implements PreReceiveHook { | |||||||
|     if (cert == null) { |     if (cert == null) { | ||||||
|       return; |       return; | ||||||
|     } |     } | ||||||
|     CheckResult result = checkerFactory.create(user.get(), true) |     CheckResult result = checkerFactory.create(user.get()) | ||||||
|  |         .setCheckNonce(true) | ||||||
|         .check(cert) |         .check(cert) | ||||||
|         .getCheckResult(); |         .getCheckResult(); | ||||||
|     if (!isAllowed(result, commands)) { |     if (!isAllowed(result, commands)) { | ||||||
|   | |||||||
| @@ -95,8 +95,10 @@ public class GpgApiAdapterImpl implements GpgApiAdapter { | |||||||
|       IdentifiedUser expectedUser) throws GpgException { |       IdentifiedUser expectedUser) throws GpgException { | ||||||
|     try { |     try { | ||||||
|       PushCertificate cert = PushCertificateParser.fromString(certStr); |       PushCertificate cert = PushCertificateParser.fromString(certStr); | ||||||
|       PushCertificateChecker.Result result = |       PushCertificateChecker.Result result = pushCertCheckerFactory | ||||||
|           pushCertCheckerFactory.create(expectedUser, false).check(cert); |           .create(expectedUser) | ||||||
|  |           .setCheckNonce(false) | ||||||
|  |           .check(cert); | ||||||
|       PushCertificateInfo info = new PushCertificateInfo(); |       PushCertificateInfo info = new PushCertificateInfo(); | ||||||
|       info.certificate = certStr; |       info.certificate = certStr; | ||||||
|       info.key = GpgKeys.toJson(result.getPublicKey(), result.getCheckResult()); |       info.key = GpgKeys.toJson(result.getPublicKey(), result.getCheckResult()); | ||||||
|   | |||||||
| @@ -72,7 +72,7 @@ public class PushCertificateCheckerTest { | |||||||
|   } |   } | ||||||
|  |  | ||||||
|   private PushCertificateChecker newChecker(boolean checkNonce) { |   private PushCertificateChecker newChecker(boolean checkNonce) { | ||||||
|     return new PushCertificateChecker(new PublicKeyChecker(), checkNonce) { |     return new PushCertificateChecker(new PublicKeyChecker()) { | ||||||
|       @Override |       @Override | ||||||
|       protected Repository getRepository() { |       protected Repository getRepository() { | ||||||
|         return tr.getRepository(); |         return tr.getRepository(); | ||||||
| @@ -82,7 +82,7 @@ public class PushCertificateCheckerTest { | |||||||
|       protected boolean shouldClose(Repository repo) { |       protected boolean shouldClose(Repository repo) { | ||||||
|         return false; |         return false; | ||||||
|       } |       } | ||||||
|     }; |     }.setCheckNonce(checkNonce); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   @Test |   @Test | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Dave Borowitz
					Dave Borowitz