95 lines
2.4 KiB
Go
95 lines
2.4 KiB
Go
package device
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
"github.com/traggo/server/generated/gqlmodel"
|
|
"github.com/traggo/server/model"
|
|
"github.com/traggo/server/test"
|
|
"github.com/traggo/server/test/fake"
|
|
)
|
|
|
|
func TestGQL_UpdateDevice_succeeds_updatesDevice(t *testing.T) {
|
|
db := test.InMemoryDB(t)
|
|
defer db.Close()
|
|
db.Create(&model.User{
|
|
Name: "jmattheis",
|
|
ID: 1,
|
|
Admin: true,
|
|
})
|
|
db.Create(&model.Device{
|
|
Name: "old name",
|
|
ID: 1,
|
|
UserID: 1,
|
|
CreatedAt: test.Time("2009-06-30T18:30:00Z"),
|
|
ActiveAt: test.Time("2018-06-30T18:30:00Z"),
|
|
Type: model.TypeNoExpiry,
|
|
})
|
|
|
|
resolver := ResolverForDevice{DB: db.DB}
|
|
device, err := resolver.UpdateDevice(fake.User(1), 1, "updated name", gqlmodel.DeviceTypeShortExpiry)
|
|
require.Nil(t, err)
|
|
|
|
expected := &gqlmodel.Device{
|
|
Name: "updated name",
|
|
ID: 1,
|
|
CreatedAt: test.ModelTimeUTC("2009-06-30T18:30:00Z"),
|
|
ActiveAt: test.ModelTimeUTC("2018-06-30T18:30:00Z"),
|
|
Type: gqlmodel.DeviceTypeShortExpiry,
|
|
}
|
|
require.Equal(t, expected, device)
|
|
assertDeviceCount(t, db, 1)
|
|
assertDeviceExist(t, db, model.Device{
|
|
Name: "updated name",
|
|
ID: 1,
|
|
UserID: 1,
|
|
CreatedAt: test.Time("2009-06-30T18:30:00Z"),
|
|
ActiveAt: test.Time("2018-06-30T18:30:00Z"),
|
|
Type: model.TypeShortExpiry,
|
|
})
|
|
}
|
|
|
|
func TestGQL_UpdateDevice_fails_notExistingDevice(t *testing.T) {
|
|
db := test.InMemoryDB(t)
|
|
defer db.Close()
|
|
db.Create(&model.User{
|
|
Name: "jmattheis",
|
|
ID: 1,
|
|
Admin: true,
|
|
})
|
|
resolver := ResolverForDevice{DB: db.DB}
|
|
_, err := resolver.UpdateDevice(fake.User(1), 3, "tst", gqlmodel.DeviceTypeShortExpiry)
|
|
require.EqualError(t, err, "device not found")
|
|
|
|
assertDeviceCount(t, db, 0)
|
|
}
|
|
|
|
func TestGQL_UpdateDevice_fails_noPermissions(t *testing.T) {
|
|
db := test.InMemoryDB(t)
|
|
defer db.Close()
|
|
db.Create(&model.User{
|
|
Name: "jmattheis",
|
|
ID: 1,
|
|
Admin: true,
|
|
})
|
|
db.Create(&model.User{
|
|
Name: "broderp",
|
|
ID: 2,
|
|
Admin: true,
|
|
})
|
|
db.Create(&model.Device{
|
|
Name: "old name",
|
|
ID: 66,
|
|
UserID: 2,
|
|
CreatedAt: test.Time("2009-06-30T18:30:00Z"),
|
|
ActiveAt: test.Time("2018-06-30T18:30:00Z"),
|
|
Type: model.TypeNoExpiry,
|
|
})
|
|
resolver := ResolverForDevice{DB: db.DB}
|
|
_, err := resolver.UpdateDevice(fake.User(1), 66, "tst", gqlmodel.DeviceTypeNoExpiry)
|
|
require.EqualError(t, err, "device not found")
|
|
|
|
assertDeviceCount(t, db, 1)
|
|
}
|