PageRenderTime 60ms CodeModel.GetById 21ms RepoModel.GetById 0ms app.codeStats 0ms

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

https://bitbucket.org/atlassian/jira-bitbucket-connector/
Java | 113 lines | 85 code | 19 blank | 9 comment | 0 complexity | 85f8f8490c71b4f5c9eab0bfcf5d80d9 MD5 | raw file
  1. package it.com.atlassian.jira.plugins.bitbucket;
  2. import static com.atlassian.jira.plugins.bitbucket.pageobjects.CommitMessageMatcher.withMessage;
  3. import static org.hamcrest.MatcherAssert.assertThat;
  4. import static org.hamcrest.Matchers.containsString;
  5. import static org.hamcrest.Matchers.equalTo;
  6. import static org.hamcrest.Matchers.hasItem;
  7. import static org.hamcrest.Matchers.not;
  8. import org.apache.commons.httpclient.HttpClient;
  9. import org.apache.commons.httpclient.HttpMethod;
  10. import org.apache.commons.httpclient.UsernamePasswordCredentials;
  11. import org.apache.commons.httpclient.auth.AuthScope;
  12. import org.apache.commons.httpclient.methods.GetMethod;
  13. import org.junit.Test;
  14. /**
  15. * Test to verify behaviour when syncing public bitbucket repos.
  16. */
  17. public class PublicRepositoriesTest extends BitBucketBaseTest
  18. {
  19. private static final String TEST_REPO_URL = "https://bitbucket.org/farmas/testrepo-qa";
  20. private static final String TEST_PRIVATE_REPO_URL = "https://bitbucket.org/farmas/privatetestrepo-qa-tst";
  21. @Test
  22. public void addRepoAppearsOnList()
  23. {
  24. configureRepos.deleteAllRepositories();
  25. configureRepos.addPublicRepoToProject("QA", TEST_REPO_URL);
  26. assertThat(configureRepos.getRepositories().size(), equalTo(1));
  27. }
  28. @Test
  29. public void addRepoCommitsAppearOnIssues()
  30. {
  31. ensureRepositoryPresent("QA", TEST_REPO_URL);
  32. assertThat(getCommitsForIssue("QA-2"),
  33. hasItem(withMessage("BB modified 1 file to QA-2 and QA-3 from TestRepo-QA")));
  34. assertThat(getCommitsForIssue("QA-3"),
  35. hasItem(withMessage("BB modified 1 file to QA-2 and QA-3 from TestRepo-QA")));
  36. }
  37. @Test
  38. public void addRepoThatDoesNotExist()
  39. {
  40. configureRepos.deleteAllRepositories();
  41. configureRepos.addPublicRepoToProject("QA", "https://bitbucket.org/farmas/repo-does-not-exist");
  42. String syncStatusMessage = configureRepos.getSyncStatusMessage();
  43. assertThat(syncStatusMessage, containsString("Sync Failed"));
  44. }
  45. @Test
  46. public void addPrivateRepoAsPublic()
  47. {
  48. configureRepos.deleteAllRepositories();
  49. configureRepos.addPublicRepoToProject("QA", TEST_PRIVATE_REPO_URL);
  50. String syncStatusMessage = configureRepos.getSyncStatusMessage();
  51. assertThat(syncStatusMessage, containsString("Sync Failed"));
  52. }
  53. public void testGitRepository()
  54. {
  55. // TODO
  56. }
  57. @Test
  58. public void testPostCommitHookAdded() throws Exception
  59. {
  60. String servicesConfig;
  61. String baseUrl = jira.getProductInstance().getBaseUrl();
  62. configureRepos.deleteAllRepositories();
  63. // add repository
  64. String repoId = configureRepos.addPublicRepoToProjectAndInstallService("QA",
  65. "https://bitbucket.org/jirabitbucketconnector/public-hg-repo", "jirabitbucketconnector",
  66. "jirabitbucketconnector");
  67. // check that it created postcommit hook
  68. String syncUrl = baseUrl + "/rest/bitbucket/1.0/repository/" + repoId + "/sync";
  69. String bitbucketServiceConfigUrl = "https://api.bitbucket.org/1.0/repositories/jirabitbucketconnector/public-hg-repo/services";
  70. servicesConfig = getBitbucketServices(bitbucketServiceConfigUrl, "jirabitbucketconnector",
  71. "jirabitbucketconnector");
  72. assertThat(servicesConfig, containsString(syncUrl));
  73. // delete repository
  74. configureRepos.deleteAllRepositories();
  75. // check that postcommit hook is removed
  76. servicesConfig = getBitbucketServices(bitbucketServiceConfigUrl, "jirabitbucketconnector",
  77. "jirabitbucketconnector");
  78. assertThat(servicesConfig, not(containsString(syncUrl)));
  79. }
  80. private String getBitbucketServices(String url, String username, String password) throws Exception
  81. {
  82. HttpClient httpClient = new HttpClient();
  83. HttpMethod method = new GetMethod(url);
  84. AuthScope authScope = new AuthScope(method.getURI().getHost(), AuthScope.ANY_PORT, null, AuthScope.ANY_SCHEME);
  85. httpClient.getParams().setAuthenticationPreemptive(true);
  86. httpClient.getState().setCredentials(authScope, new UsernamePasswordCredentials(username, password));
  87. httpClient.executeMethod(method);
  88. return method.getResponseBodyAsString();
  89. }
  90. public void testSyncFromPostCommit()
  91. {
  92. // TODO
  93. }
  94. }