Use twitter safe relay
CI / test (pull_request) Has been cancelled

This commit is contained in:
2026-06-24 03:39:34 +09:00
parent b771e827aa
commit 1f6e228272
66 changed files with 597 additions and 1720 deletions
+14 -14
View File
@@ -1,6 +1,6 @@
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
import { TwitterClient } from '../src/lib/twitter-client.js';
import { validCookies } from './twitter-client-fixtures.js';
import { testRelayBaseUrl } from './twitter-client-fixtures.js';
const originalFetch = global.fetch;
@@ -91,7 +91,7 @@ describe('TwitterClient getUserTweets', () => {
makeTimelineResponse([makeTweetResult('1', 'First tweet'), makeTweetResult('2', 'Second tweet')]),
});
const client = new TwitterClient({ cookies: validCookies });
const client = new TwitterClient({ relayBaseUrl: testRelayBaseUrl });
const result = await client.getUserTweets('12345', 10);
expect(result.success).toBe(true);
@@ -114,7 +114,7 @@ describe('TwitterClient getUserTweets', () => {
]),
});
const client = new TwitterClient({ cookies: validCookies });
const client = new TwitterClient({ relayBaseUrl: testRelayBaseUrl });
const result = await client.getUserTweets('12345', 2);
expect(result.success).toBe(true);
@@ -128,7 +128,7 @@ describe('TwitterClient getUserTweets', () => {
json: async () => makeTimelineResponse([]),
});
const client = new TwitterClient({ cookies: validCookies });
const client = new TwitterClient({ relayBaseUrl: testRelayBaseUrl });
const result = await client.getUserTweets('12345', 10);
expect(result.success).toBe(true);
@@ -142,7 +142,7 @@ describe('TwitterClient getUserTweets', () => {
json: async () => makeTimelineResponse([makeTweetResult('1', 'Tweet')], 'next-cursor-abc'),
});
const client = new TwitterClient({ cookies: validCookies });
const client = new TwitterClient({ relayBaseUrl: testRelayBaseUrl });
const result = await client.getUserTweetsPaged('12345', 20, { maxPages: 1 });
expect(result.success).toBe(true);
@@ -156,7 +156,7 @@ describe('TwitterClient getUserTweets', () => {
text: async () => 'Internal Server Error',
});
const client = new TwitterClient({ cookies: validCookies });
const client = new TwitterClient({ relayBaseUrl: testRelayBaseUrl });
const result = await client.getUserTweets('12345', 10);
expect(result.success).toBe(false);
@@ -249,7 +249,7 @@ describe('TwitterClient getUserTweetsPaged', () => {
),
});
const client = new TwitterClient({ cookies: validCookies });
const client = new TwitterClient({ relayBaseUrl: testRelayBaseUrl });
const result = await client.getUserTweetsPaged('12345', 5, { pageDelayMs: 0 });
expect(result.success).toBe(true);
@@ -275,7 +275,7 @@ describe('TwitterClient getUserTweetsPaged', () => {
});
}
const client = new TwitterClient({ cookies: validCookies });
const client = new TwitterClient({ relayBaseUrl: testRelayBaseUrl });
const result = await client.getUserTweetsPaged('12345', 9999, { pageDelayMs: 0 });
expect(result.success).toBe(true);
@@ -285,7 +285,7 @@ describe('TwitterClient getUserTweetsPaged', () => {
});
it('returns error for invalid limit', async () => {
const client = new TwitterClient({ cookies: validCookies });
const client = new TwitterClient({ relayBaseUrl: testRelayBaseUrl });
const result = await client.getUserTweetsPaged('12345', 0);
expect(result.success).toBe(false);
@@ -306,7 +306,7 @@ describe('TwitterClient getUserTweetsPaged', () => {
json: async () => makeTimelineResponse([makeTweetResult('2', 'Page 2 Tweet')], 'cursor-page-3'),
});
const client = new TwitterClient({ cookies: validCookies });
const client = new TwitterClient({ relayBaseUrl: testRelayBaseUrl });
const result = await client.getUserTweetsPaged('12345', 40, {
maxPages: 2,
pageDelayMs: 0, // No delay for tests
@@ -333,7 +333,7 @@ describe('TwitterClient getUserTweetsPaged', () => {
json: async () => makeTimelineResponse([makeTweetResult('2', 'Tweet 2')], 'cursor-3'),
});
const client = new TwitterClient({ cookies: validCookies });
const client = new TwitterClient({ relayBaseUrl: testRelayBaseUrl });
const result = await client.getUserTweetsPaged('12345', 40, {
maxPages: 2,
pageDelayMs: 0,
@@ -357,7 +357,7 @@ describe('TwitterClient getUserTweetsPaged', () => {
json: async () => makeTimelineResponse([makeTweetResult('2', 'Tweet 2')]), // No cursor = end
});
const client = new TwitterClient({ cookies: validCookies });
const client = new TwitterClient({ relayBaseUrl: testRelayBaseUrl });
const result = await client.getUserTweetsPaged('12345', 100, {
maxPages: 5,
pageDelayMs: 0,
@@ -386,7 +386,7 @@ describe('TwitterClient getUserTweetsPaged', () => {
]),
});
const client = new TwitterClient({ cookies: validCookies });
const client = new TwitterClient({ relayBaseUrl: testRelayBaseUrl });
const result = await client.getUserTweetsPaged('12345', 40, {
maxPages: 2,
pageDelayMs: 0,
@@ -404,7 +404,7 @@ describe('TwitterClient getUserTweetsPaged', () => {
json: async () => makeTimelineResponse([makeTweetResult('5', 'Resumed Tweet')]),
});
const client = new TwitterClient({ cookies: validCookies });
const client = new TwitterClient({ relayBaseUrl: testRelayBaseUrl });
const result = await client.getUserTweetsPaged('12345', 20, {
maxPages: 1,
cursor: 'resume-cursor-xyz',