You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

PermissionTemplateDaoTest.java 20KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411
  1. /*
  2. * SonarQube
  3. * Copyright (C) 2009-2020 SonarSource SA
  4. * mailto:info AT sonarsource DOT com
  5. *
  6. * This program is free software; you can redistribute it and/or
  7. * modify it under the terms of the GNU Lesser General Public
  8. * License as published by the Free Software Foundation; either
  9. * version 3 of the License, or (at your option) any later version.
  10. *
  11. * This program is distributed in the hope that it will be useful,
  12. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  14. * Lesser General Public License for more details.
  15. *
  16. * You should have received a copy of the GNU Lesser General Public License
  17. * along with this program; if not, write to the Free Software Foundation,
  18. * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  19. */
  20. package org.sonar.db.permission.template;
  21. import java.util.ArrayList;
  22. import java.util.Date;
  23. import java.util.List;
  24. import org.junit.Before;
  25. import org.junit.Rule;
  26. import org.junit.Test;
  27. import org.junit.rules.ExpectedException;
  28. import org.sonar.api.utils.System2;
  29. import org.sonar.api.web.UserRole;
  30. import org.sonar.core.util.UuidFactory;
  31. import org.sonar.core.util.UuidFactoryFast;
  32. import org.sonar.db.DbSession;
  33. import org.sonar.db.DbTester;
  34. import org.sonar.db.organization.OrganizationDto;
  35. import org.sonar.db.user.GroupDto;
  36. import org.sonar.db.user.UserDto;
  37. import static java.util.Arrays.asList;
  38. import static org.assertj.core.api.Assertions.assertThat;
  39. import static org.assertj.core.api.Assertions.tuple;
  40. import static org.mockito.Mockito.mock;
  41. import static org.mockito.Mockito.when;
  42. import static org.sonar.api.web.UserRole.ADMIN;
  43. import static org.sonar.api.web.UserRole.CODEVIEWER;
  44. import static org.sonar.api.web.UserRole.ISSUE_ADMIN;
  45. import static org.sonar.api.web.UserRole.USER;
  46. import static org.sonar.core.permission.GlobalPermissions.SCAN_EXECUTION;
  47. import static org.sonar.db.permission.template.PermissionTemplateTesting.newPermissionTemplateDto;
  48. import static org.sonar.db.user.GroupTesting.newGroupDto;
  49. public class PermissionTemplateDaoTest {
  50. private static final Date PAST = new Date(100_000_000_000L);
  51. private static final Date NOW = new Date(500_000_000_000L);
  52. @Rule
  53. public ExpectedException expectedException = ExpectedException.none();
  54. @Rule
  55. public DbTester db = DbTester.create();
  56. private System2 system2 = mock(System2.class);
  57. private DbSession dbSession = db.getSession();
  58. private PermissionTemplateDbTester templateDb = db.permissionTemplates();
  59. private UuidFactory uuidFactory = UuidFactoryFast.getInstance();
  60. private PermissionTemplateDao underTest = new PermissionTemplateDao(uuidFactory, system2);
  61. @Before
  62. public void setUp() {
  63. when(system2.now()).thenReturn(NOW.getTime());
  64. }
  65. @Test
  66. public void create_permission_template() {
  67. PermissionTemplateDto permissionTemplate = underTest.insert(db.getSession(), newPermissionTemplateDto()
  68. .setOrganizationUuid(db.getDefaultOrganization().getUuid())
  69. .setUuid("ABCD")
  70. .setName("my template")
  71. .setDescription("my description")
  72. .setKeyPattern("myregexp")
  73. .setCreatedAt(PAST)
  74. .setUpdatedAt(NOW));
  75. db.commit();
  76. assertThat(underTest.selectByUuid(db.getSession(), permissionTemplate.getUuid()))
  77. .extracting(PermissionTemplateDto::getUuid, PermissionTemplateDto::getName, PermissionTemplateDto::getDescription, PermissionTemplateDto::getKeyPattern,
  78. PermissionTemplateDto::getCreatedAt, PermissionTemplateDto::getUpdatedAt)
  79. .containsOnly("ABCD", "my template", "my description", "myregexp", PAST, NOW);
  80. }
  81. @Test
  82. public void select_permission_template_by_uuid() {
  83. templateDb.insertTemplate(newPermissionTemplateDto()
  84. .setUuid("ABCD")
  85. .setName("my template")
  86. .setDescription("my description")
  87. .setKeyPattern("myregexp"));
  88. assertThat(underTest.selectByUuid(db.getSession(), "ABCD"))
  89. .extracting(PermissionTemplateDto::getUuid, PermissionTemplateDto::getName, PermissionTemplateDto::getDescription, PermissionTemplateDto::getKeyPattern)
  90. .containsOnly("ABCD", "my template", "my description", "myregexp");
  91. }
  92. @Test
  93. public void selectAll_without_name_filtering() {
  94. templateDb.insertTemplate(newPermissionTemplateDto()
  95. .setUuid("tpl1")
  96. .setName("template1")
  97. .setDescription("description1"));
  98. templateDb.insertTemplate(newPermissionTemplateDto()
  99. .setUuid("tpl2")
  100. .setName("template2")
  101. .setDescription("description2"));
  102. templateDb.insertTemplate(newPermissionTemplateDto()
  103. .setUuid("tpl3")
  104. .setName("template3")
  105. .setDescription("description3"));
  106. assertThat(underTest.selectAll(dbSession, null))
  107. .extracting(PermissionTemplateDto::getUuid, PermissionTemplateDto::getName, PermissionTemplateDto::getDescription)
  108. .containsOnly(
  109. tuple("tpl1", "template1", "description1"),
  110. tuple("tpl2", "template2", "description2"),
  111. tuple("tpl3", "template3", "description3"));
  112. }
  113. @Test
  114. public void selectAll_with_name_filtering() {
  115. PermissionTemplateDto t1InOrg1 = templateDb.insertTemplate(newPermissionTemplateDto().setName("aBcDeF"));
  116. PermissionTemplateDto t2InOrg1 = templateDb.insertTemplate(newPermissionTemplateDto().setName("cdefgh"));
  117. PermissionTemplateDto t3InOrg1 = templateDb.insertTemplate(newPermissionTemplateDto().setName("hijkl"));
  118. assertThat(underTest.selectAll(dbSession, "def")).extracting(PermissionTemplateDto::getUuid).containsExactly(t1InOrg1.getUuid(), t2InOrg1.getUuid());
  119. assertThat(underTest.selectAll(dbSession, "missing")).isEmpty();
  120. }
  121. @Test
  122. public void should_update_permission_template() {
  123. PermissionTemplateDto permissionTemplateDto = templateDb.insertTemplate(newPermissionTemplateDto()
  124. .setUuid("ABCD")
  125. .setName("name")
  126. .setDescription("description")
  127. .setKeyPattern("regexp")
  128. .setCreatedAt(PAST)
  129. .setUpdatedAt(PAST));
  130. underTest.update(dbSession, permissionTemplateDto
  131. .setName("new_name")
  132. .setDescription("new_description")
  133. .setKeyPattern("new_regexp")
  134. .setUpdatedAt(NOW)
  135. // Invariant fields, should not be updated
  136. .setUuid("ABCD")
  137. .setCreatedAt(NOW));
  138. db.commit();
  139. assertThat(underTest.selectByUuid(db.getSession(), "ABCD"))
  140. .extracting(PermissionTemplateDto::getUuid, PermissionTemplateDto::getName, PermissionTemplateDto::getDescription, PermissionTemplateDto::getKeyPattern,
  141. PermissionTemplateDto::getCreatedAt, PermissionTemplateDto::getUpdatedAt)
  142. .containsOnly("ABCD", "new_name", "new_description", "new_regexp", PAST, NOW);
  143. }
  144. @Test
  145. public void delete_permission_template() {
  146. UserDto user1 = db.users().insertUser();
  147. UserDto user2 = db.users().insertUser();
  148. GroupDto group1 = db.users().insertGroup();
  149. GroupDto group2 = db.users().insertGroup();
  150. PermissionTemplateDto permissionTemplate1 = templateDb.insertTemplate();
  151. PermissionTemplateDto permissionTemplate2 = templateDb.insertTemplate();
  152. templateDb.addUserToTemplate(permissionTemplate1, user1, "user");
  153. templateDb.addUserToTemplate(permissionTemplate1, user2, "user");
  154. templateDb.addUserToTemplate(permissionTemplate1, user2, "admin");
  155. templateDb.addUserToTemplate(permissionTemplate2, user2, "admin");
  156. templateDb.addGroupToTemplate(permissionTemplate1, group1, "user");
  157. templateDb.addGroupToTemplate(permissionTemplate1, group2, "user");
  158. templateDb.addAnyoneToTemplate(permissionTemplate1, "admin");
  159. templateDb.addAnyoneToTemplate(permissionTemplate2, "admin");
  160. templateDb.addProjectCreatorToTemplate(permissionTemplate1.getUuid(), "user");
  161. templateDb.addProjectCreatorToTemplate(permissionTemplate2.getUuid(), "user");
  162. underTest.deleteByUuid(dbSession, permissionTemplate1.getUuid());
  163. dbSession.commit();
  164. assertThat(underTest.selectAll(db.getSession(), null))
  165. .extracting(PermissionTemplateDto::getUuid)
  166. .containsOnly(permissionTemplate2.getUuid());
  167. assertThat(db.getDbClient().permissionTemplateDao().selectUserPermissionsByTemplateId(db.getSession(), permissionTemplate1.getUuid())).isEmpty();
  168. assertThat(db.getDbClient().permissionTemplateDao().selectUserPermissionsByTemplateId(db.getSession(), permissionTemplate2.getUuid())).hasSize(1);
  169. assertThat(db.getDbClient().permissionTemplateDao().selectGroupPermissionsByTemplateUuid(db.getSession(), permissionTemplate1.getUuid())).isEmpty();
  170. assertThat(db.getDbClient().permissionTemplateDao().selectGroupPermissionsByTemplateUuid(db.getSession(), permissionTemplate2.getUuid())).hasSize(1);
  171. assertThat(db.getDbClient().permissionTemplateCharacteristicDao().selectByTemplateUuids(db.getSession(), asList(permissionTemplate1.getUuid(), permissionTemplate2.getUuid())))
  172. .extracting(PermissionTemplateCharacteristicDto::getTemplateUuid)
  173. .containsOnly(permissionTemplate2.getUuid());
  174. }
  175. @Test
  176. public void add_user_permission_to_template() {
  177. PermissionTemplateDto permissionTemplate = templateDb.insertTemplate();
  178. UserDto user = db.users().insertUser();
  179. underTest.insertUserPermission(dbSession, permissionTemplate.getUuid(), user.getUuid(), "user");
  180. assertThat(db.getDbClient().permissionTemplateDao().selectUserPermissionsByTemplateId(db.getSession(), permissionTemplate.getUuid()))
  181. .extracting(PermissionTemplateUserDto::getTemplateUuid, PermissionTemplateUserDto::getUserUuid, PermissionTemplateUserDto::getPermission,
  182. PermissionTemplateUserDto::getCreatedAt,
  183. PermissionTemplateUserDto::getUpdatedAt)
  184. .containsOnly(tuple(permissionTemplate.getUuid(), user.getUuid(), "user", NOW, NOW));
  185. }
  186. @Test
  187. public void remove_user_permission_from_template() {
  188. PermissionTemplateDto permissionTemplate = templateDb.insertTemplate();
  189. UserDto user1 = db.users().insertUser();
  190. UserDto user2 = db.users().insertUser();
  191. templateDb.addUserToTemplate(permissionTemplate, user1, "user");
  192. templateDb.addUserToTemplate(permissionTemplate, user1, "admin");
  193. templateDb.addUserToTemplate(permissionTemplate, user2, "user");
  194. underTest.deleteUserPermission(dbSession, permissionTemplate.getUuid(), user1.getUuid(), "user");
  195. assertThat(db.getDbClient().permissionTemplateDao().selectUserPermissionsByTemplateId(db.getSession(), permissionTemplate.getUuid()))
  196. .extracting(PermissionTemplateUserDto::getUserUuid, PermissionTemplateUserDto::getPermission)
  197. .containsOnly(tuple(user1.getUuid(), "admin"), tuple(user2.getUuid(), "user"));
  198. }
  199. @Test
  200. public void add_group_permission_to_template() {
  201. PermissionTemplateDto permissionTemplate = templateDb.insertTemplate();
  202. GroupDto group = db.users().insertGroup();
  203. underTest.insertGroupPermission(dbSession, permissionTemplate.getUuid(), group.getUuid(), "user");
  204. dbSession.commit();
  205. assertThat(db.getDbClient().permissionTemplateDao().selectGroupPermissionsByTemplateUuid(db.getSession(), permissionTemplate.getUuid()))
  206. .extracting(PermissionTemplateGroupDto::getTemplateUuid, PermissionTemplateGroupDto::getGroupUuid, PermissionTemplateGroupDto::getPermission,
  207. PermissionTemplateGroupDto::getCreatedAt,
  208. PermissionTemplateGroupDto::getUpdatedAt)
  209. .containsOnly(tuple(permissionTemplate.getUuid(), group.getUuid(), "user", NOW, NOW));
  210. }
  211. @Test
  212. public void remove_by_group() {
  213. PermissionTemplateDto permissionTemplate = templateDb.insertTemplate();
  214. GroupDto group1 = db.users().insertGroup();
  215. GroupDto group2 = db.users().insertGroup();
  216. templateDb.addGroupToTemplate(permissionTemplate, group1, "user");
  217. templateDb.addGroupToTemplate(permissionTemplate, group1, "admin");
  218. templateDb.addGroupToTemplate(permissionTemplate, group2, "user");
  219. underTest.deleteByGroup(db.getSession(), group1.getUuid());
  220. db.getSession().commit();
  221. assertThat(db.getDbClient().permissionTemplateDao().selectGroupPermissionsByTemplateUuid(db.getSession(), permissionTemplate.getUuid()))
  222. .extracting(PermissionTemplateGroupDto::getGroupUuid, PermissionTemplateGroupDto::getPermission)
  223. .containsOnly(tuple(group2.getUuid(), "user"));
  224. }
  225. @Test
  226. public void add_group_permission_to_anyone() {
  227. PermissionTemplateDto permissionTemplate = templateDb.insertTemplate();
  228. underTest.insertGroupPermission(dbSession, permissionTemplate.getUuid(), null, "user");
  229. dbSession.commit();
  230. assertThat(db.getDbClient().permissionTemplateDao().selectGroupPermissionsByTemplateUuid(db.getSession(), permissionTemplate.getUuid()))
  231. .extracting(PermissionTemplateGroupDto::getTemplateUuid, PermissionTemplateGroupDto::getGroupUuid, PermissionTemplateGroupDto::getGroupName,
  232. PermissionTemplateGroupDto::getPermission)
  233. .containsOnly(tuple(permissionTemplate.getUuid(), "Anyone", "Anyone", "user"));
  234. }
  235. @Test
  236. public void group_count_by_template_and_permission() {
  237. PermissionTemplateDto template1 = templateDb.insertTemplate();
  238. PermissionTemplateDto template2 = templateDb.insertTemplate();
  239. PermissionTemplateDto template3 = templateDb.insertTemplate();
  240. PermissionTemplateDto template4 = templateDb.insertTemplate();
  241. GroupDto group1 = db.users().insertGroup(newGroupDto());
  242. GroupDto group2 = db.users().insertGroup(newGroupDto());
  243. GroupDto group3 = db.users().insertGroup(newGroupDto());
  244. templateDb.addGroupToTemplate(template1.getUuid(), group1.getUuid(), CODEVIEWER);
  245. templateDb.addGroupToTemplate(template1.getUuid(), group2.getUuid(), CODEVIEWER);
  246. templateDb.addGroupToTemplate(template1.getUuid(), group3.getUuid(), CODEVIEWER);
  247. templateDb.addGroupToTemplate(template1.getUuid(), null, CODEVIEWER);
  248. templateDb.addGroupToTemplate(template1.getUuid(), group1.getUuid(), ADMIN);
  249. templateDb.addGroupToTemplate(template2.getUuid(), group1.getUuid(), ADMIN);
  250. templateDb.addGroupToTemplate(template4.getUuid(), group1.getUuid(), ISSUE_ADMIN);
  251. final List<CountByTemplateAndPermissionDto> result = new ArrayList<>();
  252. underTest.groupsCountByTemplateUuidAndPermission(dbSession, asList(template1.getUuid(), template2.getUuid(), template3.getUuid()),
  253. context -> result.add(context.getResultObject()));
  254. assertThat(result).extracting(CountByTemplateAndPermissionDto::getPermission, CountByTemplateAndPermissionDto::getTemplateUuid, CountByTemplateAndPermissionDto::getCount)
  255. .containsOnly(tuple(ADMIN, template1.getUuid(), 1), tuple(CODEVIEWER, template1.getUuid(), 4), tuple(ADMIN, template2.getUuid(), 1));
  256. }
  257. @Test
  258. public void user_count_by_template_and_permission() {
  259. PermissionTemplateDto template1 = templateDb.insertTemplate();
  260. PermissionTemplateDto template2 = templateDb.insertTemplate();
  261. PermissionTemplateDto template3 = templateDb.insertTemplate();
  262. PermissionTemplateDto anotherTemplate = templateDb.insertTemplate();
  263. UserDto user1 = db.users().insertUser();
  264. UserDto user2 = db.users().insertUser();
  265. UserDto user3 = db.users().insertUser();
  266. templateDb.addUserToTemplate(template1.getUuid(), user1.getUuid(), ADMIN);
  267. templateDb.addUserToTemplate(template1.getUuid(), user2.getUuid(), ADMIN);
  268. templateDb.addUserToTemplate(template1.getUuid(), user3.getUuid(), ADMIN);
  269. templateDb.addUserToTemplate(template1.getUuid(), user1.getUuid(), USER);
  270. templateDb.addUserToTemplate(template2.getUuid(), user1.getUuid(), USER);
  271. templateDb.addUserToTemplate(anotherTemplate.getUuid(), user1.getUuid(), ISSUE_ADMIN);
  272. final List<CountByTemplateAndPermissionDto> result = new ArrayList<>();
  273. underTest.usersCountByTemplateUuidAndPermission(dbSession, asList(template1.getUuid(), template2.getUuid(), template3.getUuid()),
  274. context -> result.add(context.getResultObject()));
  275. assertThat(result)
  276. .extracting(CountByTemplateAndPermissionDto::getPermission, CountByTemplateAndPermissionDto::getTemplateUuid, CountByTemplateAndPermissionDto::getCount)
  277. .containsExactlyInAnyOrder(
  278. tuple(ADMIN, template1.getUuid(), 3),
  279. tuple(USER, template1.getUuid(), 1),
  280. tuple(USER, template2.getUuid(), 1));
  281. }
  282. @Test
  283. public void selectPotentialPermissions_with_unknown_template_and_no_user() {
  284. List<String> result = underTest.selectPotentialPermissionsByUserUuidAndTemplateUuid(dbSession, null, "42");
  285. assertThat(result).isEmpty();
  286. }
  287. @Test
  288. public void selectPotentialPermissions_with_empty_template_and_new_user() {
  289. UserDto user = db.users().insertUser();
  290. PermissionTemplateDto template = templateDb.insertTemplate();
  291. List<String> result = underTest.selectPotentialPermissionsByUserUuidAndTemplateUuid(dbSession, user.getUuid(), template.getUuid());
  292. assertThat(result).isEmpty();
  293. }
  294. @Test
  295. public void selectPotentialPermission_with_template_users_groups_and_project_creator() {
  296. UserDto user = db.users().insertUser();
  297. GroupDto group = db.users().insertGroup(newGroupDto());
  298. db.users().insertMember(group, user);
  299. PermissionTemplateDto template = templateDb.insertTemplate();
  300. templateDb.addProjectCreatorToTemplate(template.getUuid(), SCAN_EXECUTION);
  301. templateDb.addProjectCreatorToTemplate(template.getUuid(), UserRole.ADMIN);
  302. templateDb.addUserToTemplate(template.getUuid(), user.getUuid(), UserRole.USER);
  303. templateDb.addUserToTemplate(template.getUuid(), user.getUuid(), UserRole.ADMIN);
  304. templateDb.addGroupToTemplate(template.getUuid(), group.getUuid(), UserRole.CODEVIEWER);
  305. templateDb.addGroupToTemplate(template.getUuid(), group.getUuid(), UserRole.ADMIN);
  306. templateDb.addGroupToTemplate(template.getUuid(), null, UserRole.ISSUE_ADMIN);
  307. List<String> resultWithUser = underTest.selectPotentialPermissionsByUserUuidAndTemplateUuid(dbSession, user.getUuid(), template.getUuid());
  308. List<String> resultWithoutUser = underTest.selectPotentialPermissionsByUserUuidAndTemplateUuid(dbSession, null, template.getUuid());
  309. assertThat(resultWithUser).containsOnlyOnce(SCAN_EXECUTION, UserRole.ADMIN, UserRole.USER, UserRole.CODEVIEWER, UserRole.ISSUE_ADMIN);
  310. // only permission from anyone group
  311. assertThat(resultWithoutUser).containsOnly(UserRole.ISSUE_ADMIN);
  312. }
  313. @Test
  314. public void selectAllGroupPermissionTemplatesByGroupUuid() {
  315. PermissionTemplateDto permissionTemplate = templateDb.insertTemplate();
  316. GroupDto group1 = db.users().insertGroup();
  317. GroupDto group2 = db.users().insertGroup();
  318. templateDb.addGroupToTemplate(permissionTemplate, group1, "user");
  319. templateDb.addGroupToTemplate(permissionTemplate, group1, "admin");
  320. templateDb.addGroupToTemplate(permissionTemplate, group2, "user");
  321. assertThat(db.getDbClient().permissionTemplateDao().selectAllGroupPermissionTemplatesByGroupUuid(db.getSession(), group1.getUuid()))
  322. .extracting(PermissionTemplateGroupDto::getGroupUuid, PermissionTemplateGroupDto::getPermission)
  323. .containsOnly(tuple(group1.getUuid(), "user"), tuple(group1.getUuid(), "admin"));
  324. }
  325. @Test
  326. public void delete_user_permissions_by_user_uuid() {
  327. UserDto user = db.users().insertUser();
  328. UserDto anotherUser = db.users().insertUser();
  329. PermissionTemplateDto template = db.permissionTemplates().insertTemplate();
  330. String permission = "PERMISSION";
  331. db.permissionTemplates().addUserToTemplate(template.getUuid(), user.getUuid(), permission);
  332. db.permissionTemplates().addUserToTemplate(template.getUuid(), anotherUser.getUuid(), permission);
  333. underTest.deleteUserPermissionsByUserUuid(dbSession, user.getUuid());
  334. db.commit();
  335. assertThat(db.select("select template_uuid as \"templateUuid\", user_uuid as \"userUuid\", permission_reference as \"permission\" from perm_templates_users"))
  336. .extracting((row) -> row.get("templateUuid"), (row) -> row.get("userUuid"), (row) -> row.get("permission"))
  337. .containsOnly(tuple(template.getUuid(), anotherUser.getUuid(), permission));
  338. }
  339. private PermissionTemplateDto createTemplate(OrganizationDto organization) {
  340. UserDto user = db.users().insertUser();
  341. GroupDto group = db.users().insertGroup();
  342. db.users().insertMember(group, user);
  343. PermissionTemplateDto template = templateDb.insertTemplate();
  344. templateDb.addProjectCreatorToTemplate(template.getUuid(), SCAN_EXECUTION);
  345. templateDb.addProjectCreatorToTemplate(template.getUuid(), UserRole.ADMIN);
  346. templateDb.addUserToTemplate(template.getUuid(), user.getUuid(), UserRole.USER);
  347. templateDb.addUserToTemplate(template.getUuid(), user.getUuid(), UserRole.ADMIN);
  348. templateDb.addGroupToTemplate(template.getUuid(), group.getUuid(), UserRole.CODEVIEWER);
  349. templateDb.addGroupToTemplate(template.getUuid(), group.getUuid(), UserRole.ADMIN);
  350. templateDb.addGroupToTemplate(template.getUuid(), null, UserRole.ISSUE_ADMIN);
  351. return template;
  352. }
  353. }