mirror of
https://github.com/hanzoai/tasks.git
synced 2026-11-03 03:56:04 +00:00
## 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)
80 lines
2.1 KiB
Go
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)
|
|
}
|
|
})
|
|
}
|
|
}
|