From bcf66977419d8222db99c7c5e4873fe99d6568aa Mon Sep 17 00:00:00 2001 From: Tomas Touceda Date: Thu, 21 Oct 2021 15:53:23 -0300 Subject: [PATCH] Handle null resolution in host details (#2622) * Handle null resolution in host details * Add test for null resolution --- server/datastore/mysql/hosts.go | 2 +- server/datastore/mysql/policies_test.go | 10 +++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/server/datastore/mysql/hosts.go b/server/datastore/mysql/hosts.go index ef22850596..88db5feace 100644 --- a/server/datastore/mysql/hosts.go +++ b/server/datastore/mysql/hosts.go @@ -938,7 +938,7 @@ func (d *Datastore) ListPoliciesForHost(ctx context.Context, hid uint) (packs [] ELSE '' END AS response, q.description, - p.resolution + coalesce(p.resolution, '') as resolution FROM ( SELECT * FROM policy_membership_history WHERE id IN ( SELECT max(id) AS id FROM policy_membership_history WHERE host_id=? GROUP BY host_id, policy_id diff --git a/server/datastore/mysql/policies_test.go b/server/datastore/mysql/policies_test.go index 17d4e57249..293548fcc3 100644 --- a/server/datastore/mysql/policies_test.go +++ b/server/datastore/mysql/policies_test.go @@ -305,9 +305,17 @@ func testPolicyQueriesForHost(t *testing.T, ds *Datastore) { require.NoError(t, ds.RecordPolicyQueryExecutions( context.Background(), host2, map[uint]*bool{gp.ID: nil}, time.Now())) + // insert a null resolution + res, err := ds.writer.ExecContext(context.Background(), `INSERT INTO policies (query_id) VALUES (?)`, q.ID) + require.NoError(t, err) + id, err := res.LastInsertId() + require.NoError(t, err) + require.NoError(t, ds.RecordPolicyQueryExecutions( + context.Background(), host2, map[uint]*bool{uint(id): nil}, time.Now())) + policies, err = ds.ListPoliciesForHost(context.Background(), host2.ID) require.NoError(t, err) - require.Len(t, policies, 1) + require.Len(t, policies, 2) assert.Equal(t, "query1 desc", policies[0].QueryDescription) assert.Equal(t, "some gp resolution", policies[0].Resolution)