Ctrl K
ComunidadGuías…

tests/enrollment_reregistration_test.go

Rama master · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
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)
	})
}