mirror of
https://github.com/empayre/fleet.git
synced 2024-11-06 17:05:18 +00:00
93 lines
2.5 KiB
Go
93 lines
2.5 KiB
Go
package mysql
|
|
|
|
import (
|
|
"context"
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/fleetdm/fleet/v4/server/fleet"
|
|
"github.com/fleetdm/fleet/v4/server/ptr"
|
|
"github.com/fleetdm/fleet/v4/server/test"
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestDelete(t *testing.T) {
|
|
ds := CreateMySQLDS(t)
|
|
|
|
cases := []struct {
|
|
name string
|
|
fn func(t *testing.T, ds *Datastore)
|
|
}{
|
|
{"Entity", testDeleteEntity},
|
|
{"EntityByName", testDeleteEntityByName},
|
|
{"Entities", testDeleteEntities},
|
|
}
|
|
for _, c := range cases {
|
|
t.Run(c.name, func(t *testing.T) {
|
|
c.fn(t, ds)
|
|
})
|
|
}
|
|
}
|
|
|
|
func testDeleteEntity(t *testing.T, ds *Datastore) {
|
|
defer TruncateTables(t, ds)
|
|
|
|
host, err := ds.NewHost(context.Background(), &fleet.Host{
|
|
DetailUpdatedAt: time.Now(),
|
|
LabelUpdatedAt: time.Now(),
|
|
PolicyUpdatedAt: time.Now(),
|
|
SeenTime: time.Now(),
|
|
NodeKey: ptr.String(t.Name() + "1"),
|
|
UUID: t.Name() + "1",
|
|
OsqueryHostID: ptr.String(t.Name()),
|
|
Hostname: t.Name() + "foo.local",
|
|
PrimaryIP: "192.168.1.1",
|
|
PrimaryMac: "30-65-EC-6F-C4-58",
|
|
})
|
|
require.NoError(t, err)
|
|
require.NotNil(t, host)
|
|
|
|
require.NoError(t, ds.deleteEntity(context.Background(), hostsTable, host.ID))
|
|
|
|
host, err = ds.Host(context.Background(), host.ID)
|
|
require.Error(t, err)
|
|
assert.Nil(t, host)
|
|
}
|
|
|
|
func testDeleteEntityByName(t *testing.T, ds *Datastore) {
|
|
defer TruncateTables(t, ds)
|
|
|
|
query1 := test.NewQuery(t, ds, nil, t.Name()+"time", "select * from time", 0, true)
|
|
|
|
require.NoError(t, ds.deleteEntityByName(context.Background(), queriesTable, query1.Name))
|
|
|
|
gotQ, err := ds.Query(context.Background(), query1.ID)
|
|
require.Error(t, err)
|
|
assert.Nil(t, gotQ)
|
|
}
|
|
|
|
func testDeleteEntities(t *testing.T, ds *Datastore) {
|
|
defer TruncateTables(t, ds)
|
|
|
|
query1 := test.NewQuery(t, ds, nil, t.Name()+"time1", "select * from time", 0, true)
|
|
query2 := test.NewQuery(t, ds, nil, t.Name()+"time2", "select * from time", 0, true)
|
|
query3 := test.NewQuery(t, ds, nil, t.Name()+"time3", "select * from time", 0, true)
|
|
|
|
count, err := ds.deleteEntities(context.Background(), queriesTable, []uint{query1.ID, query2.ID})
|
|
require.NoError(t, err)
|
|
assert.Equal(t, uint(2), count)
|
|
|
|
gotQ, err := ds.Query(context.Background(), query1.ID)
|
|
require.Error(t, err)
|
|
assert.Nil(t, gotQ)
|
|
|
|
gotQ, err = ds.Query(context.Background(), query2.ID)
|
|
require.Error(t, err)
|
|
assert.Nil(t, gotQ)
|
|
|
|
gotQ, err = ds.Query(context.Background(), query3.ID)
|
|
require.NoError(t, err)
|
|
assert.Equal(t, query3.ID, gotQ.ID)
|
|
}
|