View Javadoc
1   package com.rest.it;
2   
3   /*
4    * #%L
5    * Gateway
6    * %%
7    * Copyright (C) 2015 Powered by Sergey
8    * %%
9    * Licensed under the Apache License, Version 2.0 (the "License");
10   * you may not use this file except in compliance with the License.
11   * You may obtain a copy of the License at
12   * 
13   *      http://www.apache.org/licenses/LICENSE-2.0
14   * 
15   * Unless required by applicable law or agreed to in writing, software
16   * distributed under the License is distributed on an "AS IS" BASIS,
17   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18   * See the License for the specific language governing permissions and
19   * limitations under the License.
20   * #L%
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   * Created by aautushk on 9/26/2015.
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      //user story 1.
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);// needed to be able to save authority
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 }