From 73f1adb2e84b8b9cd4045bcdd7d9afa72d3875b5 Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Tue, 27 Nov 2012 17:13:03 -0500 Subject: [PATCH] Added short commit id column to log and history tables (issue 168) --- tests/com/gitblit/tests/GroovyScriptTest.java | 193 +++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 188 insertions(+), 5 deletions(-) diff --git a/tests/com/gitblit/tests/GroovyScriptTest.java b/tests/com/gitblit/tests/GroovyScriptTest.java index 3158736..47d20a4 100644 --- a/tests/com/gitblit/tests/GroovyScriptTest.java +++ b/tests/com/gitblit/tests/GroovyScriptTest.java @@ -20,7 +20,11 @@ import groovy.lang.Binding; import groovy.util.GroovyScriptEngine; +import java.io.BufferedWriter; import java.io.File; +import java.io.FileWriter; +import java.io.PrintWriter; +import java.io.StringWriter; import java.text.MessageFormat; import java.util.ArrayList; import java.util.Arrays; @@ -66,18 +70,47 @@ } @Test - public void testSendMail() throws Exception { + public void testSendHtmlMail() throws Exception { MockGitblit gitblit = new MockGitblit(); MockLogger logger = new MockLogger(); + MockClientLogger clientLogger = new MockClientLogger(); List<ReceiveCommand> commands = new ArrayList<ReceiveCommand>(); commands.add(new ReceiveCommand(ObjectId .fromString("c18877690322dfc6ae3e37bb7f7085a24e94e887"), ObjectId .fromString("3fa7c46d11b11d61f1cbadc6888be5d0eae21969"), "refs/heads/master")); + commands.add(new ReceiveCommand(ObjectId + .fromString("c18877690322dfc6ae3e37bb7f7085a24e94e887"), ObjectId + .fromString("3fa7c46d11b11d61f1cbadc6888be5d0eae21969"), "refs/heads/master2")); RepositoryModel repository = GitBlit.self().getRepositoryModel("helloworld.git"); repository.mailingLists.add("list@helloworld.git"); - test("sendmail.groovy", gitblit, logger, commands, repository); + test("sendmail-html.groovy", gitblit, logger, clientLogger, commands, repository); + assertEquals(1, logger.messages.size()); + assertEquals(1, gitblit.messages.size()); + MockMail m = gitblit.messages.get(0); + assertEquals(5, m.toAddresses.size()); + assertTrue(m.message.contains("BIT")); + assertTrue(m.message.contains("<html>")); + } + + @Test + public void testSendMail() throws Exception { + MockGitblit gitblit = new MockGitblit(); + MockLogger logger = new MockLogger(); + MockClientLogger clientLogger = new MockClientLogger(); + List<ReceiveCommand> commands = new ArrayList<ReceiveCommand>(); + commands.add(new ReceiveCommand(ObjectId + .fromString("c18877690322dfc6ae3e37bb7f7085a24e94e887"), ObjectId + .fromString("3fa7c46d11b11d61f1cbadc6888be5d0eae21969"), "refs/heads/master")); + commands.add(new ReceiveCommand(ObjectId + .fromString("c18877690322dfc6ae3e37bb7f7085a24e94e887"), ObjectId + .fromString("3fa7c46d11b11d61f1cbadc6888be5d0eae21969"), "refs/heads/master2")); + + RepositoryModel repository = GitBlit.self().getRepositoryModel("helloworld.git"); + repository.mailingLists.add("list@helloworld.git"); + + test("sendmail.groovy", gitblit, logger, clientLogger, commands, repository); assertEquals(1, logger.messages.size()); assertEquals(1, gitblit.messages.size()); MockMail m = gitblit.messages.get(0); @@ -86,9 +119,107 @@ } @Test + public void testProtectRefsCreateBranch() throws Exception { + MockGitblit gitblit = new MockGitblit(); + MockLogger logger = new MockLogger(); + MockClientLogger clientLogger = new MockClientLogger(); + List<ReceiveCommand> commands = new ArrayList<ReceiveCommand>(); + commands.add(new ReceiveCommand(ObjectId.zeroId(), ObjectId + .fromString("3fa7c46d11b11d61f1cbadc6888be5d0eae21969"), "refs/heads/master")); + + RepositoryModel repository = new RepositoryModel("ex@mple.git", "", "admin", new Date()); + + test("protect-refs.groovy", gitblit, logger, clientLogger, commands, repository); + } + + @Test + public void testProtectRefsCreateTag() throws Exception { + MockGitblit gitblit = new MockGitblit(); + MockLogger logger = new MockLogger(); + MockClientLogger clientLogger = new MockClientLogger(); + List<ReceiveCommand> commands = new ArrayList<ReceiveCommand>(); + commands.add(new ReceiveCommand(ObjectId.zeroId(), ObjectId + .fromString("3fa7c46d11b11d61f1cbadc6888be5d0eae21969"), "refs/tags/v1.0")); + + RepositoryModel repository = new RepositoryModel("ex@mple.git", "", "admin", new Date()); + + test("protect-refs.groovy", gitblit, logger, clientLogger, commands, repository); + assertEquals(0, logger.messages.size()); + } + + @Test + public void testProtectRefsFastForward() throws Exception { + MockGitblit gitblit = new MockGitblit(); + MockLogger logger = new MockLogger(); + MockClientLogger clientLogger = new MockClientLogger(); + List<ReceiveCommand> commands = new ArrayList<ReceiveCommand>(); + commands.add(new ReceiveCommand(ObjectId + .fromString("c18877690322dfc6ae3e37bb7f7085a24e94e887"), ObjectId + .fromString("3fa7c46d11b11d61f1cbadc6888be5d0eae21969"), "refs/heads/master")); + + RepositoryModel repository = new RepositoryModel("ex@mple.git", "", "admin", new Date()); + + test("protect-refs.groovy", gitblit, logger, clientLogger, commands, repository); + assertEquals(0, logger.messages.size()); + } + + @Test + public void testProtectRefsDeleteMasterBranch() throws Exception { + MockGitblit gitblit = new MockGitblit(); + MockLogger logger = new MockLogger(); + MockClientLogger clientLogger = new MockClientLogger(); + List<ReceiveCommand> commands = new ArrayList<ReceiveCommand>(); + ReceiveCommand command = new ReceiveCommand(ObjectId + .fromString("3fa7c46d11b11d61f1cbadc6888be5d0eae21969"), ObjectId.zeroId(), + "refs/heads/master"); + commands.add(command); + + RepositoryModel repository = new RepositoryModel("ex@mple.git", "", "admin", new Date()); + + test("protect-refs.groovy", gitblit, logger, clientLogger, commands, repository); + assertEquals(ReceiveCommand.Result.REJECTED_NODELETE, command.getResult()); + assertEquals(0, logger.messages.size()); + } + + @Test + public void testProtectRefsDeleteOtherBranch() throws Exception { + MockGitblit gitblit = new MockGitblit(); + MockLogger logger = new MockLogger(); + MockClientLogger clientLogger = new MockClientLogger(); + List<ReceiveCommand> commands = new ArrayList<ReceiveCommand>(); + commands.add(new ReceiveCommand(ObjectId + .fromString("3fa7c46d11b11d61f1cbadc6888be5d0eae21969"), ObjectId.zeroId(), + "refs/heads/other")); + + RepositoryModel repository = new RepositoryModel("ex@mple.git", "", "admin", new Date()); + + test("protect-refs.groovy", gitblit, logger, clientLogger, commands, repository); + assertEquals(0, logger.messages.size()); + } + + @Test + public void testProtectRefsDeleteTag() throws Exception { + MockGitblit gitblit = new MockGitblit(); + MockLogger logger = new MockLogger(); + MockClientLogger clientLogger = new MockClientLogger(); + List<ReceiveCommand> commands = new ArrayList<ReceiveCommand>(); + ReceiveCommand command = new ReceiveCommand(ObjectId + .fromString("3fa7c46d11b11d61f1cbadc6888be5d0eae21969"), ObjectId.zeroId(), + "refs/tags/v1.0"); + commands.add(command); + + RepositoryModel repository = new RepositoryModel("ex@mple.git", "", "admin", new Date()); + + test("protect-refs.groovy", gitblit, logger, clientLogger, commands, repository); + assertEquals(ReceiveCommand.Result.REJECTED_NODELETE, command.getResult()); + assertEquals(0, logger.messages.size()); + } + + @Test public void testBlockPush() throws Exception { MockGitblit gitblit = new MockGitblit(); MockLogger logger = new MockLogger(); + MockClientLogger clientLogger = new MockClientLogger(); List<ReceiveCommand> commands = new ArrayList<ReceiveCommand>(); commands.add(new ReceiveCommand(ObjectId .fromString("c18877690322dfc6ae3e37bb7f7085a24e94e887"), ObjectId @@ -97,14 +228,40 @@ RepositoryModel repository = new RepositoryModel("ex@mple.git", "", "admin", new Date()); try { - test("blockpush.groovy", gitblit, logger, commands, repository); + test("blockpush.groovy", gitblit, logger, clientLogger, commands, repository); assertTrue("blockpush should have failed!", false); } catch (GitBlitException e) { assertTrue(e.getMessage().contains("failed")); } } + + @Test + public void testClientLogging() throws Exception { + MockGitblit gitblit = new MockGitblit(); + MockLogger logger = new MockLogger(); + MockClientLogger clientLogger = new MockClientLogger(); + List<ReceiveCommand> commands = new ArrayList<ReceiveCommand>(); + commands.add(new ReceiveCommand(ObjectId + .fromString("c18877690322dfc6ae3e37bb7f7085a24e94e887"), ObjectId + .fromString("3fa7c46d11b11d61f1cbadc6888be5d0eae21969"), "refs/heads/master")); + + RepositoryModel repository = new RepositoryModel("ex@mple.git", "", "admin", new Date()); + + File groovyDir = GitBlit.getGroovyScriptsFolder(); + File tempScript = File.createTempFile("testClientLogging", "groovy", groovyDir); + tempScript.deleteOnExit(); + + BufferedWriter writer = new BufferedWriter(new FileWriter(tempScript)); + + writer.write("clientLogger.info('this is a test message')\n"); + writer.flush(); + writer.close(); - private void test(String script, MockGitblit gitblit, MockLogger logger, + test(tempScript.getName(), gitblit, logger, clientLogger, commands, repository); + assertTrue("Message Missing", clientLogger.messages.contains("this is a test message")); + } + + private void test(String script, MockGitblit gitblit, MockLogger logger, MockClientLogger clientLogger, List<ReceiveCommand> commands, RepositoryModel repository) throws Exception { UserModel user = new UserModel("mock"); @@ -121,6 +278,7 @@ binding.setVariable("commands", commands); binding.setVariable("url", gitblitUrl); binding.setVariable("logger", logger); + binding.setVariable("clientLogger", clientLogger); Object result = gse.run(script, binding); if (result instanceof Boolean) { @@ -163,6 +321,9 @@ public void sendMail(String subject, String message, Collection<String> toAddresses) { messages.add(new MockMail(subject, message, toAddresses)); } + public void sendHtmlMail(String subject, String message, Collection<String> toAddresses) { + messages.add(new MockMail(subject, message, toAddresses)); + } } class MockLogger { @@ -170,6 +331,28 @@ public void info(String message) { messages.add(message); + } + } + + class MockClientLogger { + List<String> messages = new ArrayList<String>(); + + public void info(String message) { + messages.add(message); + } + + public void error(String message) { + messages.add(message); + } + + public void error(String message, Throwable t) { + PrintWriter writer = new PrintWriter(new StringWriter()); + if (!StringUtils.isEmpty(message)) { + writer.append(message); + writer.append('\n'); + } + t.printStackTrace(writer); + messages.add(writer.toString()); } } @@ -190,4 +373,4 @@ + message; } } -} \ No newline at end of file +} -- Gitblit v1.9.1