Skip to content

Commit

Permalink
Extend simple policy test case to verify data queries have RJs. Minor…
Browse files Browse the repository at this point in the history
… comments cleanup.
  • Loading branch information
preslavgerchev committed Dec 13, 2023
1 parent 0980b1e commit 7539b3a
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 10 deletions.
2 changes: 0 additions & 2 deletions policy/resolver.go
Original file line number Diff line number Diff line change
Expand Up @@ -1138,8 +1138,6 @@ func (s *LocalServices) jobsToQueries(ctx context.Context, policyMrn string, cac
Queries: map[string]*ExecutionQuery{},
}

// fill in all reporting jobs. we will remove the data query jobs and replace
// them with direct collections into their parent job later
for _, rj := range cache.reportingJobsByUUID {
collectorJob.ReportingJobs[rj.Uuid] = rj
}
Expand Down
24 changes: 16 additions & 8 deletions policy/resolver_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -132,19 +132,28 @@ policies:
{asset: "asset1", policies: []string{policyMrn("policy1")}},
}, []*policy.Bundle{b})

checkResolvedPolicy := func(t *testing.T, rp *policy.ResolvedPolicy) {
require.Len(t, rp.ExecutionJob.Queries, 3)
require.Len(t, rp.Filters, 1)
}

t.Run("resolve with correct filters", func(t *testing.T) {
rp, err := srv.Resolve(context.Background(), &policy.ResolveReq{
PolicyMrn: policyMrn("policy1"),
AssetFilters: []*explorer.Mquery{{Mql: "true"}},
})
require.NoError(t, err)
require.NotNil(t, rp)
checkResolvedPolicy(t, rp)
require.Len(t, rp.ExecutionJob.Queries, 3)
require.Len(t, rp.Filters, 1)
require.Len(t, rp.CollectorJob.ReportingJobs, 3)

qrIdToRj := map[string]*policy.ReportingJob{}
for _, rj := range rp.CollectorJob.ReportingJobs {
qrIdToRj[rj.QrId] = rj
}
// scoring queries report by code id
require.NotNil(t, qrIdToRj[b.Queries[1].CodeId])
// data queries report by mrn
require.NotNil(t, qrIdToRj[queryMrn("query1")])

require.Len(t, qrIdToRj[b.Queries[1].CodeId].Datapoints, 3)
require.Len(t, qrIdToRj[queryMrn("query1")].Datapoints, 1)
})

t.Run("resolve with many filters (one is correct)", func(t *testing.T) {
Expand Down Expand Up @@ -596,7 +605,6 @@ framework_maps:
rjTester.requireReportsTo(mrnToQueryId[queryMrn("check-pass-2")], queryMrn("check-pass-2"))
rjTester.requireReportsTo(mrnToQueryId[queryMrn("check-fail")], queryMrn("check-fail"))

// TODO: how do we get a datapoint here so we can assert this more strictly?
queryJob1 := rjTester.queryIdToReportingJob[queryMrn("active-query")]
require.Equal(t, 1, len(queryJob1.Datapoints))

Expand All @@ -607,7 +615,7 @@ framework_maps:
rjTester.requireReportsTo(queryMrn("check-pass-1"), controlMrn("control1"))
rjTester.requireReportsTo(queryMrn("check-pass-2"), controlMrn("control2"))
rjTester.requireReportsTo(queryMrn("check-fail"), controlMrn("control2"))
// data queries
// note: data queries RJs are reporting by MRN, not code id
rjTester.requireReportsTo(queryMrn("active-query"), controlMrn("control1"))
rjTester.requireReportsTo(queryMrn("active-query-2"), controlMrn("control1"))

Expand Down

0 comments on commit 7539b3a

Please sign in to comment.