tests/enrollment_reregistration_test.go
Rama master · réplica de lectura del repositorio original.
package main
import (
"testing"
"github.com/shellhub-io/shellhub/pkg/api/requests"
"github.com/shellhub-io/shellhub/pkg/models"
"github.com/shellhub-io/shellhub/tests/environment"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func testReRegistration(t *testing.T, compose *environment.DockerCompose) {
t.Helper()
t.Run("a removed device re-registers through its key with the key's current tags and ephemeral setting", func(t *testing.T) {
key := compose.CreateProvisioningKey(t, &requests.CreateProvisioningKey{
Name: "reregistered",
Mode: string(models.ProvisioningKeyModeAutomatic),
Tags: []string{"enrolled"},
})
req := newKeyedDeviceAuthRequest(t, key.Key, "reregistered", "02:00:00:00:50:01")
enrolled := enroll(t, compose, req)
require.Equal(t, models.DeviceStatusAccepted, enrolled.Status)
require.False(t, enrolled.Ephemeral)
compose.DeleteDevice(t, enrolled.UID)
require.Equal(t, models.DeviceStatusRemoved, requireDevice(t, compose, enrolled.UID).Status)
compose.UpdateProvisioningKey(t, "reregistered", map[string]any{
"tags": []string{"reenrolled"},
"ephemeral": true,
"ephemeral_timeout": 4,
})
reregistered := enroll(t, compose, req)
assert.Equal(t, enrolled.UID, reregistered.UID)
assert.Equal(t, models.DeviceStatusAccepted, reregistered.Status)
assert.Equal(t, key.ID, reregistered.ProvisioningKeyID)
assert.ElementsMatch(t, []string{"enrolled", "reenrolled"}, tagNames(reregistered.Tags),
"re-registration adds the key's current tags to those the removed device kept")
assert.True(t, reregistered.Ephemeral)
assert.Equal(t, 4, reregistered.EphemeralTimeout)
compose.AwaitProvisioningKeyUses(t, "reregistered", 2)
events := compose.ProvisioningKeyHistory(t, key.ID)
require.Len(t, events, 2)
assert.True(t, events[0].ReRegistration, "the newest event records the re-registration")
assert.True(t, events[0].Ephemeral)
assert.False(t, events[1].ReRegistration)
})
}