1 package com.rest.it;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 import com.MockGatewayApplication;
25 import com.dto.GroupRequestDto;
26 import com.dto.InvitationRequestDto;
27 import com.dto.ProjectRequestDto;
28 import com.entity.*;
29 import com.repository.*;
30 import com.rest.ProjectRest;
31 import com.utils.SecurityContextReader;
32 import org.junit.After;
33 import org.junit.Test;
34 import org.junit.runner.RunWith;
35 import org.springframework.beans.factory.annotation.Autowired;
36 import org.springframework.boot.test.SpringApplicationConfiguration;
37 import org.springframework.test.context.ActiveProfiles;
38 import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
39 import org.springframework.test.context.transaction.TransactionConfiguration;
40 import org.springframework.test.context.web.WebAppConfiguration;
41 import org.springframework.transaction.annotation.Transactional;
42
43 import java.util.ArrayList;
44 import java.util.List;
45
46 import static org.junit.Assert.assertEquals;
47 import static org.mockito.Mockito.mock;
48 import static org.mockito.Mockito.when;
49
50
51
52
53 @RunWith(SpringJUnit4ClassRunner.class)
54 @SpringApplicationConfiguration(classes = MockGatewayApplication.class)
55 @WebAppConfiguration
56 @Transactional
57 @TransactionConfiguration(defaultRollback=true)
58 @ActiveProfiles("test")
59 public class ProjectRestIntTest {
60 @Autowired
61 public IUserRepository userRepository;
62
63 @Autowired
64 public IProjectRepository projectRepository;
65
66 @Autowired
67 public IProjectUserRepository projectUserRepository;
68
69 @Autowired
70 public IAuthorityRepository authorityRepository;
71
72 @Autowired
73 public ITranslationRepository translationRepository;
74
75 @Autowired
76 public IGroupRepository groupRepository;
77
78 @Autowired
79 public IProjectGroupRepository projectGroupRepository;
80
81 @Autowired
82 public IInvitationRepository invitationRepository;
83
84 @Autowired
85 public IInvitationGroupRepository invitationGroupRepository;
86
87
88 @Test
89 public void createProject() {
90 UserEntity user = new UserEntity();
91
92 user = userRepository.findByUsername("test@gmail.com");
93
94 if(user == null){
95 user = new UserEntity();
96 user.setFirstName("tester");
97 user.setLastName("tester");
98 user.setPassword("password");
99 user.setEnabled(true);
100 user.setUsername("test@gmail.com");
101
102 userRepository.save(user);
103 }
104
105 ProjectRequestDto projectRequestDto = new ProjectRequestDto();
106 projectRequestDto.setDescription("My test project");
107
108 GroupRequestDto group = new GroupRequestDto();
109 group.setGroupName("group1");
110 group.setGroupGuid("1");
111 List<GroupRequestDto> groups = new ArrayList<GroupRequestDto>();
112 groups.add(group);
113 projectRequestDto.setGroups(groups);
114
115 InvitationRequestDto invitation = new InvitationRequestDto();
116 invitation.setGroups(groups);
117 List<InvitationRequestDto> invitations = new ArrayList<InvitationRequestDto>();
118 invitations.add(invitation);
119 projectRequestDto.setInvitations(invitations);
120
121 SecurityContextReader securityContextReaderMock = mock(SecurityContextReader.class);
122 when(securityContextReaderMock.getUsername()).thenReturn("test@gmail.com");
123
124 ProjectRest projectRest = new ProjectRest();
125
126 projectRest.projectRepository = projectRepository;
127 projectRest.translationRepository = translationRepository;
128 projectRest.projectUserRepository = projectUserRepository;
129 projectRest.authorityRepository = authorityRepository;
130 projectRest.groupRepository = groupRepository;
131 projectRest.projectGroupRepository = projectGroupRepository;
132 projectRest.invitationRepository = invitationRepository;
133 projectRest.invitationGroupRepository = invitationGroupRepository;
134 projectRest.securityContextReader = securityContextReaderMock;
135
136 projectRest.createProject(projectRequestDto);
137
138 List<ProjectEntity> projects = projectRepository.findByCreatedByUser("test@gmail.com");
139 List<TranslationEntity> translations = translationRepository.findByCreatedByUser("test@gmail.com");
140 List<ProjectUserEntity> projectUsers = projectUserRepository.findByCreatedByUser("test@gmail.com");
141 List<AuthorityEntity> authorities = authorityRepository.findByCreatedByUser("test@gmail.com");
142 List<GroupEntity> foundGroups = groupRepository.findByCreatedByUser("test@gmail.com");
143 List<ProjectGroupEntity> projectGroups = projectGroupRepository.findByCreatedByUser("test@gmail.com");
144 List<InvitationEntity> foundInvitations = invitationRepository.findByCreatedByUser("test@gmail.com");
145 List<InvitationGroupEntity> invitationGroups = invitationGroupRepository.findByCreatedByUser("test@gmail.com");
146
147 assertEquals(projects.size(), 1);
148 assertEquals(translations.size(), 1);
149 assertEquals(projectUsers.size(), 1);
150 assertEquals(authorities.size(), 1);
151 assertEquals(groups.size(), 1);
152 assertEquals(projectGroups.size(), 1);
153 assertEquals(invitations.size(), 1);
154 assertEquals(invitationGroups.size(), 1);
155
156 projectRepository.delete(projects.get(0));
157 translationRepository.delete(translations.get(0));
158 projectUserRepository.delete(projectUsers.get(0));
159 authorityRepository.delete(authorities.get(0));
160 groupRepository.delete(foundGroups.get(0));
161 projectGroupRepository.delete(projectGroups.get(0));
162 invitationRepository.delete(foundInvitations.get(0));
163 invitationGroupRepository.delete(invitationGroups.get(0));
164 }
165 }