PageRenderTime 32ms CodeModel.GetById 6ms RepoModel.GetById 0ms app.codeStats 0ms

/src/test/java/it/com/atlassian/jira/plugins/bitbucket/BitbucketRepositoriesTest.java

https://bitbucket.org/atlassian/jira-bitbucket-connector/
Java | 137 lines | 106 code | 24 blank | 7 comment | 0 complexity | 32177deffdf2fef808384ec231086465 MD5 | raw file
  1. package it.com.atlassian.jira.plugins.bitbucket;
  2. import com.atlassian.jira.plugins.bitbucket.pageobjects.component.BitBucketCommitEntry;
  3. import com.atlassian.jira.plugins.bitbucket.pageobjects.page.BitBucketConfigureRepositoriesPage;
  4. import org.apache.commons.httpclient.HttpClient;
  5. import org.apache.commons.httpclient.HttpMethod;
  6. import org.apache.commons.httpclient.UsernamePasswordCredentials;
  7. import org.apache.commons.httpclient.auth.AuthScope;
  8. import org.apache.commons.httpclient.methods.GetMethod;
  9. import org.junit.Test;
  10. import java.util.List;
  11. import static com.atlassian.jira.plugins.bitbucket.pageobjects.CommitMessageLinksMatcher.withMessageLinks;
  12. import static com.atlassian.jira.plugins.bitbucket.pageobjects.CommitMessageMatcher.withMessage;
  13. import static org.hamcrest.MatcherAssert.assertThat;
  14. import static org.hamcrest.Matchers.containsString;
  15. import static org.hamcrest.Matchers.equalTo;
  16. import static org.hamcrest.Matchers.hasItem;
  17. import static org.hamcrest.Matchers.not;
  18. /**
  19. * Test to verify behaviour when syncing bitbucket repository..
  20. */
  21. public class BitbucketRepositoriesTest extends BitBucketBaseTest
  22. {
  23. private static final String TEST_REPO_URL = "https://bitbucket.org/farmas/testrepo-qa";
  24. private static final String TEST_PRIVATE_REPO_URL = "https://bitbucket.org/jirabitbucketconnector/private-hg-repo";
  25. private static final String TEST_NOT_EXISTING_REPO_URL = "https://bitbucket.org/jirabitbucketconnector/repo-does-not-exist";
  26. @Override
  27. protected Class<BitBucketConfigureRepositoriesPage> getPageClass()
  28. {
  29. return BitBucketConfigureRepositoriesPage.class;
  30. }
  31. @Test
  32. public void addRepoAppearsOnList()
  33. {
  34. configureRepos.deleteAllRepositories();
  35. configureRepos.addPublicRepoToProjectSuccessfully("QA", TEST_REPO_URL);
  36. assertThat(configureRepos.getRepositories().size(), equalTo(1));
  37. }
  38. @Test
  39. public void addRepoCommitsAppearOnIssues()
  40. {
  41. ensureRepositoryPresent("QA", TEST_REPO_URL);
  42. assertThat(getCommitsForIssue("QA-2"),
  43. hasItem(withMessage("BB modified 1 file to QA-2 and QA-3 from TestRepo-QA")));
  44. assertThat(getCommitsForIssue("QA-3"),
  45. hasItem(withMessage("BB modified 1 file to QA-2 and QA-3 from TestRepo-QA")));
  46. }
  47. @Test
  48. public void addRepoThatDoesNotExist()
  49. {
  50. configureRepos.deleteAllRepositories();
  51. configureRepos.addRepoToProjectFailingStep1("QA", TEST_NOT_EXISTING_REPO_URL);
  52. String errorMessage = configureRepos.getErrorStatusMessage();
  53. assertThat(errorMessage, containsString("The repository url [" + TEST_NOT_EXISTING_REPO_URL + "] is incorrect or the repository is not responding."));
  54. configureRepos.addPublicRepoToProjectSuccessfully("QA", TEST_REPO_URL);
  55. }
  56. @Test
  57. public void addPrivateRepoAsPublic()
  58. {
  59. configureRepos.deleteAllRepositories();
  60. configureRepos.addPrivateRepoToProjectSuccessfully("QA", TEST_PRIVATE_REPO_URL);
  61. configureRepos.assertThatSyncMessage(containsString("Sync Finished"));
  62. }
  63. @Test
  64. public void addPrivateRepo()
  65. {
  66. configureRepos.deleteAllRepositories();
  67. configureRepos.addPrivateRepoToProjectSuccessfully("QA", TEST_PRIVATE_REPO_URL);
  68. configureRepos.assertThatSyncMessage(containsString("Sync Finished"));
  69. configureRepos.assertThatSyncMessage(not(containsString("Sync Failed")));
  70. }
  71. @Test
  72. public void testPostCommitHookAdded() throws Exception
  73. {
  74. String servicesConfig;
  75. String baseUrl = jira.getProductInstance().getBaseUrl();
  76. configureRepos.deleteAllRepositories();
  77. // add repository
  78. String repoId = configureRepos.addPublicRepoToProjectAndInstallService("QA",
  79. "https://bitbucket.org/jirabitbucketconnector/public-hg-repo", "jirabitbucketconnector",
  80. "jirabitbucketconnector");
  81. // check that it created postcommit hook
  82. String syncUrl = baseUrl + "/rest/bitbucket/1.0/repository/" + repoId + "/sync";
  83. String bitbucketServiceConfigUrl = "https://api.bitbucket.org/1.0/repositories/jirabitbucketconnector/public-hg-repo/services";
  84. servicesConfig = getBitbucketServices(bitbucketServiceConfigUrl, "jirabitbucketconnector",
  85. "jirabitbucketconnector");
  86. assertThat(servicesConfig, containsString(syncUrl));
  87. // delete repository
  88. configureRepos.deleteAllRepositories();
  89. // check that postcommit hook is removed
  90. servicesConfig = getBitbucketServices(bitbucketServiceConfigUrl, "jirabitbucketconnector",
  91. "jirabitbucketconnector");
  92. assertThat(servicesConfig, not(containsString(syncUrl)));
  93. }
  94. private String getBitbucketServices(String url, String username, String password) throws Exception
  95. {
  96. HttpClient httpClient = new HttpClient();
  97. HttpMethod method = new GetMethod(url);
  98. AuthScope authScope = new AuthScope(method.getURI().getHost(), AuthScope.ANY_PORT, null, AuthScope.ANY_SCHEME);
  99. httpClient.getParams().setAuthenticationPreemptive(true);
  100. httpClient.getState().setCredentials(authScope, new UsernamePasswordCredentials(username, password));
  101. httpClient.executeMethod(method);
  102. return method.getResponseBodyAsString();
  103. }
  104. @Test
  105. public void testIssueLinkerCommentFormatting()
  106. {
  107. configureRepos.deleteAllRepositories();
  108. configureRepos.addPublicRepoToProjectSuccessfully("QA", TEST_REPO_URL);
  109. assertThat(configureRepos.getRepositories().size(), equalTo(1));
  110. List<BitBucketCommitEntry> commitMessages = getCommitsForIssue("QA-2");
  111. assertThat(commitMessages, hasItem(withMessageLinks("QA-2", "QA-3")));
  112. }
  113. }