blob: d55516a43fda5fb9b4e637347788ffadf5eaba7b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
|
package com.blog.web.services;
import com.blog.web.dto.ArticleDto;
import com.blog.web.models.Article;
import com.blog.web.models.UserEntity;
import com.blog.web.repository.ArticleRepository;
import com.blog.web.repository.UserRepository;
import com.blog.web.security.SecurityUtil;
import com.blog.web.services.impl.ArticleServiceImpl;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.MockedStatic;
import org.mockito.Mockito;
import org.mockito.junit.jupiter.MockitoExtension;
import org.springframework.boot.jdbc.EmbeddedDatabaseConnection;
import org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.security.test.context.support.WithMockUser;
import java.time.LocalDateTime;
import java.util.Optional;
import static org.mockito.AdditionalAnswers.returnsFirstArg;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.Mockito.when;
//@SpringBootTest
@AutoConfigureTestDatabase(connection = EmbeddedDatabaseConnection.H2)
@ExtendWith(MockitoExtension.class)
public class ArticleServiceTests {
@Mock
private ArticleRepository articleRepository;
@Mock
private UserRepository userRepository;
@InjectMocks
private ArticleServiceImpl articleService;
@Test
@WithMockUser(username="test", password="blah")
public void ArticleService_SaveArticle_ReturnsArticle() {
//RegistrationDto userDto = new RegistrationDto(
// "test",
// "[email protected]",
// "blah"
//);
//userService.saveUser(userDto);
UserEntity user = new UserEntity();
user.setUsername("test");
user.setEmail("[email protected]");
user.setPassword("blah");
//UserEntity user = userService.findByUsername("test");
final ArticleDto articleDto = new ArticleDto(
1,
"Title",
"https://duckduckgo.com",
"Content",
user,
LocalDateTime.now(),
LocalDateTime.now()
);
when(userRepository.findByUsername(anyString())).thenReturn(Optional.of(user));
when(articleRepository.save(any(Article.class))).then(returnsFirstArg());
//when(SecurityUtil.getSessionUser()).thenReturn(user.getUsername());
try(MockedStatic<SecurityUtil> utilities = Mockito.mockStatic(SecurityUtil.class)) {
utilities.when(SecurityUtil::getSessionUser).thenReturn(user.getUsername());
Assertions.assertEquals(user.getUsername(), SecurityUtil.getSessionUser());
Article article = articleService.saveArticle(articleDto).orElse(null);
Assertions.assertNotNull(article);
}
}
}
|