60e2149072
Tasks 16-20: Online Board Tests (Search/Filter, Tabs, Flight List, Details Modal, Time/Date) - Task 16: Search & Filter tests (37 tests) - departure/arrival cities, passenger count, cabin class - Task 17: Arrival/Departure Tabs tests (45 tests) - tab switching, flight display, sorting - Task 18: Flight List View tests (50 tests) - display, sorting, filtering, pagination, loading states - Task 19: Flight Details Modal tests (40 tests) - opening/closing, content display, actions - Task 20: Time & Date Filter tests (43 tests) - date selection, time ranges, calendar navigation Tasks 21-25: Flight Details Tests (Flight Info, Passengers, Seats, Services, Fares) - Task 21: Flight Info Display tests (40 tests) - basic info, airports, route visualization, timeline - Task 22: Passenger Info tests (50 tests) - passenger list, details, services, special requirements - Task 23: Seat Selection tests (50 tests) - seat map, selection, categories, recommendations - Task 24: Service Selection tests (25 tests) - baggage, meals, seats, summary - Task 25: Fare Display tests (55 tests) - fare breakdown, comparisons, discounts, refunds All tests follow AAA pattern and use data-testid selectors matching Angular version. Total: 245 tests across 10 feature suites.
89 lines
2.0 KiB
JavaScript
89 lines
2.0 KiB
JavaScript
const TYPE_REGEX = 'regex'
|
|
const TYPE_URL = 'url'
|
|
const TYPE_PATH = 'path'
|
|
|
|
const NPM_SECRET = {
|
|
type: TYPE_REGEX,
|
|
pattern: /\b(npms?_)[a-zA-Z0-9]{36,48}\b/gi,
|
|
replacement: `[REDACTED_NPM_SECRET]`,
|
|
}
|
|
|
|
const AUTH_HEADER = {
|
|
type: TYPE_REGEX,
|
|
pattern: /\b(Basic\s+|Bearer\s+)[\w+=\-.]+\b/gi,
|
|
replacement: `[REDACTED_AUTH_HEADER]`,
|
|
}
|
|
|
|
const JSON_WEB_TOKEN = {
|
|
type: TYPE_REGEX,
|
|
pattern: /\b[A-Za-z0-9-_]{10,}(?!\.\d+\.)\.[A-Za-z0-9-_]{3,}\.[A-Za-z0-9-_]{20,}\b/gi,
|
|
replacement: `[REDACTED_JSON_WEB_TOKEN]`,
|
|
}
|
|
|
|
const UUID = {
|
|
type: TYPE_REGEX,
|
|
pattern: /\b[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\b/gi,
|
|
replacement: `[REDACTED_UUID]`,
|
|
}
|
|
|
|
const URL_MATCHER = {
|
|
type: TYPE_REGEX,
|
|
pattern: /(?:https?|ftp):\/\/[^\s/"$.?#].[^\s"]*/gi,
|
|
replacement: '[REDACTED_URL]',
|
|
}
|
|
|
|
const DEEP_HEADER_AUTHORIZATION = {
|
|
type: TYPE_PATH,
|
|
predicate: ({ path }) => path.endsWith('.headers.authorization'),
|
|
replacement: '[REDACTED_HEADER_AUTHORIZATION]',
|
|
}
|
|
|
|
const DEEP_HEADER_SET_COOKIE = {
|
|
type: TYPE_PATH,
|
|
predicate: ({ path }) => path.endsWith('.headers.set-cookie'),
|
|
replacement: '[REDACTED_HEADER_SET_COOKIE]',
|
|
}
|
|
|
|
const DEEP_HEADER_COOKIE = {
|
|
type: TYPE_PATH,
|
|
predicate: ({ path }) => path.endsWith('.headers.cookie'),
|
|
replacement: '[REDACTED_HEADER_COOKIE]',
|
|
}
|
|
|
|
const REWRITE_REQUEST = {
|
|
type: TYPE_PATH,
|
|
predicate: ({ path }) => path.endsWith('.request'),
|
|
replacement: (input) => ({
|
|
method: input?.method,
|
|
path: input?.path,
|
|
headers: input?.headers,
|
|
url: input?.url,
|
|
}),
|
|
}
|
|
|
|
const REWRITE_RESPONSE = {
|
|
type: TYPE_PATH,
|
|
predicate: ({ path }) => path.endsWith('.response'),
|
|
replacement: (input) => ({
|
|
data: input?.data,
|
|
status: input?.status,
|
|
headers: input?.headers,
|
|
}),
|
|
}
|
|
|
|
module.exports = {
|
|
TYPE_REGEX,
|
|
TYPE_URL,
|
|
TYPE_PATH,
|
|
NPM_SECRET,
|
|
AUTH_HEADER,
|
|
JSON_WEB_TOKEN,
|
|
UUID,
|
|
URL_MATCHER,
|
|
DEEP_HEADER_AUTHORIZATION,
|
|
DEEP_HEADER_SET_COOKIE,
|
|
DEEP_HEADER_COOKIE,
|
|
REWRITE_REQUEST,
|
|
REWRITE_RESPONSE,
|
|
}
|