Reviewed-on: #413 Co-authored-by: miteruzo <miteruzo@naver.com> Co-committed-by: miteruzo <miteruzo@naver.com>
このコミットはPull リクエスト #413 でマージされました.
このコミットが含まれているのは:
@@ -0,0 +1,43 @@
|
||||
import { describe, expect, it } from 'vitest'
|
||||
|
||||
import {
|
||||
buildPostNewReviewPath,
|
||||
hasPostNewReviewState,
|
||||
isPostNewReviewPathWithinLimit,
|
||||
parsePostNewReviewUrls,
|
||||
postNewReviewPathByteLength,
|
||||
} from '@/lib/postNewQueryState'
|
||||
|
||||
describe ('post new review URL state', () => {
|
||||
it ('encodes each URL separately and preserves literal plus signs', () => {
|
||||
const urls = [
|
||||
'https://example.com/one+a',
|
||||
'https://example.com/two?value=b+c']
|
||||
|
||||
const path = buildPostNewReviewPath (urls)
|
||||
|
||||
expect (path).toBe (
|
||||
'/posts/new?urls=https%3A%2F%2Fexample.com%2Fone%2Ba'
|
||||
+ '+https%3A%2F%2Fexample.com%2Ftwo%3Fvalue%3Db%2Bc')
|
||||
expect (parsePostNewReviewUrls (path.slice ('/posts/new'.length))).toEqual (urls)
|
||||
})
|
||||
|
||||
it ('uses only the raw urls parameter as review state', () => {
|
||||
expect (hasPostNewReviewState ('?session_id=old&meta=old')).toBe (false)
|
||||
expect (hasPostNewReviewState ('?unknown=value&urls=')).toBe (true)
|
||||
expect (parsePostNewReviewUrls ('?unknown=value&urls=one+two&meta=old'))
|
||||
.toEqual (['one', 'two'])
|
||||
})
|
||||
|
||||
it ('allows at most a 6 143 byte request target', () => {
|
||||
const baseUrl = 'https://example.com/'
|
||||
const baseLength = postNewReviewPathByteLength ([baseUrl])
|
||||
const allowed = `${ baseUrl }${ 'a'.repeat (6_143 - baseLength) }`
|
||||
const denied = `${ allowed }a`
|
||||
|
||||
expect (postNewReviewPathByteLength ([allowed])).toBe (6_143)
|
||||
expect (isPostNewReviewPathWithinLimit ([allowed])).toBe (true)
|
||||
expect (postNewReviewPathByteLength ([denied])).toBe (6_144)
|
||||
expect (isPostNewReviewPathWithinLimit ([denied])).toBe (false)
|
||||
})
|
||||
})
|
||||
新しい課題から参照
ユーザをブロックする