Files
tasks/common/primitives/task_queues_test.go
feiyangandGitHub eb993c5800 block per-ns-tq from external users - workflow section (#9126)
## What changed?
block external users using internal temporal-sys-per-ns-tq workers
through triggering workflows. related features are start-workflows (+cron), signal-with-start, multi-option,
child-workflows, continue-as-new workflows, and schedulers.

## Why
enhanced resilience of the cluster

## How did you test it?
- [x] built
- [x] run locally and tested manually
- [x] covered by existing tests
- [x] added new unit test(s)
- [x] added new functional test(s)

## Potential risks
side-effects on legal system workflows/activities -> covered by
regression testing (either unit or functional)
2026-02-03 05:55:20 +00:00

80 lines
2.1 KiB
Go

package primitives
import (
"testing"
"github.com/stretchr/testify/require"
"go.temporal.io/api/serviceerror"
)
func TestCheckInternalTaskQueueForUserNsAllowed(t *testing.T) {
tests := []struct {
name string
parentTaskQueue string
targetTaskQueue string
wantErr bool
}{
{
name: "Child is internal, parent is internal - allowed",
parentTaskQueue: PerNSWorkerTaskQueue,
targetTaskQueue: PerNSWorkerTaskQueue,
wantErr: false,
},
{
name: "Child is internal, parent is user task queue - error",
parentTaskQueue: "my-custom-task-queue",
targetTaskQueue: PerNSWorkerTaskQueue,
wantErr: true,
},
{
name: "Child is internal, parent is empty - error",
parentTaskQueue: "",
targetTaskQueue: PerNSWorkerTaskQueue,
wantErr: true,
},
{
name: "Child is not internal, parent is internal - allowed",
parentTaskQueue: PerNSWorkerTaskQueue,
targetTaskQueue: DefaultWorkerTaskQueue,
wantErr: false,
},
{
name: "Child is user task queue, parent is user task queue - allowed",
parentTaskQueue: "my-custom-task-queue",
targetTaskQueue: "another-custom-task-queue",
wantErr: false,
},
{
name: "Child is not internal, parent is empty - allowed, this method logic doesn't check for empty string",
parentTaskQueue: "",
targetTaskQueue: DefaultWorkerTaskQueue,
wantErr: false,
},
{
name: "Child is empty, parent is internal - not allowed",
parentTaskQueue: PerNSWorkerTaskQueue,
targetTaskQueue: "",
wantErr: true,
},
{
name: "Both empty - error",
parentTaskQueue: "",
targetTaskQueue: "",
wantErr: true,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
err := CheckInternalPerNsTaskQueueAllowed(tt.targetTaskQueue, tt.parentTaskQueue)
if tt.wantErr {
require.Error(t, err)
var invalidArgument *serviceerror.InvalidArgument
require.ErrorAs(t, err, &invalidArgument)
} else {
require.NoError(t, err)
}
})
}
}