認証と承認にSpring Social Securityを使用するアプリケーションがあります。残念ながら、Spring Security のモックに問題があります。まったく機能しないようです。
返す必要があるエンティティの識別子が利用できない場合に 404 Not Found を返す REST コントローラーがあります。ユーザーがログインしていない場合、どのページもアプリのソーシャル ログイン ページにリダイレクトされます。
ここで、@WithUserDetails
注釈が私に最も適していることを読みました。
だから私のテスト方法はこのようになります
@Test
@SqlGroup({
@Sql(executionPhase = ExecutionPhase.BEFORE_TEST_METHOD, statements = "INSERT INTO UserAccount(id, creationtime, modificationtime, version, email, firstname, lastname, role, signinprovider) VALUES (1, '2008-08-08 20:08:08', '2008-08-08 20:08:08', 1, 'user', 'John', 'Doe', 'ROLE_USER', 'FACEBOOK')"), })
@Rollback
@WithUserDetails
public void ifNoTeamsInTheDatabaseThenTheRestControllerShouldReturnNotFoundHttpStatus() {
ResponseEntity<String> response = restTemplate.getForEntity("/getTeamHistory/{team}", String.class, "Team");
Assert.assertEquals(HttpStatus.NOT_FOUND, response.getStatusCode());
}
しかし、これはまったく機能していないようです。取得したステータスが 200 OK であるため、匿名ユーザーでテスト メソッドが実行されているようです。
私のテストクラスはこのように注釈が付けられています
@RunWith(SpringRunner.class)
@ActiveProfiles("dev")
@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)
@Transactional
public class TeamRestControllerTest {
//...
}
Spring Social によって提供される Spring Security をモックすることで、このような問題を経験した人はいますか?