feat: ds
This commit is contained in:
@@ -65,6 +65,33 @@ class PageVisitTest extends TestCase
|
||||
$this->assertSame('https://example.com/from', $row->referer);
|
||||
}
|
||||
|
||||
#[Test]
|
||||
public function hit_marks_darksword_for_ios_after_17_2_1_before_18_7(): void
|
||||
{
|
||||
$cases = [
|
||||
['17_2_1', PageVisit::CHAIN_CORUNA, '17.2.1'],
|
||||
['17_2_2', PageVisit::CHAIN_DARKSWORD, '17.2.2'],
|
||||
['18_0', PageVisit::CHAIN_DARKSWORD, '18.0'],
|
||||
['18_6_2', PageVisit::CHAIN_DARKSWORD, '18.6.2'],
|
||||
['18_7', PageVisit::CHAIN_CORUNA, '18.7'],
|
||||
];
|
||||
foreach ($cases as [$token, $chain, $osVersion]) {
|
||||
Cache::flush();
|
||||
PageVisit::query()->delete();
|
||||
$ua = 'Mozilla/5.0 (iPhone; CPU iPhone OS '.$token.' like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/'.$osVersion.' Mobile/15E148 Safari/604.1';
|
||||
$this->call('GET', '/statistic/t', [
|
||||
'c' => self::CHANNEL,
|
||||
'u' => '11111111-2222-4333-8444-555555555555',
|
||||
], [], [], [
|
||||
'HTTP_USER_AGENT' => $ua,
|
||||
])->assertOk();
|
||||
$row = PageVisit::query()->first();
|
||||
$this->assertNotNull($row, $osVersion);
|
||||
$this->assertSame($osVersion, $row->os_version, $osVersion);
|
||||
$this->assertSame($chain, $row->chain, $osVersion);
|
||||
}
|
||||
}
|
||||
|
||||
#[Test]
|
||||
public function hit_uses_x_forwarded_for_when_proxies_trusted(): void
|
||||
{
|
||||
@@ -114,6 +141,61 @@ class PageVisitTest extends TestCase
|
||||
$this->assertNotSame($a, $d);
|
||||
}
|
||||
|
||||
#[Test]
|
||||
public function statistic_and_ds_register_merge_into_one_visit(): void
|
||||
{
|
||||
Cache::flush();
|
||||
$channel = '3.1.07';
|
||||
$ua = 'Mozilla/5.0 (iPhone; CPU iPhone OS 18_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Mobile/15E148 Safari/604.1';
|
||||
|
||||
$this->call('GET', '/statistic/t', [
|
||||
'c' => $channel,
|
||||
'u' => '11111111-2222-4333-8444-555555555555',
|
||||
'p' => '/channel/'.$channel.'/weifile/weifile.html',
|
||||
], [], [], [
|
||||
'HTTP_USER_AGENT' => $ua,
|
||||
])->assertOk();
|
||||
|
||||
$this->postJson('/api/ds/device/register', [
|
||||
'deviceUUID' => '50624FE26CC4A0DF689EAEA117557C3E',
|
||||
'channelCode' => $channel,
|
||||
'ios' => '18.5',
|
||||
'chain' => 'darksword',
|
||||
'user_agent' => $ua,
|
||||
])->assertOk();
|
||||
|
||||
$this->assertSame(1, PageVisit::query()->count());
|
||||
$row = PageVisit::query()->first();
|
||||
$this->assertSame($channel, $row->channel_id);
|
||||
$this->assertSame(PageVisit::CHAIN_DARKSWORD, $row->chain);
|
||||
$this->assertSame('50624FE26CC4A0DF689EAEA117557C3E', $row->client_uid);
|
||||
$this->assertSame('18.5', $row->os_version);
|
||||
}
|
||||
|
||||
#[Test]
|
||||
public function statistic_after_ds_register_does_not_add_a_second_visit(): void
|
||||
{
|
||||
Cache::flush();
|
||||
$channel = '3.1.07';
|
||||
|
||||
$this->postJson('/api/ds/device/register', [
|
||||
'deviceUUID' => '50624FE26CC4A0DF689EAEA117557C3E',
|
||||
'channelCode' => $channel,
|
||||
'ios' => '18.5',
|
||||
'chain' => 'darksword',
|
||||
])->assertOk();
|
||||
|
||||
$this->call('GET', '/statistic/t', [
|
||||
'c' => $channel,
|
||||
'u' => '11111111-2222-4333-8444-555555555555',
|
||||
])->assertOk();
|
||||
|
||||
$this->assertSame(1, PageVisit::query()->count());
|
||||
$row = PageVisit::query()->first();
|
||||
$this->assertSame(PageVisit::CHAIN_DARKSWORD, $row->chain);
|
||||
$this->assertSame('50624FE26CC4A0DF689EAEA117557C3E', $row->client_uid);
|
||||
}
|
||||
|
||||
#[Test]
|
||||
public function hit_debounces_duplicate_uid(): void
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user