iclient/incus_profile_test.go
Rama develop · réplica de lectura del repositorio original.
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)
}