fleet/server/datastore/datastore_software.go

80 lines
2.3 KiB
Go
Raw Normal View History

package datastore
import (
"testing"
"time"
"github.com/fleetdm/fleet/server/fleet"
"github.com/fleetdm/fleet/server/test"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func testSaveHostSoftware(t *testing.T, ds fleet.Datastore) {
host1 := test.NewHost(t, ds, "host1", "", "host1key", "host1uuid", time.Now())
host2 := test.NewHost(t, ds, "host2", "", "host2key", "host2uuid", time.Now())
soft1 := fleet.HostSoftware{
Modified: true,
Software: []fleet.Software{
{Name: "foo", Version: "0.0.1", Source: "chrome_extensions"},
{Name: "foo", Version: "0.0.3", Source: "chrome_extensions"},
},
}
host1.HostSoftware = soft1
soft2 := fleet.HostSoftware{
Modified: true,
Software: []fleet.Software{
{Name: "foo", Version: "0.0.2", Source: "chrome_extensions"},
{Name: "foo", Version: "0.0.3", Source: "chrome_extensions"},
{Name: "bar", Version: "0.0.3", Source: "deb_packages"},
},
}
host2.HostSoftware = soft2
err := ds.SaveHostSoftware(host1)
require.NoError(t, err)
err = ds.SaveHostSoftware(host2)
require.NoError(t, err)
err = ds.LoadHostSoftware(host1)
require.NoError(t, err)
assert.False(t, host1.HostSoftware.Modified)
test.ElementsMatchSkipID(t, soft1.Software, host1.HostSoftware.Software)
err = ds.LoadHostSoftware(host2)
require.NoError(t, err)
assert.False(t, host2.HostSoftware.Modified)
test.ElementsMatchSkipID(t, soft2.Software, host2.HostSoftware.Software)
soft1 = fleet.HostSoftware{
Modified: true,
Software: []fleet.Software{
{Name: "foo", Version: "0.0.1", Source: "chrome_extensions"},
{Name: "foo", Version: "0.0.3", Source: "chrome_extensions"},
{Name: "towel", Version: "42.0.0", Source: "apps"},
},
}
host1.HostSoftware = soft1
soft2 = fleet.HostSoftware{
Modified: true,
Software: []fleet.Software{},
}
host2.HostSoftware = soft2
err = ds.SaveHostSoftware(host1)
require.NoError(t, err)
err = ds.SaveHostSoftware(host2)
require.NoError(t, err)
err = ds.LoadHostSoftware(host1)
require.NoError(t, err)
assert.False(t, host1.HostSoftware.Modified)
test.ElementsMatchSkipID(t, soft1.Software, host1.HostSoftware.Software)
err = ds.LoadHostSoftware(host2)
require.NoError(t, err)
assert.False(t, host2.HostSoftware.Modified)
test.ElementsMatchSkipID(t, soft2.Software, host2.HostSoftware.Software)
}