TF-33374 Add notification configurations project subscribable type#1350
Conversation
There was a problem hiding this comment.
Pull request overview
Adds Project as a third subscribable type for notification configurations, alongside the existing Workspace and Team options. Routing in List/Create now dispatches to projects/{id}/notification-configurations, and validation returns ErrInvalidProjectID when the project ID is invalid.
Changes:
- Add
Projectfield toNotificationConfigurationSubscribableChoiceand refactorList,Create, andvalid()to dispatch on project as well as team/workspace. - Add
createProjectNotificationConfigurationtest helper mirroring the team helper. - Add integration tests for List, Create, Read, Update, Delete, and Verify scoped to projects (gated by
skipUnlessBeta).
Reviewed changes
Copilot reviewed 3 out of 3 changed files in this pull request and generated no comments.
| File | Description |
|---|---|
| notification_configuration.go | Add Project subscribable choice, route URLs and validation for project-scoped notification configurations |
| helper_test.go | New createProjectNotificationConfiguration test helper |
| notification_configuration_integration_test.go | Integration tests for project-scoped notification configuration operations |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
b3ad810 to
38b15c8
Compare
60e2435 to
38b15c8
Compare
| _, err := client.NotificationConfigurations.Verify(ctx, badIdentifier) | ||
| assert.Equal(t, err, ErrInvalidNotificationConfigID) | ||
| }) | ||
| } |
There was a problem hiding this comment.
unrelated stack tests are failing
There was a problem hiding this comment.
=== Failed
=== FAIL: . TestStackDeploymentStepsList/List_without_options (0.74s)
stack_deployment_steps_integration_test.go:72:
Error Trace: /home/runner/work/go-tfe/go-tfe/stack_deployment_steps_integration_test.go:72
/home/runner/go/pkg/mod/github.com/!data!dog/dd-trace-go/v2@v2.8.2/internal/civisibility/integrations/gotesting/instrumentation_orchestrion.go:335
/home/runner/go/pkg/mod/github.com/!data!dog/dd-trace-go/v2@v2.8.2/internal/civisibility/integrations/gotesting/instrumentation_orchestrion.go:339
Error: Should NOT be empty, but was []
Test: TestStackDeploymentStepsList/List_without_options
=== FAIL: . TestStackDeploymentStepsList/List_with_pagination (0.74s)
stack_deployment_steps_integration_test.go:95:
Error Trace: /home/runner/work/go-tfe/go-tfe/stack_deployment_steps_integration_test.go:95
/home/runner/go/pkg/mod/github.com/!data!dog/dd-trace-go/v2@v2.8.2/internal/civisibility/integrations/gotesting/instrumentation_orchestrion.go:335
/home/runner/go/pkg/mod/github.com/!data!dog/dd-trace-go/v2@v2.8.2/internal/civisibility/integrations/gotesting/instrumentation_orchestrion.go:339
Error: Should NOT be empty, but was []
Test: TestStackDeploymentStepsList/List_with_pagination
=== FAIL: . TestStackDeploymentStepsList (43.46s)
stack_deployment_steps_integration_test.go:44: Polling stack "st-RK1PHSQeQF1T71cv" for deployment groups with deadline of 2026-06-01 20:58:14.024725989 +0000 UTC m=+592.711553079
stack_deployment_steps_integration_test.go:44: ...
stack_deployment_steps_integration_test.go:44: Stack "st-RK1PHSQeQF1T71cv" had 0 deployment groups
stack_deployment_steps_integration_test.go:44: ...
stack_deployment_steps_integration_test.go:44: Stack "st-RK1PHSQeQF1T71cv" had 0 deployment groups
stack_deployment_steps_integration_test.go:44: ...
stack_deployment_steps_integration_test.go:44: Stack "st-RK1PHSQeQF1T71cv" had 0 deployment groups
stack_deployment_steps_integration_test.go:44: ...
stack_deployment_steps_integration_test.go:44: Stack "st-RK1PHSQeQF1T71cv" had 0 deployment groups
stack_deployment_steps_integration_test.go:44: ...
stack_deployment_steps_integration_test.go:44: Stack "st-RK1PHSQeQF1T71cv" had 0 deployment groups
stack_deployment_steps_integration_test.go:44: ...
stack_deployment_steps_integration_test.go:44: Stack "st-RK1PHSQeQF1T71cv" had 0 deployment groups
stack_deployment_steps_integration_test.go:44: ...
stack_deployment_steps_integration_test.go:44: Stack "st-RK1PHSQeQF1T71cv" had 0 deployment groups
stack_deployment_steps_integration_test.go:44: ...
stack_deployment_steps_integration_test.go:44: Stack "st-RK1PHSQeQF1T71cv" had 0 deployment groups
stack_deployment_steps_integration_test.go:44: ...
stack_deployment_steps_integration_test.go:44: Stack "st-RK1PHSQeQF1T71cv" had 0 deployment groups
stack_deployment_steps_integration_test.go:44: ...
stack_deployment_steps_integration_test.go:44: Stack "st-RK1PHSQeQF1T71cv" had 0 deployment groups
stack_deployment_steps_integration_test.go:44: ...
stack_deployment_steps_integration_test.go:44: Stack "st-RK1PHSQeQF1T71cv" had 0 deployment groups
stack_deployment_steps_integration_test.go:44: ...
stack_deployment_steps_integration_test.go:44: Stack "st-RK1PHSQeQF1T71cv" had 0 deployment groups
stack_deployment_steps_integration_test.go:44: ...
stack_deployment_steps_integration_test.go:44: Stack "st-RK1PHSQeQF1T71cv" had 0 deployment groups
stack_deployment_steps_integration_test.go:44: ...
stack_deployment_steps_integration_test.go:44: Stack "st-RK1PHSQeQF1T71cv" had 0 deployment groups
stack_deployment_steps_integration_test.go:44: ...
stack_deployment_steps_integration_test.go:44: Stack "st-RK1PHSQeQF1T71cv" had 0 deployment groups
stack_deployment_steps_integration_test.go:44: ...
stack_deployment_steps_integration_test.go:44: Stack "st-RK1PHSQeQF1T71cv" had 0 deployment groups
stack_deployment_steps_integration_test.go:44: ...
stack_deployment_steps_integration_test.go:44: Stack "st-RK1PHSQeQF1T71cv" had 0 deployment groups
stack_deployment_steps_integration_test.go:44: ...
stack_deployment_steps_integration_test.go:44: Stack "st-RK1PHSQeQF1T71cv" had 2 deployment groups
=== FAIL: . TestStackDeploymentStepsList/List_without_options (re-run 1) (0.62s)
stack_deployment_steps_integration_test.go:72:
Error Trace: /home/runner/work/go-tfe/go-tfe/stack_deployment_steps_integration_test.go:72
/home/runner/go/pkg/mod/github.com/!data!dog/dd-trace-go/v2@v2.8.2/internal/civisibility/integrations/gotesting/instrumentation_orchestrion.go:335
/home/runner/go/pkg/mod/github.com/!data!dog/dd-trace-go/v2@v2.8.2/internal/civisibility/integrations/gotesting/instrumentation_orchestrion.go:339
Error: Should NOT be empty, but was []
Test: TestStackDeploymentStepsList/List_without_options
=== FAIL: . TestStackDeploymentStepsList (re-run 1) (37.55s)
stack_deployment_steps_integration_test.go:44: Polling stack "st-KrM1Crr13AFQcRjF" for deployment groups with deadline of 2026-06-01 20:59:12.845324689 +0000 UTC m=+304.805704318
stack_deployment_steps_integration_test.go:44: ...
stack_deployment_steps_integration_test.go:44: Stack "st-KrM1Crr13AFQcRjF" had 0 deployment groups
stack_deployment_steps_integration_test.go:44: ...
stack_deployment_steps_integration_test.go:44: Stack "st-KrM1Crr13AFQcRjF" had 0 deployment groups
stack_deployment_steps_integration_test.go:44: ...
stack_deployment_steps_integration_test.go:44: Stack "st-KrM1Crr13AFQcRjF" had 0 deployment groups
stack_deployment_steps_integration_test.go:44: ...
stack_deployment_steps_integration_test.go:44: Stack "st-KrM1Crr13AFQcRjF" had 0 deployment groups
stack_deployment_steps_integration_test.go:44: ...
stack_deployment_steps_integration_test.go:44: Stack "st-KrM1Crr13AFQcRjF" had 0 deployment groups
stack_deployment_steps_integration_test.go:44: ...
stack_deployment_steps_integration_test.go:44: Stack "st-KrM1Crr13AFQcRjF" had 0 deployment groups
stack_deployment_steps_integration_test.go:44: ...
stack_deployment_steps_integration_test.go:44: Stack "st-KrM1Crr13AFQcRjF" had 0 deployment groups
stack_deployment_steps_integration_test.go:44: ...
stack_deployment_steps_integration_test.go:44: Stack "st-KrM1Crr13AFQcRjF" had 0 deployment groups
stack_deployment_steps_integration_test.go:44: ...
stack_deployment_steps_integration_test.go:44: Stack "st-KrM1Crr13AFQcRjF" had 0 deployment groups
stack_deployment_steps_integration_test.go:44: ...
stack_deployment_steps_integration_test.go:44: Stack "st-KrM1Crr13AFQcRjF" had 0 deployment groups
stack_deployment_steps_integration_test.go:44: ...
stack_deployment_steps_integration_test.go:44: Stack "st-KrM1Crr13AFQcRjF" had 0 deployment groups
stack_deployment_steps_integration_test.go:44: ...
stack_deployment_steps_integration_test.go:44: Stack "st-KrM1Crr13AFQcRjF" had 0 deployment groups
stack_deployment_steps_integration_test.go:44: ...
stack_deployment_steps_integration_test.go:44: Stack "st-KrM1Crr13AFQcRjF" had 0 deployment groups
stack_deployment_steps_integration_test.go:44: ...
stack_deployment_steps_integration_test.go:44: Stack "st-KrM1Crr13AFQcRjF" had 0 deployment groups
stack_deployment_steps_integration_test.go:44: ...
stack_deployment_steps_integration_test.go:44: Stack "st-KrM1Crr13AFQcRjF" had 0 deployment groups
stack_deployment_steps_integration_test.go:44: ...
stack_deployment_steps_integration_test.go:44: Stack "st-KrM1Crr13AFQcRjF" had 2 deployment groups
=== FAIL: . TestStackDeploymentStepsList/List_with_pagination (re-run 1) (0.70s)
stack_deployment_steps_integration_test.go:95:
Error Trace: /home/runner/work/go-tfe/go-tfe/stack_deployment_steps_integration_test.go:95
/home/runner/go/pkg/mod/github.com/!data!dog/dd-trace-go/v2@v2.8.2/internal/civisibility/integrations/gotesting/instrumentation_orchestrion.go:335
/home/runner/go/pkg/mod/github.com/!data!dog/dd-trace-go/v2@v2.8.2/internal/civisibility/integrations/gotesting/instrumentation_orchestrion.go:339
Error: Should NOT be empty, but was []
Test: TestStackDeploymentStepsList/List_with_pagination
=== FAIL: . TestStackDeploymentStepsList (re-run 1) (43.27s)
stack_deployment_steps_integration_test.go:44: Polling stack "st-MnnfmxGH3L2qTNjm" for deployment groups with deadline of 2026-06-01 20:59:57.533612579 +0000 UTC m=+304.158465871
stack_deployment_steps_integration_test.go:44: ...
stack_deployment_steps_integration_test.go:44: Stack "st-MnnfmxGH3L2qTNjm" had 0 deployment groups
stack_deployment_steps_integration_test.go:44: ...
stack_deployment_steps_integration_test.go:44: Stack "st-MnnfmxGH3L2qTNjm" had 0 deployment groups
stack_deployment_steps_integration_test.go:44: ...
stack_deployment_steps_integration_test.go:44: Stack "st-MnnfmxGH3L2qTNjm" had 0 deployment groups
stack_deployment_steps_integration_test.go:44: ...
stack_deployment_steps_integration_test.go:44: Stack "st-MnnfmxGH3L2qTNjm" had 0 deployment groups
stack_deployment_steps_integration_test.go:44: ...
stack_deployment_steps_integration_test.go:44: Stack "st-MnnfmxGH3L2qTNjm" had 0 deployment groups
stack_deployment_steps_integration_test.go:44: ...
stack_deployment_steps_integration_test.go:44: Stack "st-MnnfmxGH3L2qTNjm" had 0 deployment groups
stack_deployment_steps_integration_test.go:44: ...
stack_deployment_steps_integration_test.go:44: Stack "st-MnnfmxGH3L2qTNjm" had 0 deployment groups
stack_deployment_steps_integration_test.go:44: ...
stack_deployment_steps_integration_test.go:44: Stack "st-MnnfmxGH3L2qTNjm" had 0 deployment groups
stack_deployment_steps_integration_test.go:44: ...
stack_deployment_steps_integration_test.go:44: Stack "st-MnnfmxGH3L2qTNjm" had 0 deployment groups
stack_deployment_steps_integration_test.go:44: ...
stack_deployment_steps_integration_test.go:44: Stack "st-MnnfmxGH3L2qTNjm" had 0 deployment groups
stack_deployment_steps_integration_test.go:44: ...
stack_deployment_steps_integration_test.go:44: Stack "st-MnnfmxGH3L2qTNjm" had 0 deployment groups
stack_deployment_steps_integration_test.go:44: ...
stack_deployment_steps_integration_test.go:44: Stack "st-MnnfmxGH3L2qTNjm" had 0 deployment groups
stack_deployment_steps_integration_test.go:44: ...
stack_deployment_steps_integration_test.go:44: Stack "st-MnnfmxGH3L2qTNjm" had 0 deployment groups
stack_deployment_steps_integration_test.go:44: ...
stack_deployment_steps_integration_test.go:44: Stack "st-MnnfmxGH3L2qTNjm" had 0 deployment groups
stack_deployment_steps_integration_test.go:44: ...
stack_deployment_steps_integration_test.go:44: Stack "st-MnnfmxGH3L2qTNjm" had 0 deployment groups
stack_deployment_steps_integration_test.go:44: ...
stack_deployment_steps_integration_test.go:44: Stack "st-MnnfmxGH3L2qTNjm" had 0 deployment groups
stack_deployment_steps_integration_test.go:44: ...
stack_deployment_steps_integration_test.go:44: Stack "st-MnnfmxGH3L2qTNjm" had 0 deployment groups
stack_deployment_steps_integration_test.go:44: ...
stack_deployment_steps_integration_test.go:44: Stack "st-MnnfmxGH3L2qTNjm" had 0 deployment groups
stack_deployment_steps_integration_test.go:44: ...
stack_deployment_steps_integration_test.go:44: Stack "st-MnnfmxGH3L2qTNjm" had 2 deployment groups
=== FAIL: . TestStackDeploymentStepsList/List_without_options (re-run 2) (0.71s)
stack_deployment_steps_integration_test.go:72:
Error Trace: /home/runner/work/go-tfe/go-tfe/stack_deployment_steps_integration_test.go:72
/home/runner/go/pkg/mod/github.com/!data!dog/dd-trace-go/v2@v2.8.2/internal/civisibility/integrations/gotesting/instrumentation_orchestrion.go:335
/home/runner/go/pkg/mod/github.com/!data!dog/dd-trace-go/v2@v2.8.2/internal/civisibility/integrations/gotesting/instrumentation_orchestrion.go:339
Error: Should NOT be empty, but was []
Test: TestStackDeploymentStepsList/List_without_options
=== FAIL: . TestStackDeploymentStepsList (re-run 2) (27.46s)
stack_deployment_steps_integration_test.go:44: Polling stack "st-bDNcm95TrpUxAtZ3" for deployment groups with deadline of 2026-06-01 21:00:48.860247974 +0000 UTC m=+304.481919072
stack_deployment_steps_integration_test.go:44: ...
stack_deployment_steps_integration_test.go:44: Stack "st-bDNcm95TrpUxAtZ3" had 0 deployment groups
stack_deployment_steps_integration_test.go:44: ...
stack_deployment_steps_integration_test.go:44: Stack "st-bDNcm95TrpUxAtZ3" had 0 deployment groups
stack_deployment_steps_integration_test.go:44: ...
stack_deployment_steps_integration_test.go:44: Stack "st-bDNcm95TrpUxAtZ3" had 0 deployment groups
stack_deployment_steps_integration_test.go:44: ...
stack_deployment_steps_integration_test.go:44: Stack "st-bDNcm95TrpUxAtZ3" had 0 deployment groups
stack_deployment_steps_integration_test.go:44: ...
stack_deployment_steps_integration_test.go:44: Stack "st-bDNcm95TrpUxAtZ3" had 0 deployment groups
stack_deployment_steps_integration_test.go:44: ...
stack_deployment_steps_integration_test.go:44: Stack "st-bDNcm95TrpUxAtZ3" had 0 deployment groups
stack_deployment_steps_integration_test.go:44: ...
stack_deployment_steps_integration_test.go:44: Stack "st-bDNcm95TrpUxAtZ3" had 0 deployment groups
stack_deployment_steps_integration_test.go:44: ...
stack_deployment_steps_integration_test.go:44: Stack "st-bDNcm95TrpUxAtZ3" had 0 deployment groups
stack_deployment_steps_integration_test.go:44: ...
stack_deployment_steps_integration_test.go:44: Stack "st-bDNcm95TrpUxAtZ3" had 0 deployment groups
stack_deployment_steps_integration_test.go:44: ...
stack_deployment_steps_integration_test.go:44: Stack "st-bDNcm95TrpUxAtZ3" had 0 deployment groups
stack_deployment_steps_integration_test.go:44: ...
stack_deployment_steps_integration_test.go:44: Stack "st-bDNcm95TrpUxAtZ3" had 2 deployment groups
=== FAIL: . TestStackDeploymentStepsList/List_with_pagination (re-run 2) (0.62s)
stack_deployment_steps_integration_test.go:95:
Error Trace: /home/runner/work/go-tfe/go-tfe/stack_deployment_steps_integration_test.go:95
/home/runner/go/pkg/mod/github.com/!data!dog/dd-trace-go/v2@v2.8.2/internal/civisibility/integrations/gotesting/instrumentation_orchestrion.go:335
/home/runner/go/pkg/mod/github.com/!data!dog/dd-trace-go/v2@v2.8.2/internal/civisibility/integrations/gotesting/instrumentation_orchestrion.go:339
Error: Should NOT be empty, but was []
Test: TestStackDeploymentStepsList/List_with_pagination
=== FAIL: . TestStackDeploymentStepsList (re-run 2) (30.95s)
stack_deployment_steps_integration_test.go:44: Polling stack "st-dLkRLR9oMTgEQxTb" for deployment groups with deadline of 2026-06-01 21:01:24.002831547 +0000 UTC m=+304.254364587
stack_deployment_steps_integration_test.go:44: ...
stack_deployment_steps_integration_test.go:44: Stack "st-dLkRLR9oMTgEQxTb" had 0 deployment groups
stack_deployment_steps_integration_test.go:44: ...
stack_deployment_steps_integration_test.go:44: Stack "st-dLkRLR9oMTgEQxTb" had 0 deployment groups
stack_deployment_steps_integration_test.go:44: ...
stack_deployment_steps_integration_test.go:44: Stack "st-dLkRLR9oMTgEQxTb" had 0 deployment groups
stack_deployment_steps_integration_test.go:44: ...
stack_deployment_steps_integration_test.go:44: Stack "st-dLkRLR9oMTgEQxTb" had 0 deployment groups
stack_deployment_steps_integration_test.go:44: ...
stack_deployment_steps_integration_test.go:44: Stack "st-dLkRLR9oMTgEQxTb" had 0 deployment groups
stack_deployment_steps_integration_test.go:44: ...
stack_deployment_steps_integration_test.go:44: Stack "st-dLkRLR9oMTgEQxTb" had 0 deployment groups
stack_deployment_steps_integration_test.go:44: ...
stack_deployment_steps_integration_test.go:44: Stack "st-dLkRLR9oMTgEQxTb" had 0 deployment groups
stack_deployment_steps_integration_test.go:44: ...
stack_deployment_steps_integration_test.go:44: Stack "st-dLkRLR9oMTgEQxTb" had 0 deployment groups
stack_deployment_steps_integration_test.go:44: ...
stack_deployment_steps_integration_test.go:44: Stack "st-dLkRLR9oMTgEQxTb" had 0 deployment groups
stack_deployment_steps_integration_test.go:44: ...
stack_deployment_steps_integration_test.go:44: Stack "st-dLkRLR9oMTgEQxTb" had 0 deployment groups
stack_deployment_steps_integration_test.go:44: ...
stack_deployment_steps_integration_test.go:44: Stack "st-dLkRLR9oMTgEQxTb" had 0 deployment groups
stack_deployment_steps_integration_test.go:44: ...
stack_deployment_steps_integration_test.go:44: Stack "st-dLkRLR9oMTgEQxTb" had 0 deployment groups
stack_deployment_steps_integration_test.go:44: ...
stack_deployment_steps_integration_test.go:44: Stack "st-dLkRLR9oMTgEQxTb" had 2 deployment groups
=== FAIL: . TestStackDeploymentStepsList/List_without_options (re-run 3) (0.70s)
stack_deployment_steps_integration_test.go:72:
Error Trace: /home/runner/work/go-tfe/go-tfe/stack_deployment_steps_integration_test.go:72
/home/runner/go/pkg/mod/github.com/!data!dog/dd-trace-go/v2@v2.8.2/internal/civisibility/integrations/gotesting/instrumentation_orchestrion.go:335
/home/runner/go/pkg/mod/github.com/!data!dog/dd-trace-go/v2@v2.8.2/internal/civisibility/integrations/gotesting/instrumentation_orchestrion.go:339
Error: Should NOT be empty, but was []
Test: TestStackDeploymentStepsList/List_without_options
=== FAIL: . TestStackDeploymentStepsList (re-run 3) (29.29s)
stack_deployment_steps_integration_test.go:44: Polling stack "st-nWUx5kQT1F1duZwc" for deployment groups with deadline of 2026-06-01 21:02:03.267314532 +0000 UTC m=+304.422041918
stack_deployment_steps_integration_test.go:44: ...
stack_deployment_steps_integration_test.go:44: Stack "st-nWUx5kQT1F1duZwc" had 0 deployment groups
stack_deployment_steps_integration_test.go:44: ...
stack_deployment_steps_integration_test.go:44: Stack "st-nWUx5kQT1F1duZwc" had 0 deployment groups
stack_deployment_steps_integration_test.go:44: ...
stack_deployment_steps_integration_test.go:44: Stack "st-nWUx5kQT1F1duZwc" had 0 deployment groups
stack_deployment_steps_integration_test.go:44: ...
stack_deployment_steps_integration_test.go:44: Stack "st-nWUx5kQT1F1duZwc" had 0 deployment groups
stack_deployment_steps_integration_test.go:44: ...
stack_deployment_steps_integration_test.go:44: Stack "st-nWUx5kQT1F1duZwc" had 0 deployment groups
stack_deployment_steps_integration_test.go:44: ...
stack_deployment_steps_integration_test.go:44: Stack "st-nWUx5kQT1F1duZwc" had 0 deployment groups
stack_deployment_steps_integration_test.go:44: ...
stack_deployment_steps_integration_test.go:44: Stack "st-nWUx5kQT1F1duZwc" had 0 deployment groups
stack_deployment_steps_integration_test.go:44: ...
stack_deployment_steps_integration_test.go:44: Stack "st-nWUx5kQT1F1duZwc" had 0 deployment groups
stack_deployment_steps_integration_test.go:44: ...
stack_deployment_steps_integration_test.go:44: Stack "st-nWUx5kQT1F1duZwc" had 0 deployment groups
stack_deployment_steps_integration_test.go:44: ...
stack_deployment_steps_integration_test.go:44: Stack "st-nWUx5kQT1F1duZwc" had 0 deployment groups
stack_deployment_steps_integration_test.go:44: ...
stack_deployment_steps_integration_test.go:44: Stack "st-nWUx5kQT1F1duZwc" had 0 deployment groups
stack_deployment_steps_integration_test.go:44: ...
stack_deployment_steps_integration_test.go:44: Stack "st-nWUx5kQT1F1duZwc" had 2 deployment groups
=== FAIL: . TestStackDeploymentStepsList/List_with_pagination (re-run 3) (0.71s)
stack_deployment_steps_integration_test.go:95:
Error Trace: /home/runner/work/go-tfe/go-tfe/stack_deployment_steps_integration_test.go:95
/home/runner/go/pkg/mod/github.com/!data!dog/dd-trace-go/v2@v2.8.2/internal/civisibility/integrations/gotesting/instrumentation_orchestrion.go:335
/home/runner/go/pkg/mod/github.com/!data!dog/dd-trace-go/v2@v2.8.2/internal/civisibility/integrations/gotesting/instrumentation_orchestrion.go:339
Error: Should NOT be empty, but was []
Test: TestStackDeploymentStepsList/List_with_pagination
=== FAIL: . TestStackDeploymentStepsList (re-run 3) (35.25s)
stack_deployment_steps_integration_test.go:44: Polling stack "st-rrhj3AKwyTqkVnWg" for deployment groups with deadline of 2026-06-01 21:02:40.242254525 +0000 UTC m=+304.323580915
stack_deployment_steps_integration_test.go:44: ...
stack_deployment_steps_integration_test.go:44: Stack "st-rrhj3AKwyTqkVnWg" had 0 deployment groups
stack_deployment_steps_integration_test.go:44: ...
stack_deployment_steps_integration_test.go:44: Stack "st-rrhj3AKwyTqkVnWg" had 0 deployment groups
stack_deployment_steps_integration_test.go:44: ...
stack_deployment_steps_integration_test.go:44: Stack "st-rrhj3AKwyTqkVnWg" had 0 deployment groups
stack_deployment_steps_integration_test.go:44: ...
stack_deployment_steps_integration_test.go:44: Stack "st-rrhj3AKwyTqkVnWg" had 0 deployment groups
stack_deployment_steps_integration_test.go:44: ...
stack_deployment_steps_integration_test.go:44: Stack "st-rrhj3AKwyTqkVnWg" had 0 deployment groups
stack_deployment_steps_integration_test.go:44: ...
stack_deployment_steps_integration_test.go:44: Stack "st-rrhj3AKwyTqkVnWg" had 0 deployment groups
stack_deployment_steps_integration_test.go:44: ...
stack_deployment_steps_integration_test.go:44: Stack "st-rrhj3AKwyTqkVnWg" had 0 deployment groups
stack_deployment_steps_integration_test.go:44: ...
stack_deployment_steps_integration_test.go:44: Stack "st-rrhj3AKwyTqkVnWg" had 0 deployment groups
stack_deployment_steps_integration_test.go:44: ...
stack_deployment_steps_integration_test.go:44: Stack "st-rrhj3AKwyTqkVnWg" had 0 deployment groups
stack_deployment_steps_integration_test.go:44: ...
stack_deployment_steps_integration_test.go:44: Stack "st-rrhj3AKwyTqkVnWg" had 0 deployment groups
stack_deployment_steps_integration_test.go:44: ...
stack_deployment_steps_integration_test.go:44: Stack "st-rrhj3AKwyTqkVnWg" had 0 deployment groups
stack_deployment_steps_integration_test.go:44: ...
stack_deployment_steps_integration_test.go:44: Stack "st-rrhj3AKwyTqkVnWg" had 0 deployment groups
stack_deployment_steps_integration_test.go:44: ...
stack_deployment_steps_integration_test.go:44: Stack "st-rrhj3AKwyTqkVnWg" had 0 deployment groups
stack_deployment_steps_integration_test.go:44: ...
stack_deployment_steps_integration_test.go:44: Stack "st-rrhj3AKwyTqkVnWg" had 0 deployment groups
stack_deployment_steps_integration_test.go:44: ...
stack_deployment_steps_integration_test.go:44: Stack "st-rrhj3AKwyTqkVnWg" had 2 deployment groups
DONE 4 runs, 202 tests, 9 skipped, 15 failures in 590.707s
There was a problem hiding this comment.
=== Failed
=== FAIL: . TestStackConfigurationDiagnostics/Diagnostics_with_valid_ID (0.15s)
stack_configuration_integration_test.go:173:
Error Trace: /home/runner/work/go-tfe/go-tfe/stack_configuration_integration_test.go:173
/home/runner/go/pkg/mod/github.com/!data!dog/dd-trace-go/v2@v2.8.2/internal/civisibility/integrations/gotesting/instrumentation_orchestrion.go:335
/home/runner/go/pkg/mod/github.com/!data!dog/dd-trace-go/v2@v2.8.2/internal/civisibility/integrations/gotesting/instrumentation_orchestrion.go:339
Error: Should NOT be empty, but was []
Test: TestStackConfigurationDiagnostics/Diagnostics_with_valid_ID
=== FAIL: . TestStackConfigurationDiagnostics (39.10s)
stack_integration_test.go:484: Polling stack configuration "stc-BiwMTyMK1iBSgsKu" for status "failed" with deadline of 2026-06-01 20:55:34.919259 +0000 UTC m=+452.122515412
stack_integration_test.go:491: ...
stack_integration_test.go:501: Stack configuration "stc-BiwMTyMK1iBSgsKu" had status "pending"
stack_integration_test.go:491: ...
stack_integration_test.go:501: Stack configuration "stc-BiwMTyMK1iBSgsKu" had status "pending"
stack_integration_test.go:491: ...
stack_integration_test.go:501: Stack configuration "stc-BiwMTyMK1iBSgsKu" had status "pending"
stack_integration_test.go:491: ...
stack_integration_test.go:501: Stack configuration "stc-BiwMTyMK1iBSgsKu" had status "pending"
stack_integration_test.go:491: ...
stack_integration_test.go:501: Stack configuration "stc-BiwMTyMK1iBSgsKu" had status "pending"
stack_integration_test.go:491: ...
stack_integration_test.go:501: Stack configuration "stc-BiwMTyMK1iBSgsKu" had status "queued"
stack_integration_test.go:491: ...
stack_integration_test.go:501: Stack configuration "stc-BiwMTyMK1iBSgsKu" had status "queued"
stack_integration_test.go:491: ...
stack_integration_test.go:501: Stack configuration "stc-BiwMTyMK1iBSgsKu" had status "queued"
stack_integration_test.go:491: ...
stack_integration_test.go:501: Stack configuration "stc-BiwMTyMK1iBSgsKu" had status "queued"
stack_integration_test.go:491: ...
stack_integration_test.go:501: Stack configuration "stc-BiwMTyMK1iBSgsKu" had status "queued"
stack_integration_test.go:491: ...
stack_integration_test.go:501: Stack configuration "stc-BiwMTyMK1iBSgsKu" had status "preparing"
stack_integration_test.go:491: ...
stack_integration_test.go:501: Stack configuration "stc-BiwMTyMK1iBSgsKu" had status "preparing"
stack_integration_test.go:491: ...
stack_integration_test.go:501: Stack configuration "stc-BiwMTyMK1iBSgsKu" had status "preparing"
stack_integration_test.go:491: ...
stack_integration_test.go:501: Stack configuration "stc-BiwMTyMK1iBSgsKu" had status "preparing"
stack_integration_test.go:491: ...
stack_integration_test.go:501: Stack configuration "stc-BiwMTyMK1iBSgsKu" had status "failed"
=== FAIL: . TestStackConfigurationDiagnostics/Diagnostics_with_valid_ID (re-run 1) (0.73s)
stack_configuration_integration_test.go:173:
Error Trace: /home/runner/work/go-tfe/go-tfe/stack_configuration_integration_test.go:173
/home/runner/go/pkg/mod/github.com/!data!dog/dd-trace-go/v2@v2.8.2/internal/civisibility/integrations/gotesting/instrumentation_orchestrion.go:335
/home/runner/go/pkg/mod/github.com/!data!dog/dd-trace-go/v2@v2.8.2/internal/civisibility/integrations/gotesting/instrumentation_orchestrion.go:339
Error: Should NOT be empty, but was []
Test: TestStackConfigurationDiagnostics/Diagnostics_with_valid_ID
=== FAIL: . TestStackConfigurationDiagnostics (re-run 1) (39.12s)
stack_integration_test.go:484: Polling stack configuration "stc-HTV88kVc4DRwWetK" for status "failed" with deadline of 2026-06-01 20:57:22.97468153 +0000 UTC m=+303.998711167
stack_integration_test.go:491: ...
stack_integration_test.go:501: Stack configuration "stc-HTV88kVc4DRwWetK" had status "pending"
stack_integration_test.go:491: ...
stack_integration_test.go:501: Stack configuration "stc-HTV88kVc4DRwWetK" had status "pending"
stack_integration_test.go:491: ...
stack_integration_test.go:501: Stack configuration "stc-HTV88kVc4DRwWetK" had status "pending"
stack_integration_test.go:491: ...
stack_integration_test.go:501: Stack configuration "stc-HTV88kVc4DRwWetK" had status "pending"
stack_integration_test.go:491: ...
stack_integration_test.go:501: Stack configuration "stc-HTV88kVc4DRwWetK" had status "pending"
stack_integration_test.go:491: ...
stack_integration_test.go:501: Stack configuration "stc-HTV88kVc4DRwWetK" had status "queued"
stack_integration_test.go:491: ...
stack_integration_test.go:501: Stack configuration "stc-HTV88kVc4DRwWetK" had status "queued"
stack_integration_test.go:491: ...
stack_integration_test.go:501: Stack configuration "stc-HTV88kVc4DRwWetK" had status "queued"
stack_integration_test.go:491: ...
stack_integration_test.go:501: Stack configuration "stc-HTV88kVc4DRwWetK" had status "queued"
stack_integration_test.go:491: ...
stack_integration_test.go:501: Stack configuration "stc-HTV88kVc4DRwWetK" had status "queued"
stack_integration_test.go:491: ...
stack_integration_test.go:501: Stack configuration "stc-HTV88kVc4DRwWetK" had status "queued"
stack_integration_test.go:491: ...
stack_integration_test.go:501: Stack configuration "stc-HTV88kVc4DRwWetK" had status "queued"
stack_integration_test.go:491: ...
stack_integration_test.go:501: Stack configuration "stc-HTV88kVc4DRwWetK" had status "preparing"
stack_integration_test.go:491: ...
stack_integration_test.go:501: Stack configuration "stc-HTV88kVc4DRwWetK" had status "preparing"
stack_integration_test.go:491: ...
stack_integration_test.go:501: Stack configuration "stc-HTV88kVc4DRwWetK" had status "preparing"
stack_integration_test.go:491: ...
stack_integration_test.go:501: Stack configuration "stc-HTV88kVc4DRwWetK" had status "failed"
=== FAIL: . TestStackConfigurationDiagnostics/Diagnostics_with_valid_ID (re-run 2) (0.11s)
stack_configuration_integration_test.go:173:
Error Trace: /home/runner/work/go-tfe/go-tfe/stack_configuration_integration_test.go:173
/home/runner/go/pkg/mod/github.com/!data!dog/dd-trace-go/v2@v2.8.2/internal/civisibility/integrations/gotesting/instrumentation_orchestrion.go:335
/home/runner/go/pkg/mod/github.com/!data!dog/dd-trace-go/v2@v2.8.2/internal/civisibility/integrations/gotesting/instrumentation_orchestrion.go:339
Error: Should NOT be empty, but was []
Test: TestStackConfigurationDiagnostics/Diagnostics_with_valid_ID
=== FAIL: . TestStackConfigurationDiagnostics (re-run 2) (32.90s)
stack_integration_test.go:484: Polling stack configuration "stc-3V5p9Spy69YfVAeM" for status "failed" with deadline of 2026-06-01 20:58:13.902900183 +0000 UTC m=+306.484112258
stack_integration_test.go:491: ...
stack_integration_test.go:501: Stack configuration "stc-3V5p9Spy69YfVAeM" had status "pending"
stack_integration_test.go:491: ...
stack_integration_test.go:501: Stack configuration "stc-3V5p9Spy69YfVAeM" had status "pending"
stack_integration_test.go:491: ...
stack_integration_test.go:501: Stack configuration "stc-3V5p9Spy69YfVAeM" had status "pending"
stack_integration_test.go:491: ...
stack_integration_test.go:501: Stack configuration "stc-3V5p9Spy69YfVAeM" had status "pending"
stack_integration_test.go:491: ...
stack_integration_test.go:501: Stack configuration "stc-3V5p9Spy69YfVAeM" had status "queued"
stack_integration_test.go:491: ...
stack_integration_test.go:501: Stack configuration "stc-3V5p9Spy69YfVAeM" had status "queued"
stack_integration_test.go:491: ...
stack_integration_test.go:501: Stack configuration "stc-3V5p9Spy69YfVAeM" had status "queued"
stack_integration_test.go:491: ...
stack_integration_test.go:501: Stack configuration "stc-3V5p9Spy69YfVAeM" had status "queued"
stack_integration_test.go:491: ...
stack_integration_test.go:501: Stack configuration "stc-3V5p9Spy69YfVAeM" had status "queued"
stack_integration_test.go:491: ...
stack_integration_test.go:501: Stack configuration "stc-3V5p9Spy69YfVAeM" had status "preparing"
stack_integration_test.go:491: ...
stack_integration_test.go:501: Stack configuration "stc-3V5p9Spy69YfVAeM" had status "preparing"
stack_integration_test.go:491: ...
stack_integration_test.go:501: Stack configuration "stc-3V5p9Spy69YfVAeM" had status "preparing"
stack_integration_test.go:491: ...
stack_integration_test.go:501: Stack configuration "stc-3V5p9Spy69YfVAeM" had status "failed"
=== FAIL: . TestStackConfigurationDiagnostics/Diagnostics_with_valid_ID (re-run 3) (0.08s)
stack_configuration_integration_test.go:173:
Error Trace: /home/runner/work/go-tfe/go-tfe/stack_configuration_integration_test.go:173
/home/runner/go/pkg/mod/github.com/!data!dog/dd-trace-go/v2@v2.8.2/internal/civisibility/integrations/gotesting/instrumentation_orchestrion.go:335
/home/runner/go/pkg/mod/github.com/!data!dog/dd-trace-go/v2@v2.8.2/internal/civisibility/integrations/gotesting/instrumentation_orchestrion.go:339
Error: Should NOT be empty, but was []
Test: TestStackConfigurationDiagnostics/Diagnostics_with_valid_ID
=== FAIL: . TestStackConfigurationDiagnostics (re-run 3) (36.48s)
stack_integration_test.go:484: Polling stack configuration "stc-xVk9QpZ7F3jSa5ey" for status "failed" with deadline of 2026-06-01 20:59:04.02696755 +0000 UTC m=+314.308419519
stack_integration_test.go:491: ...
stack_integration_test.go:501: Stack configuration "stc-xVk9QpZ7F3jSa5ey" had status "pending"
stack_integration_test.go:491: ...
stack_integration_test.go:501: Stack configuration "stc-xVk9QpZ7F3jSa5ey" had status "pending"
stack_integration_test.go:491: ...
stack_integration_test.go:501: Stack configuration "stc-xVk9QpZ7F3jSa5ey" had status "pending"
stack_integration_test.go:491: ...
stack_integration_test.go:501: Stack configuration "stc-xVk9QpZ7F3jSa5ey" had status "pending"
stack_integration_test.go:491: ...
stack_integration_test.go:501: Stack configuration "stc-xVk9QpZ7F3jSa5ey" had status "queued"
stack_integration_test.go:491: ...
stack_integration_test.go:501: Stack configuration "stc-xVk9QpZ7F3jSa5ey" had status "queued"
stack_integration_test.go:491: ...
stack_integration_test.go:501: Stack configuration "stc-xVk9QpZ7F3jSa5ey" had status "queued"
stack_integration_test.go:491: ...
stack_integration_test.go:501: Stack configuration "stc-xVk9QpZ7F3jSa5ey" had status "queued"
stack_integration_test.go:491: ...
stack_integration_test.go:501: Stack configuration "stc-xVk9QpZ7F3jSa5ey" had status "preparing"
stack_integration_test.go:491: ...
stack_integration_test.go:501: Stack configuration "stc-xVk9QpZ7F3jSa5ey" had status "preparing"
stack_integration_test.go:491: ...
stack_integration_test.go:501: Stack configuration "stc-xVk9QpZ7F3jSa5ey" had status "failed"
DONE 4 runs, 230 tests, 10 skipped, 8 failures in 383.971s
Error: Process completed with exit code 1.
a3cd5e8 to
8ace4b8
Compare
8ace4b8 to
d9e3a86
Compare
Uk1288
left a comment
There was a problem hiding this comment.
The test should be passing once you get the latest main as base.
21acbf4 to
d9e3a86
Compare
…fications-support
|
Reminder to the contributor that merged this PR: if your changes have added important functionality or fixed a relevant bug, open a follow-up PR to update CHANGELOG.md with a note on your changes. |

Description
This pull request adds support for project-level notification configurations in the Terraform Enterprise Go client. Now, notification configurations can be associated not only with workspaces and teams, but also with projects. The changes include updates to the data model, API logic, validation, and comprehensive integration tests to ensure project notification configurations are correctly handled.
Project-level notification configuration support:
Projectfield to theNotificationConfigurationSubscribableChoicestruct, allowing notification configurations to be associated with projects.NotificationConfigurationCreateOptionsstruct and related logic to accept a project as a valid subscribable choice, alongside workspace and team. [1] [2]notificationSubscribableURLandvalidateSubscribableChoicehelper functions to correctly route and validate API requests for project notification configurations.API and validation logic enhancements:
ListandCreatemethods for notification configurations to handle the new project subscribable type, ensuring correct URL generation and validation for all subscribable types. [1] [2] [3]Testing improvements:
createProjectNotificationConfigurationfor test setup.Documentation:
Testing plan
External links
Output from tests
Including output from tests may require access to a TFE instance. Ignore this section if you have no environment to test against.
Note: @organization.entitled_to?(:project_notifications) needs to be true in atlas
Rollback Plan
Changes to Security Controls