1+ package com.compiler.server
2+
3+ import org.junit.jupiter.api.Test
4+ import org.springframework.beans.factory.annotation.Autowired
5+ import org.springframework.beans.factory.annotation.Value
6+ import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc
7+ import org.springframework.boot.test.context.SpringBootTest
8+ import org.springframework.http.HttpHeaders
9+ import org.springframework.test.web.servlet.MockMvc
10+ import org.springframework.test.web.servlet.request.MockMvcRequestBuilders
11+ import org.springframework.test.web.servlet.result.MockMvcResultMatchers
12+ import java.util.concurrent.TimeUnit
13+
14+ @SpringBootTest
15+ @AutoConfigureMockMvc
16+ class SkikoResourceTest {
17+ @Autowired
18+ private lateinit var mockMvc: MockMvc
19+
20+ @Value(" \$ {skiko.version}" )
21+ private lateinit var skikoVersion: String
22+
23+ @Value(" \$ {dependencies.compose.wasm}" )
24+ private lateinit var stdlibHash: String
25+
26+ @Test
27+ fun `test caching headers for skiko mjs resource` () {
28+ testCachingHeadersForResource(
29+ " /api/resource/skiko-$skikoVersion .mjs" ,
30+ " text/javascript"
31+ )
32+ }
33+
34+ @Test
35+ fun `test caching headers for skiko wasm resource` () {
36+ testCachingHeadersForResource(
37+ " /api/resource/skiko-$skikoVersion .wasm" ,
38+ " application/wasm"
39+ )
40+ }
41+
42+ @Test
43+ fun `test caching headers for stdlib mjs resource` () {
44+ testCachingHeadersForResource(
45+ " /api/resource/stdlib-$stdlibHash .mjs" ,
46+ " text/javascript"
47+ )
48+ }
49+
50+ @Test
51+ fun `test caching headers for stdlib wasm resource` () {
52+ testCachingHeadersForResource(
53+ " /api/resource/stdlib-$stdlibHash .wasm" ,
54+ " application/wasm"
55+ )
56+ }
57+
58+ private fun testCachingHeadersForResource (
59+ resourceUrl : String ,
60+ contentType : String
61+ ) {
62+ val expectedCacheControl = " max-age=${TimeUnit .DAYS .toSeconds(365 )} "
63+
64+ mockMvc
65+ .perform(MockMvcRequestBuilders .get(resourceUrl))
66+ .andExpect(MockMvcResultMatchers .status().isOk) // HTTP 200 status
67+ .andExpect(
68+ MockMvcResultMatchers .header().exists(HttpHeaders .CACHE_CONTROL )
69+ )
70+ .andExpect(
71+ MockMvcResultMatchers .header().string(
72+ HttpHeaders .CACHE_CONTROL ,
73+ expectedCacheControl
74+ )
75+ )
76+ .andExpect(
77+ MockMvcResultMatchers .header().string(
78+ HttpHeaders .CONTENT_TYPE ,
79+ contentType
80+ )
81+ )
82+ }
83+ }
0 commit comments