PageRenderTime 44ms CodeModel.GetById 20ms RepoModel.GetById 0ms app.codeStats 0ms

/force-push-branch-protector/src/test/java/com/kostmo/stash/hooks/forcepush/ProtectRefHookTest.java

https://bitbucket.org/kostmo/stash-plugins
Java | 182 lines | 90 code | 24 blank | 68 comment | 2 complexity | 10fffdaf7d74a1af0c0053a4708aea08 MD5 | raw file
  1. package com.kostmo.stash.hooks.forcepush;
  2. import java.io.IOException;
  3. import java.util.Arrays;
  4. import java.util.List;
  5. import org.eclipse.jgit.api.Git;
  6. import org.eclipse.jgit.api.errors.GitAPIException;
  7. import org.junit.Before;
  8. import org.junit.Test;
  9. import org.junit.runner.RunWith;
  10. import org.mockito.Mock;
  11. import static org.mockito.Mockito.*;
  12. import org.mockito.runners.MockitoJUnitRunner;
  13. import static org.hamcrest.CoreMatchers.is;
  14. import static org.junit.Assert.*;
  15. import com.atlassian.stash.history.HistoryService;
  16. import com.atlassian.stash.hook.HookResponse;
  17. import com.atlassian.stash.hook.repository.RepositoryHookContext;
  18. import com.atlassian.stash.repository.RefChange;
  19. import com.atlassian.stash.repository.RefChangeType;
  20. import com.atlassian.stash.repository.Repository;
  21. import com.atlassian.stash.server.ApplicationPropertiesService;
  22. import com.atlassian.stash.setting.Settings;
  23. import com.atlassian.stash.util.Page;
  24. import com.atlassian.stash.util.PageRequestImpl;
  25. import com.kostmo.stash.hooks.forcepush.ProtectRefHook;
  26. @RunWith(MockitoJUnitRunner.class)
  27. public class ProtectRefHookTest {
  28. @Mock
  29. private HistoryService historyService;
  30. @Mock
  31. private ApplicationPropertiesService applicationPropertiesService;
  32. private ProtectRefHook protectRefHook;
  33. @Before
  34. public void setup() {
  35. protectRefHook = new ProtectRefHook(historyService, applicationPropertiesService);
  36. }
  37. // @Test
  38. // public void testIsRefCoveredByHookSettings() {
  39. //
  40. // assertThat(true, is(true));
  41. // }
  42. @Test
  43. public void testIsRefCoveredByHookSettings() {
  44. Settings mockedSettings = mock(Settings.class);
  45. when(mockedSettings.getString(eq("ref-ids-regex"))).thenReturn("refs/heads/master");
  46. RepositoryHookContext mockedRepositoryHookContext = mock(RepositoryHookContext.class);
  47. when(mockedRepositoryHookContext.getSettings()).thenReturn(mockedSettings);
  48. String refIdsRegexString = mockedRepositoryHookContext.getSettings().getString("ref-ids-regex");
  49. assertThat(protectRefHook.isRefCoveredByHookSettings(refIdsRegexString, "refs/heads/master"), is(true));
  50. assertThat(protectRefHook.isRefCoveredByHookSettings(refIdsRegexString, "refs/heads/develop"), is(false));
  51. }
  52. @Test
  53. public void testIsRefCoveredByHookSettingsEmptySettings() {
  54. Settings mockedSettings = mock(Settings.class);
  55. when(mockedSettings.getString(eq("ref-ids-regex"))).thenReturn("");
  56. RepositoryHookContext mockedRepositoryHookContext = mock(RepositoryHookContext.class);
  57. when(mockedRepositoryHookContext.getSettings()).thenReturn(mockedSettings);
  58. String refIdsRegexString = mockedRepositoryHookContext.getSettings().getString("ref-ids-regex");
  59. assertThat(protectRefHook.isRefCoveredByHookSettings(refIdsRegexString, "refs/heads/master"), is(true));
  60. assertThat(protectRefHook.isRefCoveredByHookSettings(refIdsRegexString, "refs/heads/develop"), is(true));
  61. }
  62. @Test
  63. public void testIsRefCoveredByHookSettingsNullSettings() {
  64. Settings mockedSettings = mock(Settings.class);
  65. when(mockedSettings.getString(eq("ref-ids-regex"))).thenReturn(null);
  66. RepositoryHookContext mockedRepositoryHookContext = mock(RepositoryHookContext.class);
  67. when(mockedRepositoryHookContext.getSettings()).thenReturn(mockedSettings);
  68. String refIdsRegexString = mockedRepositoryHookContext.getSettings().getString("ref-ids-regex");
  69. assertThat(protectRefHook.isRefCoveredByHookSettings(refIdsRegexString, "refs/heads/master"), is(true));
  70. assertThat(protectRefHook.isRefCoveredByHookSettings(refIdsRegexString, "refs/heads/develop"), is(true));
  71. }
  72. @Test
  73. public void testIsForcePushIsForced() {
  74. Page mockedPage = mock(Page.class);
  75. when(mockedPage.getSize()).thenReturn(1);
  76. when(historyService.getChangesetsBetween(any(Repository.class), anyString(), anyString(), any(PageRequestImpl.class))).thenReturn(mockedPage);
  77. org.eclipse.jgit.lib.Repository testRepository = null;
  78. try {
  79. testRepository = RepoBuilder.getFakeRepo("force_push");
  80. RefChange mockedRefChange = mock(RefChange.class);
  81. when(mockedRefChange.getType()).thenReturn(RefChangeType.UPDATE);
  82. when(mockedRefChange.getFromHash()).thenReturn(testRepository.getRef("master").getObjectId().getName());
  83. when(mockedRefChange.getToHash()).thenReturn(testRepository.getRef("batman_branch").getObjectId().getName());
  84. assertThat(protectRefHook.isForcePush(testRepository, mockedRefChange), is(true));
  85. } catch (GitAPIException e1) {
  86. // TODO Auto-generated catch block
  87. e1.printStackTrace();
  88. } catch (IOException e1) {
  89. // TODO Auto-generated catch block
  90. e1.printStackTrace();
  91. } finally {
  92. if (testRepository != null) {
  93. testRepository.close();
  94. }
  95. }
  96. }
  97. /*
  98. @Test
  99. public void testIsForcePushIsUpdate() {
  100. Page mockedPage = mock(Page.class);
  101. when(mockedPage.getSize()).thenReturn(0);
  102. when(historyService.getChangesetsBetween(any(Repository.class), anyString(), anyString(), any(PageRequestImpl.class))).thenReturn(mockedPage);
  103. Repository mockedRepository = mock(Repository.class);
  104. RefChange mockedRefChange = mock(RefChange.class);
  105. when(mockedRefChange.getType()).thenReturn(RefChangeType.UPDATE);
  106. when(mockedRefChange.getFromHash()).thenReturn("fromHash");
  107. when(mockedRefChange.getToHash()).thenReturn("toHash");
  108. assertThat(protectRefHook.isForcePush(mockedRepository, mockedRefChange), is(false));
  109. }
  110. @Test
  111. public void testIsForcePushIsDelete() {
  112. Page mockedPage = mock(Page.class);
  113. when(mockedPage.getSize()).thenReturn(1);
  114. when(historyService.getChangesetsBetween(any(Repository.class), anyString(), anyString(), any(PageRequestImpl.class))).thenReturn(mockedPage);
  115. Repository mockedRepository = mock(Repository.class);
  116. RefChange mockedRefChange = mock(RefChange.class);
  117. when(mockedRefChange.getType()).thenReturn(RefChangeType.DELETE);
  118. when(mockedRefChange.getFromHash()).thenReturn("fromHash");
  119. when(mockedRefChange.getToHash()).thenReturn("toHash");
  120. assertThat(protectRefHook.isForcePush(mockedRepository, mockedRefChange), is(false));
  121. }
  122. @Test
  123. public void testOnReceiveOk() {
  124. Settings mockedSettings = mock(Settings.class);
  125. when(mockedSettings.getString(eq("ref-ids-regex"))).thenReturn("refs/heads/master");
  126. RepositoryHookContext mockedRepositoryHookContext = mock(RepositoryHookContext.class);
  127. when(mockedRepositoryHookContext.getSettings()).thenReturn(mockedSettings);
  128. HookResponse mockedHookResponse = mock(HookResponse.class);
  129. Page mockedPage = mock(Page.class);
  130. when(mockedPage.getSize()).thenReturn(0);
  131. when(historyService.getChangesetsBetween(any(Repository.class), anyString(), anyString(), any(PageRequestImpl.class))).thenReturn(mockedPage);
  132. RefChange mockedRefChange = mock(RefChange.class);
  133. when(mockedRefChange.getType()).thenReturn(RefChangeType.UPDATE);
  134. when(mockedRefChange.getFromHash()).thenReturn("fromHash");
  135. when(mockedRefChange.getToHash()).thenReturn("toHash");
  136. when(mockedRefChange.getRefId()).thenReturn("refs/heads/master");
  137. List<RefChange> mockedRefChangeList = Arrays.asList(mockedRefChange);
  138. assertThat(protectRefHook.onReceive(mockedRepositoryHookContext, mockedRefChangeList, mockedHookResponse), is(true));
  139. verifyZeroInteractions(mockedHookResponse);
  140. }
  141. */
  142. }