Add team assignment checks to APIs that do label association (#37246)
Resolves #37104 ## Testing - [X] Added/updated automated tests - [X] Where appropriate, [automated tests simulate multiple hosts and test for host isolation](https://github.com/fleetdm/fleet/blob/main/docs/Contributing/reference/patterns-backend.md#unit-testing) (updates to one hosts's records do not affect another) - [ ] QA'd all new/changed functionality manually <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Label validation now enforces team-context constraints for policies, queries, and MDM profiles. * Global policies now verify label validity before creation. * **Bug Fixes** * Improved label association verification in team-specific configurations. * **Tests** * Added comprehensive test coverage for team label associations, including label scoping validation and team deletion scenarios. <sub>✏️ Tip: You can customize this high-level summary in your review settings.</sub> <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Co-authored-by: Ian Littman <iansltx@gmail.com>
This commit is contained in:
co-authored by
Ian Littman
parent
a5b2e911d6
commit
554f268768
@@ -2675,6 +2675,20 @@ func TestGitOpsCustomSettings(t *testing.T) {
|
||||
}
|
||||
return ret, nil
|
||||
}
|
||||
ds.LabelsByNameFunc = func(ctx context.Context, names []string) (map[string]*fleet.Label, error) {
|
||||
// for this test, recognize labels A, B and C (as well as the built-in macos 14+ one)
|
||||
ret := make(map[string]*fleet.Label)
|
||||
for _, lbl := range names {
|
||||
id, ok := labelToIDs[lbl]
|
||||
if ok {
|
||||
ret[lbl] = &fleet.Label{
|
||||
ID: id,
|
||||
Name: lbl,
|
||||
}
|
||||
}
|
||||
}
|
||||
return ret, nil
|
||||
}
|
||||
ds.SetTeamVPPAppsFunc = func(ctx context.Context, teamID *uint, adamIDs []fleet.VPPAppTeam, _ map[string]uint) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -551,6 +551,18 @@ func TestGitOpsTeamVPPApps(t *testing.T) {
|
||||
}
|
||||
return found, nil
|
||||
}
|
||||
ds.LabelsByNameFunc = func(ctx context.Context, names []string) (map[string]*fleet.Label, error) {
|
||||
found2 := make(map[string]*fleet.Label)
|
||||
for _, l := range names {
|
||||
if id, ok := c.expectedLabels[l]; ok {
|
||||
found2[l] = &fleet.Label{
|
||||
ID: id,
|
||||
Name: l,
|
||||
}
|
||||
}
|
||||
}
|
||||
return found2, nil
|
||||
}
|
||||
ds.GetCertificateTemplatesByTeamIDFunc = func(ctx context.Context, teamID uint, options fleet.ListOptions) ([]*fleet.CertificateTemplateResponseSummary, *fleet.PaginationMetadata, error) {
|
||||
return []*fleet.CertificateTemplateResponseSummary{}, &fleet.PaginationMetadata{}, nil
|
||||
}
|
||||
@@ -565,6 +577,7 @@ func TestGitOpsTeamVPPApps(t *testing.T) {
|
||||
require.NoError(t, err)
|
||||
if len(c.expectedLabels) > 0 {
|
||||
require.True(t, ds.LabelIDsByNameFuncInvoked)
|
||||
require.True(t, ds.LabelsByNameFuncInvoked)
|
||||
}
|
||||
|
||||
require.Equal(t, c.expectedLabels, found)
|
||||
|
||||
Reference in New Issue
Block a user