Ctrl K
ComunidadGuías…

iclient/incus_profile_test.go

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

Archivo original ↗Preguntar a KiBot
package iclient

import (
	"net/http"
	"testing"

	"github.com/lxc/incus/v7/shared/api"
	"github.com/stretchr/testify/require"
)

func TestIncusProfileRequests(t *testing.T) {
	t.Parallel()

	ctx := t.Context()

	t.Run("GetProfile", func(t *testing.T) {
		t.Parallel()

		conn, seen := recordingServer(t, `{"name":"default"}`)

		profile, _, err := conn.GetProfile(ctx, "myproject", "default")
		require.NoError(t, err)
		require.Equal(t, "default", profile.Name)

		req := seen.all()[0]
		require.Equal(t, http.MethodGet, req.method)
		require.Equal(t, "/1.0/profiles/default?project=myproject", req.uri())
	})

	t.Run("CreateProfile", func(t *testing.T) {
		t.Parallel()

		conn, seen := recordingServer(t, `{}`)

		require.NoError(t, conn.CreateProfile(ctx, "myproject", api.ProfilesPost{Name: "web"}))

		req := seen.all()[0]
		require.Equal(t, http.MethodPost, req.method)
		require.Equal(t, "/1.0/profiles?project=myproject", req.uri())
		require.Contains(t, req.body, `"name":"web"`)
	})

	t.Run("UpdateProfile sends the ETag", func(t *testing.T) {
		t.Parallel()

		conn, seen := recordingServer(t, `{}`)

		err := conn.UpdateProfile(ctx, "myproject", "web", api.ProfilePut{Description: "d"}, "the-etag")
		require.NoError(t, err)

		req := seen.all()[0]
		require.Equal(t, http.MethodPut, req.method)
		require.Equal(t, "/1.0/profiles/web?project=myproject", req.uri())
		require.Equal(t, "the-etag", req.etag)
	})

	t.Run("DeleteProfile", func(t *testing.T) {
		t.Parallel()

		conn, seen := recordingServer(t, `{}`)

		require.NoError(t, conn.DeleteProfile(ctx, "myproject", "web"))

		req := seen.all()[0]
		require.Equal(t, http.MethodDelete, req.method)
		require.Equal(t, "/1.0/profiles/web?project=myproject", req.uri())
	})
}

func TestIncusProfileAgainstRealIncus(t *testing.T) {
	skipLocal(t)
	t.Parallel()

	ctx := t.Context()
	conn := testConnection(t)

	// Every project has a default profile.
	profile, etag, err := conn.GetProfile(ctx, "", "default")
	require.NoError(t, err)
	require.Equal(t, "default", profile.Name)
	require.NotEmpty(t, etag, "GetProfile must return the ETag header")

	_, _, err = conn.GetProfile(ctx, "", "ic-iclient-no-such-profile")
	require.True(t, api.StatusErrorCheck(err, 404), "want a 404, got %v", err)
}