PageRenderTime 61ms CodeModel.GetById 34ms RepoModel.GetById 1ms app.codeStats 0ms

/jira-project/jira-functional-tests/jira-func-tests/src/main/java/com/atlassian/jira/webtests/ztests/upgrade/tasks/TestUpgradeTasks752To754.java

https://bitbucket.org/ahmed_bilal_360factors/jira7-core
Java | 191 lines | 155 code | 28 blank | 8 comment | 29 complexity | 0eaafa3fcf26cb6229ba990dcb4688b8 MD5 | raw file
Possible License(s): Apache-2.0
  1. package com.atlassian.jira.webtests.ztests.upgrade.tasks;
  2. import com.atlassian.jira.functest.framework.Administration;
  3. import com.atlassian.jira.functest.framework.BaseJiraFuncTest;
  4. import com.atlassian.jira.functest.framework.LoginAs;
  5. import com.atlassian.jira.functest.framework.suite.Category;
  6. import com.atlassian.jira.functest.framework.suite.WebTest;
  7. import com.google.common.base.Function;
  8. import com.google.common.collect.ImmutableList;
  9. import com.google.common.collect.Iterables;
  10. import org.apache.commons.lang.StringUtils;
  11. import org.apache.commons.lang.builder.ToStringBuilder;
  12. import org.apache.commons.lang.builder.ToStringStyle;
  13. import org.junit.Assert;
  14. import org.junit.Test;
  15. import javax.inject.Inject;
  16. import java.util.ArrayList;
  17. import java.util.List;
  18. import java.util.ListIterator;
  19. import static com.atlassian.jira.functest.framework.FunctTestConstants.ADMIN_USERNAME;
  20. import static com.atlassian.jira.testkit.client.DashboardControl.Dashboard;
  21. import static com.atlassian.jira.testkit.client.SearchRequestControl.SearchBean;
  22. /**
  23. * Uprgade Tasks 752, 753 and 754 actually work together to help fix JRA-26441. In 5.0.x
  24. * these upgrade tasks where called 727, 728 and 729.
  25. *
  26. * @since v5.0.3
  27. */
  28. @WebTest({Category.FUNC_TEST, Category.UPGRADE_TASKS})
  29. @LoginAs(user = ADMIN_USERNAME)
  30. public class TestUpgradeTasks752To754 extends BaseJiraFuncTest {
  31. @Inject
  32. private Administration administration;
  33. private static List<SharedEntity> createdSharedBeans() {
  34. List<SharedEntity> searchBeans = new ArrayList<SharedEntity>();
  35. searchBeans.add(new SharedEntity("b", "testuser", 1L, true));
  36. searchBeans.add(new SharedEntity("bb", "testuser", 1L, true));
  37. searchBeans.add(new SharedEntity("c", "testuser", 1L, true));
  38. searchBeans.add(new SharedEntity("cc", "testuser", 1L, true));
  39. searchBeans.add(new SharedEntity("d", "testuser", 0, false));
  40. searchBeans.add(new SharedEntity("dd", "testuser", 0, false));
  41. searchBeans.add(new SharedEntity("e", "testuser", 1, true));
  42. searchBeans.add(new SharedEntity("ee", "testuser", 1, true));
  43. searchBeans.add(new SharedEntity("f", "testuser", 0, false));
  44. searchBeans.add(new SharedEntity("ff", "testuser", 0, false));
  45. return searchBeans;
  46. }
  47. private static void assertSharedEntitiesEqual(List<? extends SharedEntity> expected, List<? extends SharedEntity> actual) {
  48. int pos = 0;
  49. ListIterator<? extends SharedEntity> actualIter = actual.listIterator();
  50. ListIterator<? extends SharedEntity> expectedIter = expected.listIterator();
  51. while (actualIter.hasNext() && expectedIter.hasNext()) {
  52. final SharedEntity actualEntity = actualIter.next();
  53. final SharedEntity expectedEntity = expectedIter.next();
  54. if (!StringUtils.equals(actualEntity.getName(), expectedEntity.getName())) {
  55. Assert.fail(String.format("[%d].name != [%1$d].name (%s != %s).", pos, expectedEntity.getName(), actualEntity.getName()));
  56. }
  57. if (actualEntity.isFavourite() != expectedEntity.isFavourite()) {
  58. Assert.fail(String.format("[%d].favourite != [%1$d].favourite (%s != %s).", pos, expectedEntity.isFavourite(), actualEntity.isFavourite()));
  59. }
  60. if (actualEntity.getFavouriteCount() != expectedEntity.getFavouriteCount()) {
  61. Assert.fail(String.format("[%d].favouriteCount != [%1$d].favouriteCount (%s != %s).", pos, expectedEntity.getFavouriteCount(), actualEntity.getFavouriteCount()));
  62. }
  63. if (!StringUtils.equals(actualEntity.getOwner(), expectedEntity.getOwner())) {
  64. Assert.fail(String.format("[%d].owner != [%1$d].owner (%s != %s).", pos, expectedEntity.getOwner(), actualEntity.getOwner()));
  65. }
  66. pos++;
  67. }
  68. if (actualIter.hasNext()) {
  69. Assert.fail(String.format("Got extra dashboards: [%s]", actual.subList(pos, actual.size())));
  70. } else if (expectedIter.hasNext()) {
  71. Assert.fail(String.format("Didn't get dashboards: [%s]", expected.subList(pos, expected.size())));
  72. }
  73. }
  74. @Test
  75. public void testUpgrade() {
  76. administration.restoreDataWithBuildNumber("TestUpgradeTasks752To754.xml", 721);
  77. checkDashboardsUpgradedCorrectly();
  78. checkSearchRequestsUpgradedCorrectly();
  79. }
  80. //TestUser used to own {a,b,c,d,e,f}. We need to ensure they are owned by testuser.
  81. private void checkDashboardsUpgradedCorrectly() {
  82. assertSharedEntitiesEqual(createdSharedBeans(), getServerDashboards());
  83. }
  84. //TestUser used to own {a,b,c,d,e,f}. We need to ensure they are owned by testuser.
  85. private void checkSearchRequestsUpgradedCorrectly() {
  86. assertSharedEntitiesEqual(createdSharedBeans(), getServerFilters());
  87. }
  88. private ImmutableList<SharedEntity> getServerDashboards() {
  89. return ImmutableList.copyOf(Iterables.transform(backdoor.dashboard().getOwnedDashboard("testuser"), new Function<Dashboard, SharedEntity>() {
  90. @Override
  91. public SharedEntity apply(Dashboard input) {
  92. return new SharedEntity(input.getName(), input.getOwner(), input.getFavouriteCount(), input.isFavourite());
  93. }
  94. }));
  95. }
  96. private ImmutableList<SharedEntity> getServerFilters() {
  97. return ImmutableList.copyOf(Iterables.transform(backdoor.searchRequests().getOwnedFilters("testuser"), new Function<SearchBean, SharedEntity>() {
  98. @Override
  99. public SharedEntity apply(SearchBean input) {
  100. return new SharedEntity(input.getSearchName(), input.getUsername(), input.getFavouriteCount(), input.isFavourite());
  101. }
  102. }));
  103. }
  104. private static class SharedEntity {
  105. private final String name;
  106. private final String owner;
  107. private final long favouriteCount;
  108. private final boolean favourite;
  109. private SharedEntity(String name, String owner, long favouriteCount, boolean favourite) {
  110. this.name = name;
  111. this.owner = owner;
  112. this.favouriteCount = favouriteCount;
  113. this.favourite = favourite;
  114. }
  115. public String getName() {
  116. return name;
  117. }
  118. public String getOwner() {
  119. return owner;
  120. }
  121. public long getFavouriteCount() {
  122. return favouriteCount;
  123. }
  124. public boolean isFavourite() {
  125. return favourite;
  126. }
  127. @Override
  128. public boolean equals(Object o) {
  129. if (this == o) {
  130. return true;
  131. }
  132. if (o == null || getClass() != o.getClass()) {
  133. return false;
  134. }
  135. SharedEntity that = (SharedEntity) o;
  136. if (favourite != that.favourite) {
  137. return false;
  138. }
  139. if (favouriteCount != that.favouriteCount) {
  140. return false;
  141. }
  142. if (name != null ? !name.equals(that.name) : that.name != null) {
  143. return false;
  144. }
  145. if (owner != null ? !owner.equals(that.owner) : that.owner != null) {
  146. return false;
  147. }
  148. return true;
  149. }
  150. @Override
  151. public int hashCode() {
  152. int result = name != null ? name.hashCode() : 0;
  153. result = 31 * result + (owner != null ? owner.hashCode() : 0);
  154. result = 31 * result + (int) (favouriteCount ^ (favouriteCount >>> 32));
  155. result = 31 * result + (favourite ? 1 : 0);
  156. return result;
  157. }
  158. @Override
  159. public String toString() {
  160. return ToStringBuilder.reflectionToString(this, ToStringStyle.SHORT_PREFIX_STYLE);
  161. }
  162. }
  163. }