first commit
This commit is contained in:
@@ -0,0 +1,36 @@
|
||||
import assert from 'node:assert/strict';
|
||||
import test from 'node:test';
|
||||
import {
|
||||
canonicalSourceUrl,
|
||||
detectPlatform,
|
||||
extractInstagramShortcode,
|
||||
extractYouTubeId,
|
||||
} from '../src/utils/url.js';
|
||||
|
||||
test('지원 URL의 플랫폼과 source ID를 판별한다', () => {
|
||||
assert.equal(detectPlatform('https://youtu.be/dQw4w9WgXcQ'), 'youtube');
|
||||
assert.equal(extractYouTubeId('https://www.youtube.com/shorts/dQw4w9WgXcQ'), 'dQw4w9WgXcQ');
|
||||
assert.equal(detectPlatform('https://www.instagram.com/reel/Db137BuzUJe/'), 'instagram');
|
||||
assert.equal(extractInstagramShortcode('https://www.instagram.com/p/Db137BuzUJe/'), 'Db137BuzUJe');
|
||||
});
|
||||
|
||||
test('source URL에서 추적 파라미터를 제거해 정규화한다', () => {
|
||||
assert.equal(
|
||||
canonicalSourceUrl('https://www.youtube.com/watch?v=dQw4w9WgXcQ&utm_source=x'),
|
||||
'https://www.youtube.com/watch?v=dQw4w9WgXcQ',
|
||||
);
|
||||
assert.equal(
|
||||
canonicalSourceUrl('https://www.instagram.com/p/Db137BuzUJe/?igsh=abc'),
|
||||
'https://www.instagram.com/p/Db137BuzUJe/',
|
||||
);
|
||||
});
|
||||
|
||||
test('HTTP 및 지원하지 않는 host를 거부한다', () => {
|
||||
assert.throws(() => detectPlatform('http://youtube.com/watch?v=dQw4w9WgXcQ'), /HTTPS/);
|
||||
assert.equal(detectPlatform('https://example.com/recipe'), 'unsupported');
|
||||
assert.throws(
|
||||
() => extractYouTubeId('https://youtube.com.evil.example/watch?v=dQw4w9WgXcQ'),
|
||||
/지원하지 않는 YouTube URL/,
|
||||
);
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user