62 lines
2.1 KiB
Dart
62 lines
2.1 KiB
Dart
import 'package:flutter_test/flutter_test.dart';
|
|
import 'package:ikar/core/media/video_request_headers.dart';
|
|
|
|
const _agent = 'SyntheticAgent/1.0 (Android 14)';
|
|
|
|
Map<String, String> _headers(String url, {String? agent = _agent}) =>
|
|
videoRequestHeaders(Uri.parse(url), sessionUserAgent: agent);
|
|
|
|
void main() {
|
|
test('ссылки okcdn получают User-Agent сессии', () {
|
|
expect(_headers('https://vd1.okcdn.ru/?expires=1'), {'User-Agent': _agent});
|
|
});
|
|
|
|
test('ссылки vkuser.net получают User-Agent сессии', () {
|
|
expect(_headers('https://cdn-1.vkuser.net/video.mp4?expires=1'), {
|
|
'User-Agent': _agent,
|
|
});
|
|
});
|
|
|
|
test('любая ссылка с srcAg привязана к клиенту', () {
|
|
expect(_headers('https://media.example.org/v.mp4?srcAg=UNKNOWN_ANDROID'), {
|
|
'User-Agent': _agent,
|
|
});
|
|
});
|
|
|
|
test('посторонние хосты не получают User-Agent', () {
|
|
expect(_headers('https://media.example.org/v.mp4'), isEmpty);
|
|
expect(_headers('https://notvkuser.net/v.mp4'), isEmpty);
|
|
});
|
|
|
|
test('без User-Agent сессии заголовков нет', () {
|
|
expect(_headers('https://cdn-1.vkuser.net/v.mp4', agent: null), isEmpty);
|
|
expect(_headers('https://cdn-1.vkuser.net/v.mp4', agent: ' '), isEmpty);
|
|
});
|
|
|
|
test('агент iOS-устройства не уходит в CDN целиком', () {
|
|
const iosAgent =
|
|
'OKMessages/26.31.0 (18.6; iPhone15,2; 420dpi 420dpi 1080x2340)';
|
|
expect(
|
|
_headers(
|
|
'https://maxvd665.okcdn.ru/?srcAg=UNKNOWN_ANDROID&expires=1',
|
|
agent: iosAgent,
|
|
),
|
|
{'User-Agent': 'OKMessages/26.31.0 (Android)'},
|
|
);
|
|
});
|
|
|
|
test('агент с Android уходит без изменений', () {
|
|
const androidAgent =
|
|
'OKMessages/26.31.0 (Android 14; Samsung Galaxy S24 Ultra; '
|
|
'xxhdpi 450dpi 1440x3120)';
|
|
expect(cdnUserAgent(androidAgent), androidAgent);
|
|
});
|
|
|
|
test('агент без продукта заменяется на OKMessages', () {
|
|
expect(
|
|
cdnUserAgent('(iPhone; CPU OS 18_6 like Mac OS X)'),
|
|
'OKMessages (Android)',
|
|
);
|
|
});
|
|
}
|