1
- import asyncRetry from 'async-retry' ;
2
1
import { setTimeout as setTimeoutPromise } from 'timers/promises' ;
3
2
import { randomUUID } from 'crypto' ;
3
+ import asyncRetry from 'async-retry' ;
4
4
import { ExecutionContext } from 'ava' ;
5
5
import { firstValueFrom , Subject } from 'rxjs' ;
6
6
import { WorkflowFailedError , WorkflowHandle } from '@temporalio/client' ;
@@ -9,7 +9,16 @@ import { msToNumber, tsToMs } from '@temporalio/common/lib/time';
9
9
import { TestWorkflowEnvironment } from '@temporalio/testing' ;
10
10
import { CancelReason } from '@temporalio/worker/lib/activity' ;
11
11
import * as workflow from '@temporalio/workflow' ;
12
- import { condition , defineQuery , defineSignal , defineUpdate , setDefaultQueryHandler , setDefaultSignalHandler , setDefaultUpdateHandler , setHandler } from '@temporalio/workflow' ;
12
+ import {
13
+ condition ,
14
+ defineQuery ,
15
+ defineSignal ,
16
+ defineUpdate ,
17
+ setDefaultQueryHandler ,
18
+ setDefaultSignalHandler ,
19
+ setDefaultUpdateHandler ,
20
+ setHandler ,
21
+ } from '@temporalio/workflow' ;
13
22
import { SdkFlags } from '@temporalio/workflow/lib/flags' ;
14
23
import {
15
24
ActivityCancellationType ,
@@ -20,13 +29,13 @@ import {
20
29
TypedSearchAttributes ,
21
30
WorkflowExecutionAlreadyStartedError ,
22
31
} from '@temporalio/common' ;
32
+ import { reservedPrefixes } from '@temporalio/common/lib/reserved' ;
23
33
import { signalSchedulingWorkflow } from './activities/helpers' ;
24
34
import { activityStartedSignal } from './workflows/definitions' ;
25
35
import * as workflows from './workflows' ;
26
36
import { Context , createLocalTestEnvironment , helpers , makeTestFunction } from './helpers-integration' ;
27
37
import { overrideSdkInternalFlag } from './mock-internal-flags' ;
28
38
import { asSdkLoggerSink , loadHistory , RUN_TIME_SKIPPING_TESTS , waitUntil } from './helpers' ;
29
- import { reservedPrefixes } from '@temporalio/common/src/reserved' ;
30
39
31
40
const test = makeTestFunction ( {
32
41
workflowsPath : __filename ,
@@ -1493,9 +1502,18 @@ test('Workflow failure if define signals/updates/queries with reserved prefixes'
1493
1502
args : [ prefix ] ,
1494
1503
} ) ;
1495
1504
t . deepEqual ( result , [
1496
- { name : 'ReservedPrefixError' , message : `Cannot use signal name: '${ prefix } _signal', with reserved prefix: '${ prefix } '` } ,
1497
- { name : 'ReservedPrefixError' , message : `Cannot use update name: '${ prefix } _update', with reserved prefix: '${ prefix } '` } ,
1498
- { name : 'ReservedPrefixError' , message : `Cannot use query name: '${ prefix } _query', with reserved prefix: '${ prefix } '` } ,
1505
+ {
1506
+ name : 'ReservedPrefixError' ,
1507
+ message : `Cannot use signal name: '${ prefix } _signal', with reserved prefix: '${ prefix } '` ,
1508
+ } ,
1509
+ {
1510
+ name : 'ReservedPrefixError' ,
1511
+ message : `Cannot use update name: '${ prefix } _update', with reserved prefix: '${ prefix } '` ,
1512
+ } ,
1513
+ {
1514
+ name : 'ReservedPrefixError' ,
1515
+ message : `Cannot use query name: '${ prefix } _query', with reserved prefix: '${ prefix } '` ,
1516
+ } ,
1499
1517
] ) ;
1500
1518
}
1501
1519
} ) ;
@@ -1518,10 +1536,7 @@ test('Default handlers fail given reserved prefix', async (t) => {
1518
1536
const { createWorker, startWorkflow } = helpers ( t ) ;
1519
1537
const worker = await createWorker ( ) ;
1520
1538
1521
- const assertWftFailure = async (
1522
- handle : WorkflowHandle ,
1523
- errMsg : string ,
1524
- ) => {
1539
+ const assertWftFailure = async ( handle : WorkflowHandle , errMsg : string ) => {
1525
1540
await asyncRetry (
1526
1541
async ( ) => {
1527
1542
const history = await handle . fetchHistory ( ) ;
@@ -1541,27 +1556,27 @@ test('Default handlers fail given reserved prefix', async (t) => {
1541
1556
1542
1557
await worker . runUntil ( async ( ) => {
1543
1558
for ( const prefix of reservedPrefixes ) {
1544
-
1545
1559
// Reserved query
1546
1560
let handle = await startWorkflow ( workflowWithDefaultHandlers ) ;
1547
1561
const queryName = `${ prefix } _query` ;
1548
- await t . throwsAsync ( handle . query ( queryName , { timeout : 1000 } ) , {
1549
- // ReservedPrefixError transforms to a QueryNotRegisteredError on the way back from server
1550
- name : 'QueryNotRegisteredError' ,
1551
- message : `Cannot use query name: '${ queryName } ', with reserved prefix: '${ prefix } '` ,
1552
- } , `Query ${ queryName } should fail` ) ;
1562
+ await t . throwsAsync (
1563
+ handle . query ( queryName , { timeout : 1000 } ) ,
1564
+ {
1565
+ // ReservedPrefixError transforms to a QueryNotRegisteredError on the way back from server
1566
+ name : 'QueryNotRegisteredError' ,
1567
+ message : `Cannot use query name: '${ queryName } ', with reserved prefix: '${ prefix } '` ,
1568
+ } ,
1569
+ `Query ${ queryName } should fail`
1570
+ ) ;
1553
1571
await handle . terminate ( ) ;
1554
-
1555
1572
1556
-
1557
1573
// Reserved signal
1558
1574
handle = await startWorkflow ( workflowWithDefaultHandlers ) ;
1559
1575
const signalName = `${ prefix } _signal` ;
1560
1576
await handle . signal ( signalName ) ;
1561
1577
await assertWftFailure ( handle , `Cannot use signal name: '${ signalName } ', with reserved prefix: '${ prefix } '` ) ;
1562
1578
await handle . terminate ( ) ;
1563
-
1564
-
1579
+
1565
1580
// Reserved update
1566
1581
handle = await startWorkflow ( workflowWithDefaultHandlers ) ;
1567
1582
const updateName = `${ prefix } _update` ;
@@ -1574,4 +1589,4 @@ test('Default handlers fail given reserved prefix', async (t) => {
1574
1589
await handle . terminate ( ) ;
1575
1590
}
1576
1591
} ) ;
1577
- } ) ;
1592
+ } ) ;
0 commit comments