@@ -14,9 +14,11 @@ import (
1414 "errors"
1515 "fmt"
1616 "net/http"
17+ "slices"
1718 "testing"
1819 "time"
1920
21+ "github.com/lib/pq"
2022 log "github.com/sirupsen/logrus"
2123 "github.com/stretchr/testify/assert"
2224)
@@ -357,16 +359,17 @@ func TestStoreOrUpdateSysPlatform(t *testing.T) {
357359 database .DB .Raw ("select nextval('system_inventory_id_seq')" ).Find (& nextval )
358360
359361 colsToUpdate := []string {"vmaas_json" , "json_checksum" , "reporter_id" , "satellite_managed" }
360- json := "this_is_json"
362+ vmaasJSON := "this_is_json"
361363 inStore := models.SystemPlatform {
362364 InventoryID : "99990000-0000-0000-0000-000000000001" ,
363365 RhAccountID : 1 ,
364- VmaasJSON : & json ,
366+ VmaasJSON : & vmaasJSON ,
365367 DisplayName : "display_name" ,
366368 SatelliteManaged : false ,
367369 }
368370 // insert new row
369- err := storeOrUpdateSysPlatform (database .DB , & inStore , colsToUpdate )
371+ hostEvent := createTestUploadEvent ("1" , id , "puptoo" , false , true , "created" )
372+ err := storeOrUpdateSysPlatform (database .DB , & inStore , & hostEvent .Host , colsToUpdate )
370373 assert .Nil (t , err )
371374
372375 var outStore models.SystemPlatform
@@ -378,6 +381,41 @@ func TestStoreOrUpdateSysPlatform(t *testing.T) {
378381 assert .Equal (t , * inStore .VmaasJSON , * outStore .VmaasJSON )
379382 assert .Equal (t , inStore .SatelliteManaged , outStore .SatelliteManaged )
380383
384+ // verify SystemInventory was created from Host fields
385+ var inventoryAfterInsert models.SystemInventory
386+ err = database .DB .Where ("id = ?" , inStore .ID ).First (& inventoryAfterInsert ).Error
387+ assert .Nil (t , err )
388+
389+ assert .Contains (t , string (inventoryAfterInsert .Tags ), `"namespace": "insights-client"` )
390+ assert .Contains (t , string (inventoryAfterInsert .Tags ), `"key": "env"` )
391+ assert .Contains (t , string (inventoryAfterInsert .Tags ), `"value": "prod"` )
392+
393+ expectedWorkspaces := make ([]string , len (hostEvent .Host .Groups ))
394+ for i , g := range hostEvent .Host .Groups {
395+ expectedWorkspaces [i ] = g .ID
396+ }
397+ slices .Sort (expectedWorkspaces )
398+ assert .Equal (t , pq .StringArray (expectedWorkspaces ), inventoryAfterInsert .Workspaces )
399+
400+ assert .Equal (t , hostEvent .Host .SystemProfile .OperatingSystem .Name , * inventoryAfterInsert .OSName )
401+ assert .Equal (t , hostEvent .Host .SystemProfile .OperatingSystem .Major , * inventoryAfterInsert .OSMajor )
402+ assert .Equal (t , hostEvent .Host .SystemProfile .OperatingSystem .Minor , * inventoryAfterInsert .OSMinor )
403+
404+ assert .Equal (t , hostEvent .Host .SystemProfile .Rhsm .Version , * inventoryAfterInsert .RhsmVersion )
405+
406+ assert .Equal (t , hostEvent .Host .SystemProfile .Workloads .Sap .SapSystem , inventoryAfterInsert .SapWorkload )
407+ assert .ElementsMatch (t ,
408+ pq .StringArray (hostEvent .Host .SystemProfile .Workloads .Sap .Sids ),
409+ inventoryAfterInsert .SapWorkloadSIDs )
410+
411+ assert .Equal (t , true , inventoryAfterInsert .AnsibleWorkload )
412+ assert .Equal (t ,
413+ hostEvent .Host .SystemProfile .Workloads .Ansible .ControllerVersion ,
414+ * inventoryAfterInsert .AnsibleWorkloadControllerVersion )
415+
416+ assert .Equal (t , true , inventoryAfterInsert .MssqlWorkload )
417+ assert .Equal (t , hostEvent .Host .SystemProfile .Workloads .Mssql .Version , * inventoryAfterInsert .MssqlWorkloadVersion )
418+
381419 updateJSON := "updated_json"
382420 reporter := 2
383421 inUpdate := outStore
@@ -388,7 +426,7 @@ func TestStoreOrUpdateSysPlatform(t *testing.T) {
388426 inUpdate .SatelliteManaged = true
389427
390428 // update row
391- err = storeOrUpdateSysPlatform (database .DB , & inUpdate , colsToUpdate )
429+ err = storeOrUpdateSysPlatform (database .DB , & inUpdate , & hostEvent . Host , colsToUpdate )
392430 assert .Nil (t , err )
393431
394432 var outUpdate models.SystemPlatform
0 commit comments