mirror of https://github.com/usbharu/Hideout.git
test: Mastodon互換APIの通知エンドポイントのページングテストを追加
This commit is contained in:
parent
9deff9fef8
commit
637b2b84d5
|
@ -0,0 +1,113 @@
|
|||
package mastodon.notifications
|
||||
|
||||
import dev.usbharu.hideout.SpringApplication
|
||||
import kotlinx.coroutines.test.runTest
|
||||
import org.flywaydb.core.Flyway
|
||||
import org.junit.jupiter.api.AfterAll
|
||||
import org.junit.jupiter.api.BeforeEach
|
||||
import org.junit.jupiter.api.Test
|
||||
import org.springframework.beans.factory.annotation.Autowired
|
||||
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc
|
||||
import org.springframework.boot.test.context.SpringBootTest
|
||||
import org.springframework.security.core.authority.SimpleGrantedAuthority
|
||||
import org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors
|
||||
import org.springframework.security.test.web.servlet.setup.SecurityMockMvcConfigurers
|
||||
import org.springframework.test.context.jdbc.Sql
|
||||
import org.springframework.test.web.servlet.MockMvc
|
||||
import org.springframework.test.web.servlet.get
|
||||
import org.springframework.test.web.servlet.setup.DefaultMockMvcBuilder
|
||||
import org.springframework.test.web.servlet.setup.MockMvcBuilders
|
||||
import org.springframework.transaction.annotation.Transactional
|
||||
import org.springframework.web.context.WebApplicationContext
|
||||
|
||||
@SpringBootTest(classes = [SpringApplication::class], properties = ["hideout.use-mongodb=false"])
|
||||
@AutoConfigureMockMvc
|
||||
@Transactional
|
||||
@Sql("/sql/test-user.sql", executionPhase = Sql.ExecutionPhase.BEFORE_TEST_CLASS)
|
||||
@Sql("/sql/test-user2.sql", executionPhase = Sql.ExecutionPhase.BEFORE_TEST_CLASS)
|
||||
@Sql("/sql/notification/test-notifications.sql", executionPhase = Sql.ExecutionPhase.BEFORE_TEST_CLASS)
|
||||
class NotificationsTest {
|
||||
@Autowired
|
||||
private lateinit var context: WebApplicationContext
|
||||
|
||||
private lateinit var mockMvc: MockMvc
|
||||
|
||||
@Test
|
||||
fun `通知を取得できる`() = runTest {
|
||||
mockMvc
|
||||
.get("/api/v1/notifications") {
|
||||
with(
|
||||
SecurityMockMvcRequestPostProcessors.jwt()
|
||||
.jwt { it.claim("uid", "1") }.authorities(SimpleGrantedAuthority("SCOPE_read"))
|
||||
)
|
||||
}
|
||||
.asyncDispatch()
|
||||
.andExpect {
|
||||
header {
|
||||
string(
|
||||
"Link",
|
||||
"<https://example.com/api/v1/notifications?min_id=65>; rel=\"next\", <https://example.com/api/v1/notifications?max_id=26>; rel=\"prev\""
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
fun maxIdを指定して通知を取得できる() = runTest {
|
||||
mockMvc
|
||||
.get("/api/v1/notifications?max_id=26") {
|
||||
with(
|
||||
SecurityMockMvcRequestPostProcessors.jwt()
|
||||
.jwt { it.claim("uid", "1") }.authorities(SimpleGrantedAuthority("SCOPE_read"))
|
||||
)
|
||||
}
|
||||
.asyncDispatch()
|
||||
.andExpect {
|
||||
header {
|
||||
string(
|
||||
"Link",
|
||||
"<https://example.com/api/v1/notifications?min_id=25>; rel=\"next\", <https://example.com/api/v1/notifications?max_id=1>; rel=\"prev\""
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
fun minIdを指定して通知を取得できる() = runTest {
|
||||
mockMvc
|
||||
.get("/api/v1/notifications?min_id=25") {
|
||||
with(
|
||||
SecurityMockMvcRequestPostProcessors.jwt()
|
||||
.jwt { it.claim("uid", "1") }.authorities(SimpleGrantedAuthority("SCOPE_read"))
|
||||
)
|
||||
}
|
||||
.asyncDispatch()
|
||||
.andExpect {
|
||||
header {
|
||||
string(
|
||||
"Link",
|
||||
"<https://example.com/api/v1/notifications?min_id=65>; rel=\"next\", <https://example.com/api/v1/notifications?max_id=26>; rel=\"prev\""
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@BeforeEach
|
||||
fun setUp() {
|
||||
mockMvc = MockMvcBuilders.webAppContextSetup(context)
|
||||
.apply<DefaultMockMvcBuilder>(SecurityMockMvcConfigurers.springSecurity())
|
||||
.build()
|
||||
}
|
||||
|
||||
companion object {
|
||||
@JvmStatic
|
||||
@AfterAll
|
||||
fun dropDatabase(@Autowired flyway: Flyway) {
|
||||
flyway.clean()
|
||||
flyway.migrate()
|
||||
}
|
||||
}
|
||||
}
|
|
@ -65,4 +65,69 @@ VALUES (1, 'follow', 1, 2, null, null, null, current_timestamp),
|
|||
(64, 'follow', 1, 2, null, null, null, current_timestamp),
|
||||
(65, 'follow', 1, 2, null, null, null, current_timestamp);
|
||||
|
||||
-- insert into
|
||||
insert into mastodon_notifications (id, user_id, type, created_at, account_id, status_id, report_id, relationship_serverance_event_id)
|
||||
values (1, 1, 'follow', current_timestamp, 2, null, null, null),
|
||||
(2, 1, 'follow', current_timestamp, 2, null, null, null),
|
||||
(3, 1, 'follow', current_timestamp, 2, null, null, null),
|
||||
(4, 1, 'follow', current_timestamp, 2, null, null, null),
|
||||
(5, 1, 'follow', current_timestamp, 2, null, null, null),
|
||||
(6, 1, 'follow', current_timestamp, 2, null, null, null),
|
||||
(7, 1, 'follow', current_timestamp, 2, null, null, null),
|
||||
(8, 1, 'follow', current_timestamp, 2, null, null, null),
|
||||
(9, 1, 'follow', current_timestamp, 2, null, null, null),
|
||||
(10, 1, 'follow', current_timestamp, 2, null, null, null),
|
||||
(11, 1, 'follow', current_timestamp, 2, null, null, null),
|
||||
(12, 1, 'follow', current_timestamp, 2, null, null, null),
|
||||
(13, 1, 'follow', current_timestamp, 2, null, null, null),
|
||||
(14, 1, 'follow', current_timestamp, 2, null, null, null),
|
||||
(15, 1, 'follow', current_timestamp, 2, null, null, null),
|
||||
(16, 1, 'follow', current_timestamp, 2, null, null, null),
|
||||
(17, 1, 'follow', current_timestamp, 2, null, null, null),
|
||||
(18, 1, 'follow', current_timestamp, 2, null, null, null),
|
||||
(19, 1, 'follow', current_timestamp, 2, null, null, null),
|
||||
(20, 1, 'follow', current_timestamp, 2, null, null, null),
|
||||
(21, 1, 'follow', current_timestamp, 2, null, null, null),
|
||||
(22, 1, 'follow', current_timestamp, 2, null, null, null),
|
||||
(23, 1, 'follow', current_timestamp, 2, null, null, null),
|
||||
(24, 1, 'follow', current_timestamp, 2, null, null, null),
|
||||
(25, 1, 'follow', current_timestamp, 2, null, null, null),
|
||||
(26, 1, 'follow', current_timestamp, 2, null, null, null),
|
||||
(27, 1, 'follow', current_timestamp, 2, null, null, null),
|
||||
(28, 1, 'follow', current_timestamp, 2, null, null, null),
|
||||
(29, 1, 'follow', current_timestamp, 2, null, null, null),
|
||||
(30, 1, 'follow', current_timestamp, 2, null, null, null),
|
||||
(31, 1, 'follow', current_timestamp, 2, null, null, null),
|
||||
(32, 1, 'follow', current_timestamp, 2, null, null, null),
|
||||
(33, 1, 'follow', current_timestamp, 2, null, null, null),
|
||||
(34, 1, 'follow', current_timestamp, 2, null, null, null),
|
||||
(35, 1, 'follow', current_timestamp, 2, null, null, null),
|
||||
(36, 1, 'follow', current_timestamp, 2, null, null, null),
|
||||
(37, 1, 'follow', current_timestamp, 2, null, null, null),
|
||||
(38, 1, 'follow', current_timestamp, 2, null, null, null),
|
||||
(39, 1, 'follow', current_timestamp, 2, null, null, null),
|
||||
(40, 1, 'follow', current_timestamp, 2, null, null, null),
|
||||
(41, 1, 'follow', current_timestamp, 2, null, null, null),
|
||||
(42, 1, 'follow', current_timestamp, 2, null, null, null),
|
||||
(43, 1, 'follow', current_timestamp, 2, null, null, null),
|
||||
(44, 1, 'follow', current_timestamp, 2, null, null, null),
|
||||
(45, 1, 'follow', current_timestamp, 2, null, null, null),
|
||||
(46, 1, 'follow', current_timestamp, 2, null, null, null),
|
||||
(47, 1, 'follow', current_timestamp, 2, null, null, null),
|
||||
(48, 1, 'follow', current_timestamp, 2, null, null, null),
|
||||
(49, 1, 'follow', current_timestamp, 2, null, null, null),
|
||||
(50, 1, 'follow', current_timestamp, 2, null, null, null),
|
||||
(51, 1, 'follow', current_timestamp, 2, null, null, null),
|
||||
(52, 1, 'follow', current_timestamp, 2, null, null, null),
|
||||
(53, 1, 'follow', current_timestamp, 2, null, null, null),
|
||||
(54, 1, 'follow', current_timestamp, 2, null, null, null),
|
||||
(55, 1, 'follow', current_timestamp, 2, null, null, null),
|
||||
(56, 1, 'follow', current_timestamp, 2, null, null, null),
|
||||
(57, 1, 'follow', current_timestamp, 2, null, null, null),
|
||||
(58, 1, 'follow', current_timestamp, 2, null, null, null),
|
||||
(59, 1, 'follow', current_timestamp, 2, null, null, null),
|
||||
(60, 1, 'follow', current_timestamp, 2, null, null, null),
|
||||
(61, 1, 'follow', current_timestamp, 2, null, null, null),
|
||||
(62, 1, 'follow', current_timestamp, 2, null, null, null),
|
||||
(63, 1, 'follow', current_timestamp, 2, null, null, null),
|
||||
(64, 1, 'follow', current_timestamp, 2, null, null, null),
|
||||
(65, 1, 'follow', current_timestamp, 2, null, null, null);
|
Loading…
Reference in New Issue