diff --git a/sdk/resourcemanager/labservices/armlabservices/assets.json b/sdk/resourcemanager/labservices/armlabservices/assets.json new file mode 100644 index 000000000000..8f7c1964a72e --- /dev/null +++ b/sdk/resourcemanager/labservices/armlabservices/assets.json @@ -0,0 +1,6 @@ +{ + "AssetsRepo": "Azure/azure-sdk-assets", + "AssetsRepoPrefixPath": "go", + "TagPrefix": "go/resourcemanager/labservices/armlabservices", + "Tag": "go/resourcemanager/labservices/armlabservices_2925575eb3" +} diff --git a/sdk/resourcemanager/labservices/armlabservices/go.mod b/sdk/resourcemanager/labservices/armlabservices/go.mod index 804fbfbfb300..d94c1c790b5c 100644 --- a/sdk/resourcemanager/labservices/armlabservices/go.mod +++ b/sdk/resourcemanager/labservices/armlabservices/go.mod @@ -5,17 +5,25 @@ go 1.18 require ( github.com/Azure/azure-sdk-for-go/sdk/azcore v1.9.0 github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.4.0 + github.com/Azure/azure-sdk-for-go/sdk/internal v1.5.0 + github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/internal/v2 v2.0.0 + github.com/stretchr/testify v1.8.4 ) require ( - github.com/Azure/azure-sdk-for-go/sdk/internal v1.5.0 // indirect + github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources v1.1.1 // indirect github.com/AzureAD/microsoft-authentication-library-for-go v1.1.1 // indirect + github.com/davecgh/go-spew v1.1.1 // indirect + github.com/dnaeon/go-vcr v1.2.0 // indirect github.com/golang-jwt/jwt/v5 v5.0.0 // indirect github.com/google/uuid v1.3.1 // indirect github.com/kylelemons/godebug v1.1.0 // indirect github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 // indirect + github.com/pmezard/go-difflib v1.0.0 // indirect golang.org/x/crypto v0.14.0 // indirect golang.org/x/net v0.17.0 // indirect golang.org/x/sys v0.13.0 // indirect golang.org/x/text v0.13.0 // indirect + gopkg.in/yaml.v2 v2.4.0 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/sdk/resourcemanager/labservices/armlabservices/go.sum b/sdk/resourcemanager/labservices/armlabservices/go.sum index 7985f1da436f..88bb72abf2ba 100644 --- a/sdk/resourcemanager/labservices/armlabservices/go.sum +++ b/sdk/resourcemanager/labservices/armlabservices/go.sum @@ -4,20 +4,31 @@ github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.4.0 h1:BMAjVKJM0U/CYF27gA0ZM github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.4.0/go.mod h1:1fXstnBMas5kzG+S3q8UoJcmyU6nUeunJcMDHcRYHhs= github.com/Azure/azure-sdk-for-go/sdk/internal v1.5.0 h1:d81/ng9rET2YqdVkVwkb6EXeRrLJIwyGnJcAlAWKwhs= github.com/Azure/azure-sdk-for-go/sdk/internal v1.5.0/go.mod h1:s4kgfzA0covAXNicZHDMN58jExvcng2mC/DepXiF1EI= +github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/internal v1.1.2 h1:mLY+pNLjCUeKhgnAJWAKhEUQM+RJQo2H1fuGSw1Ky1E= +github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/internal/v2 v2.0.0 h1:PTFGRSlMKCQelWwxUyYVEUqseBJVemLyqWJjvMyt0do= +github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/internal/v2 v2.0.0/go.mod h1:LRr2FzBTQlONPPa5HREE5+RjSCTXl7BwOvYOaWTqCaI= +github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/managementgroups/armmanagementgroups v1.0.0 h1:pPvTJ1dY0sA35JOeFq6TsY2xj6Z85Yo23Pj4wCCvu4o= +github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources v1.1.1 h1:7CBQ+Ei8SP2c6ydQTGCCrS35bDxgTMfoP2miAwK++OU= +github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources v1.1.1/go.mod h1:c/wcGeGx5FUPbM/JltUYHZcKmigwyVLJlDq+4HdtXaw= github.com/AzureAD/microsoft-authentication-library-for-go v1.1.1 h1:WpB/QDNLpMw72xHJc34BNNykqSOeEJDAWkhf0u12/Jk= github.com/AzureAD/microsoft-authentication-library-for-go v1.1.1/go.mod h1:wP83P5OoQ5p6ip3ScPr0BAq0BvuPAvacpEuSzyouqAI= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dnaeon/go-vcr v1.2.0 h1:zHCHvJYTMh1N7xnV7zf1m1GPBF9Ad0Jk/whtQ1663qI= +github.com/dnaeon/go-vcr v1.2.0/go.mod h1:R4UdLID7HZT3taECzJs4YgbbH6PIGXB6W/sc5OLb6RQ= github.com/golang-jwt/jwt/v5 v5.0.0 h1:1n1XNM9hk7O9mnQoNBGolZvzebBQ7p93ULHRc28XJUE= github.com/golang-jwt/jwt/v5 v5.0.0/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk= github.com/google/uuid v1.3.1 h1:KjJaJ9iWZ3jOFZIf1Lqf4laDRCasjl0BCmnEGxkdLb4= github.com/google/uuid v1.3.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= +github.com/modocache/gover v0.0.0-20171022184752-b58185e213c5/go.mod h1:caMODM3PzxT8aQXRPkAt8xlV/e7d7w8GM5g0fa5F0D8= github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 h1:KoWmjvw+nsYOo29YJK9vDA65RGE3NrOnUtO7a+RF9HU= github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8/go.mod h1:HKlIX3XHQyzLZPlr7++PzdhaXEj94dEiJgZDTsxEqUI= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= golang.org/x/crypto v0.14.0 h1:wBqGXzWJW6m1XrIKlAH0Hs1JJ7+9KBwnIO8v66Q9cHc= golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM= @@ -27,5 +38,10 @@ golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE= golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= +gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/sdk/resourcemanager/labservices/armlabservices/images_live_test.go b/sdk/resourcemanager/labservices/armlabservices/images_live_test.go new file mode 100644 index 000000000000..f723d7729fc6 --- /dev/null +++ b/sdk/resourcemanager/labservices/armlabservices/images_live_test.go @@ -0,0 +1,140 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. + +package armlabservices_test + +import ( + "context" + "fmt" + "testing" + + "github.com/Azure/azure-sdk-for-go/sdk/azcore" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/arm" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" + "github.com/Azure/azure-sdk-for-go/sdk/internal/recording" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/internal/v2/testutil" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/labservices/armlabservices" + "github.com/stretchr/testify/suite" +) + +type ImagesTestSuite struct { + suite.Suite + + ctx context.Context + cred azcore.TokenCredential + options *arm.ClientOptions + armEndpoint string + labPlanName string + location string + resourceGroupName string + subscriptionId string +} + +func (testsuite *ImagesTestSuite) SetupSuite() { + testutil.StartRecording(testsuite.T(), "sdk/resourcemanager/labservices/armlabservices/testdata") + + testsuite.ctx = context.Background() + testsuite.cred, testsuite.options = testutil.GetCredAndClientOptions(testsuite.T()) + testsuite.armEndpoint = "https://management.azure.com" + testsuite.labPlanName, _ = recording.GenerateAlphaNumericID(testsuite.T(), "labplanna", 15, false) + testsuite.location = recording.GetEnvVariable("LOCATION", "eastus") + testsuite.resourceGroupName = recording.GetEnvVariable("RESOURCE_GROUP_NAME", "scenarioTestTempGroup") + testsuite.subscriptionId = recording.GetEnvVariable("AZURE_SUBSCRIPTION_ID", "00000000-0000-0000-0000-000000000000") + resourceGroup, _, err := testutil.CreateResourceGroup(testsuite.ctx, testsuite.subscriptionId, testsuite.cred, testsuite.options, testsuite.location) + testsuite.Require().NoError(err) + testsuite.resourceGroupName = *resourceGroup.Name + testsuite.Prepare() +} + +func (testsuite *ImagesTestSuite) TearDownSuite() { + _, err := testutil.DeleteResourceGroup(testsuite.ctx, testsuite.subscriptionId, testsuite.cred, testsuite.options, testsuite.resourceGroupName) + testsuite.Require().NoError(err) + testutil.StopRecording(testsuite.T()) +} + +func TestImagesTestSuite(t *testing.T) { + suite.Run(t, new(ImagesTestSuite)) +} + +func (testsuite *ImagesTestSuite) Prepare() { + var err error + // From step LabPlans_CreateOrUpdate + fmt.Println("Call operation: LabPlans_CreateOrUpdate") + labPlansClient, err := armlabservices.NewLabPlansClient(testsuite.subscriptionId, testsuite.cred, testsuite.options) + testsuite.Require().NoError(err) + labPlansClientCreateOrUpdateResponsePoller, err := labPlansClient.BeginCreateOrUpdate(testsuite.ctx, testsuite.resourceGroupName, testsuite.labPlanName, armlabservices.LabPlan{ + Location: to.Ptr(testsuite.location), + Properties: &armlabservices.LabPlanProperties{ + AllowedRegions: []*string{ + to.Ptr("eastus"), + to.Ptr("eastus2")}, + DefaultAutoShutdownProfile: &armlabservices.AutoShutdownProfile{ + DisconnectDelay: to.Ptr("PT15M"), + IdleDelay: to.Ptr("PT15M"), + NoConnectDelay: to.Ptr("PT15M"), + ShutdownOnDisconnect: to.Ptr(armlabservices.EnableStateEnabled), + ShutdownOnIdle: to.Ptr(armlabservices.ShutdownOnIdleModeUserAbsence), + ShutdownWhenNotConnected: to.Ptr(armlabservices.EnableStateEnabled), + }, + DefaultConnectionProfile: &armlabservices.ConnectionProfile{ + ClientRdpAccess: to.Ptr(armlabservices.ConnectionTypePublic), + ClientSSHAccess: to.Ptr(armlabservices.ConnectionTypePublic), + WebRdpAccess: to.Ptr(armlabservices.ConnectionTypeNone), + WebSSHAccess: to.Ptr(armlabservices.ConnectionTypeNone), + }, + SupportInfo: &armlabservices.SupportInfo{ + Email: to.Ptr("help@contoso.com"), + Instructions: to.Ptr("Contact support for help."), + Phone: to.Ptr("+1-202-555-0123"), + URL: to.Ptr("https://help.contoso.com"), + }, + }, + }, nil) + testsuite.Require().NoError(err) + _, err = testutil.PollForTest(testsuite.ctx, labPlansClientCreateOrUpdateResponsePoller) + testsuite.Require().NoError(err) +} + +// Microsoft.LabServices/labPlans/{labPlanName}/images/{imageName} +func (testsuite *ImagesTestSuite) TestImages() { + var imageName string + var err error + // From step Images_ListByLabPlan + fmt.Println("Call operation: Images_ListByLabPlan") + imagesClient, err := armlabservices.NewImagesClient(testsuite.subscriptionId, testsuite.cred, testsuite.options) + testsuite.Require().NoError(err) + imagesClientNewListByLabPlanPager := imagesClient.NewListByLabPlanPager(testsuite.resourceGroupName, testsuite.labPlanName, &armlabservices.ImagesClientListByLabPlanOptions{Filter: nil}) + for imagesClientNewListByLabPlanPager.More() { + nextResult, err := imagesClientNewListByLabPlanPager.NextPage(testsuite.ctx) + testsuite.Require().NoError(err) + + imageName = *nextResult.Value[0].Name + break + } + + // From step Images_CreateOrUpdate + fmt.Println("Call operation: Images_CreateOrUpdate") + _, err = imagesClient.CreateOrUpdate(testsuite.ctx, testsuite.resourceGroupName, testsuite.labPlanName, imageName, armlabservices.Image{ + Properties: &armlabservices.ImageProperties{ + EnabledState: to.Ptr(armlabservices.EnableStateEnabled), + }, + }, nil) + testsuite.Require().NoError(err) + + // From step Images_Get + fmt.Println("Call operation: Images_Get") + _, err = imagesClient.Get(testsuite.ctx, testsuite.resourceGroupName, testsuite.labPlanName, imageName, nil) + testsuite.Require().NoError(err) + + // From step Images_Update + fmt.Println("Call operation: Images_Update") + _, err = imagesClient.Update(testsuite.ctx, testsuite.resourceGroupName, testsuite.labPlanName, imageName, armlabservices.ImageUpdate{ + Properties: &armlabservices.ImageUpdateProperties{ + EnabledState: to.Ptr(armlabservices.EnableStateEnabled), + }, + }, nil) + testsuite.Require().NoError(err) +} diff --git a/sdk/resourcemanager/labservices/armlabservices/labplans_live_test.go b/sdk/resourcemanager/labservices/armlabservices/labplans_live_test.go new file mode 100644 index 000000000000..63558e68993d --- /dev/null +++ b/sdk/resourcemanager/labservices/armlabservices/labplans_live_test.go @@ -0,0 +1,145 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. + +package armlabservices_test + +import ( + "context" + "fmt" + "testing" + + "github.com/Azure/azure-sdk-for-go/sdk/azcore" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/arm" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" + "github.com/Azure/azure-sdk-for-go/sdk/internal/recording" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/internal/v2/testutil" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/labservices/armlabservices" + "github.com/stretchr/testify/suite" +) + +type LabPlansTestSuite struct { + suite.Suite + + ctx context.Context + cred azcore.TokenCredential + options *arm.ClientOptions + armEndpoint string + labPlanName string + location string + resourceGroupName string + subscriptionId string +} + +func (testsuite *LabPlansTestSuite) SetupSuite() { + testutil.StartRecording(testsuite.T(), "sdk/resourcemanager/labservices/armlabservices/testdata") + + testsuite.ctx = context.Background() + testsuite.cred, testsuite.options = testutil.GetCredAndClientOptions(testsuite.T()) + testsuite.armEndpoint = "https://management.azure.com" + testsuite.labPlanName, _ = recording.GenerateAlphaNumericID(testsuite.T(), "labplanna", 15, false) + testsuite.location = recording.GetEnvVariable("LOCATION", "eastus") + testsuite.resourceGroupName = recording.GetEnvVariable("RESOURCE_GROUP_NAME", "scenarioTestTempGroup") + testsuite.subscriptionId = recording.GetEnvVariable("AZURE_SUBSCRIPTION_ID", "00000000-0000-0000-0000-000000000000") + resourceGroup, _, err := testutil.CreateResourceGroup(testsuite.ctx, testsuite.subscriptionId, testsuite.cred, testsuite.options, testsuite.location) + testsuite.Require().NoError(err) + testsuite.resourceGroupName = *resourceGroup.Name +} + +func (testsuite *LabPlansTestSuite) TearDownSuite() { + _, err := testutil.DeleteResourceGroup(testsuite.ctx, testsuite.subscriptionId, testsuite.cred, testsuite.options, testsuite.resourceGroupName) + testsuite.Require().NoError(err) + testutil.StopRecording(testsuite.T()) +} + +func TestLabPlansTestSuite(t *testing.T) { + suite.Run(t, new(LabPlansTestSuite)) +} + +// Microsoft.LabServices/labPlans/{labPlanName} +func (testsuite *LabPlansTestSuite) TestLabPlans() { + var err error + // From step LabPlans_CreateOrUpdate + fmt.Println("Call operation: LabPlans_CreateOrUpdate") + labPlansClient, err := armlabservices.NewLabPlansClient(testsuite.subscriptionId, testsuite.cred, testsuite.options) + testsuite.Require().NoError(err) + labPlansClientCreateOrUpdateResponsePoller, err := labPlansClient.BeginCreateOrUpdate(testsuite.ctx, testsuite.resourceGroupName, testsuite.labPlanName, armlabservices.LabPlan{ + Location: to.Ptr(testsuite.location), + Properties: &armlabservices.LabPlanProperties{ + AllowedRegions: []*string{ + to.Ptr("eastus"), + to.Ptr("eastus2")}, + DefaultAutoShutdownProfile: &armlabservices.AutoShutdownProfile{ + DisconnectDelay: to.Ptr("PT15M"), + IdleDelay: to.Ptr("PT15M"), + NoConnectDelay: to.Ptr("PT15M"), + ShutdownOnDisconnect: to.Ptr(armlabservices.EnableStateEnabled), + ShutdownOnIdle: to.Ptr(armlabservices.ShutdownOnIdleModeUserAbsence), + ShutdownWhenNotConnected: to.Ptr(armlabservices.EnableStateEnabled), + }, + DefaultConnectionProfile: &armlabservices.ConnectionProfile{ + ClientRdpAccess: to.Ptr(armlabservices.ConnectionTypePublic), + ClientSSHAccess: to.Ptr(armlabservices.ConnectionTypePublic), + WebRdpAccess: to.Ptr(armlabservices.ConnectionTypeNone), + WebSSHAccess: to.Ptr(armlabservices.ConnectionTypeNone), + }, + SupportInfo: &armlabservices.SupportInfo{ + Email: to.Ptr("help@contoso.com"), + Instructions: to.Ptr("Contact support for help."), + Phone: to.Ptr("+1-202-555-0123"), + URL: to.Ptr("https://help.contoso.com"), + }, + }, + }, nil) + testsuite.Require().NoError(err) + _, err = testutil.PollForTest(testsuite.ctx, labPlansClientCreateOrUpdateResponsePoller) + testsuite.Require().NoError(err) + + // From step LabPlans_ListBySubscription + fmt.Println("Call operation: LabPlans_ListBySubscription") + labPlansClientNewListBySubscriptionPager := labPlansClient.NewListBySubscriptionPager(&armlabservices.LabPlansClientListBySubscriptionOptions{Filter: nil}) + for labPlansClientNewListBySubscriptionPager.More() { + _, err := labPlansClientNewListBySubscriptionPager.NextPage(testsuite.ctx) + testsuite.Require().NoError(err) + break + } + + // From step LabPlans_Get + fmt.Println("Call operation: LabPlans_Get") + _, err = labPlansClient.Get(testsuite.ctx, testsuite.resourceGroupName, testsuite.labPlanName, nil) + testsuite.Require().NoError(err) + + // From step LabPlans_ListByResourceGroup + fmt.Println("Call operation: LabPlans_ListByResourceGroup") + labPlansClientNewListByResourceGroupPager := labPlansClient.NewListByResourceGroupPager(testsuite.resourceGroupName, nil) + for labPlansClientNewListByResourceGroupPager.More() { + _, err := labPlansClientNewListByResourceGroupPager.NextPage(testsuite.ctx) + testsuite.Require().NoError(err) + break + } + + // From step LabPlans_Update + fmt.Println("Call operation: LabPlans_Update") + labPlansClientUpdateResponsePoller, err := labPlansClient.BeginUpdate(testsuite.ctx, testsuite.resourceGroupName, testsuite.labPlanName, armlabservices.LabPlanUpdate{ + Properties: &armlabservices.LabPlanUpdateProperties{ + DefaultConnectionProfile: &armlabservices.ConnectionProfile{ + ClientRdpAccess: to.Ptr(armlabservices.ConnectionTypePublic), + ClientSSHAccess: to.Ptr(armlabservices.ConnectionTypePublic), + WebRdpAccess: to.Ptr(armlabservices.ConnectionTypeNone), + WebSSHAccess: to.Ptr(armlabservices.ConnectionTypeNone), + }, + }, + }, nil) + testsuite.Require().NoError(err) + _, err = testutil.PollForTest(testsuite.ctx, labPlansClientUpdateResponsePoller) + testsuite.Require().NoError(err) + + // From step LabPlans_Delete + fmt.Println("Call operation: LabPlans_Delete") + labPlansClientDeleteResponsePoller, err := labPlansClient.BeginDelete(testsuite.ctx, testsuite.resourceGroupName, testsuite.labPlanName, nil) + testsuite.Require().NoError(err) + _, err = testutil.PollForTest(testsuite.ctx, labPlansClientDeleteResponsePoller) + testsuite.Require().NoError(err) +} diff --git a/sdk/resourcemanager/labservices/armlabservices/labs_live_test.go b/sdk/resourcemanager/labservices/armlabservices/labs_live_test.go new file mode 100644 index 000000000000..cbfb856ce3f4 --- /dev/null +++ b/sdk/resourcemanager/labservices/armlabservices/labs_live_test.go @@ -0,0 +1,208 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. + +package armlabservices_test + +import ( + "context" + "fmt" + "testing" + + "github.com/Azure/azure-sdk-for-go/sdk/azcore" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/arm" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" + "github.com/Azure/azure-sdk-for-go/sdk/internal/recording" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/internal/v2/testutil" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/labservices/armlabservices" + "github.com/stretchr/testify/suite" +) + +type LabsTestSuite struct { + suite.Suite + + ctx context.Context + cred azcore.TokenCredential + options *arm.ClientOptions + armEndpoint string + labName string + labPlanId string + labPlanName string + adminPassword string + location string + resourceGroupName string + subscriptionId string +} + +func (testsuite *LabsTestSuite) SetupSuite() { + testutil.StartRecording(testsuite.T(), "sdk/resourcemanager/labservices/armlabservices/testdata") + + testsuite.ctx = context.Background() + testsuite.cred, testsuite.options = testutil.GetCredAndClientOptions(testsuite.T()) + testsuite.armEndpoint = "https://management.azure.com" + testsuite.labName, _ = recording.GenerateAlphaNumericID(testsuite.T(), "labna", 11, false) + testsuite.labPlanName, _ = recording.GenerateAlphaNumericID(testsuite.T(), "labplanna", 15, false) + testsuite.adminPassword = recording.GetEnvVariable("ADMIN_PASSWORD", "") + testsuite.location = recording.GetEnvVariable("LOCATION", "eastus") + testsuite.resourceGroupName = recording.GetEnvVariable("RESOURCE_GROUP_NAME", "scenarioTestTempGroup") + testsuite.subscriptionId = recording.GetEnvVariable("AZURE_SUBSCRIPTION_ID", "00000000-0000-0000-0000-000000000000") + resourceGroup, _, err := testutil.CreateResourceGroup(testsuite.ctx, testsuite.subscriptionId, testsuite.cred, testsuite.options, testsuite.location) + testsuite.Require().NoError(err) + testsuite.resourceGroupName = *resourceGroup.Name + testsuite.Prepare() +} + +func (testsuite *LabsTestSuite) TearDownSuite() { + _, err := testutil.DeleteResourceGroup(testsuite.ctx, testsuite.subscriptionId, testsuite.cred, testsuite.options, testsuite.resourceGroupName) + testsuite.Require().NoError(err) + testutil.StopRecording(testsuite.T()) +} + +func TestLabsTestSuite(t *testing.T) { + suite.Run(t, new(LabsTestSuite)) +} + +func (testsuite *LabsTestSuite) Prepare() { + var err error + // From step LabPlans_CreateOrUpdate + fmt.Println("Call operation: LabPlans_CreateOrUpdate") + labPlansClient, err := armlabservices.NewLabPlansClient(testsuite.subscriptionId, testsuite.cred, testsuite.options) + testsuite.Require().NoError(err) + labPlansClientCreateOrUpdateResponsePoller, err := labPlansClient.BeginCreateOrUpdate(testsuite.ctx, testsuite.resourceGroupName, testsuite.labPlanName, armlabservices.LabPlan{ + Location: to.Ptr(testsuite.location), + Properties: &armlabservices.LabPlanProperties{ + AllowedRegions: []*string{ + to.Ptr("eastus"), + to.Ptr("eastus2")}, + DefaultAutoShutdownProfile: &armlabservices.AutoShutdownProfile{ + DisconnectDelay: to.Ptr("PT15M"), + IdleDelay: to.Ptr("PT15M"), + NoConnectDelay: to.Ptr("PT15M"), + ShutdownOnDisconnect: to.Ptr(armlabservices.EnableStateEnabled), + ShutdownOnIdle: to.Ptr(armlabservices.ShutdownOnIdleModeUserAbsence), + ShutdownWhenNotConnected: to.Ptr(armlabservices.EnableStateEnabled), + }, + DefaultConnectionProfile: &armlabservices.ConnectionProfile{ + ClientRdpAccess: to.Ptr(armlabservices.ConnectionTypePublic), + ClientSSHAccess: to.Ptr(armlabservices.ConnectionTypePublic), + WebRdpAccess: to.Ptr(armlabservices.ConnectionTypeNone), + WebSSHAccess: to.Ptr(armlabservices.ConnectionTypeNone), + }, + SupportInfo: &armlabservices.SupportInfo{ + Email: to.Ptr("help@contoso.com"), + Instructions: to.Ptr("Contact support for help."), + Phone: to.Ptr("+1-202-555-0123"), + URL: to.Ptr("https://help.contoso.com"), + }, + }, + }, nil) + testsuite.Require().NoError(err) + var labPlansClientCreateOrUpdateResponse *armlabservices.LabPlansClientCreateOrUpdateResponse + labPlansClientCreateOrUpdateResponse, err = testutil.PollForTest(testsuite.ctx, labPlansClientCreateOrUpdateResponsePoller) + testsuite.Require().NoError(err) + testsuite.labPlanId = *labPlansClientCreateOrUpdateResponse.ID +} + +// Microsoft.LabServices/labs/{labName} +func (testsuite *LabsTestSuite) TestLabs() { + var err error + // From step Labs_CreateOrUpdate + fmt.Println("Call operation: Labs_CreateOrUpdate") + labsClient, err := armlabservices.NewLabsClient(testsuite.subscriptionId, testsuite.cred, testsuite.options) + testsuite.Require().NoError(err) + labsClientCreateOrUpdateResponsePoller, err := labsClient.BeginCreateOrUpdate(testsuite.ctx, testsuite.resourceGroupName, testsuite.labName, armlabservices.Lab{ + Location: to.Ptr(testsuite.location), + Properties: &armlabservices.LabProperties{ + Description: to.Ptr("This is a test lab."), + AutoShutdownProfile: &armlabservices.AutoShutdownProfile{ + DisconnectDelay: to.Ptr("PT15M"), + IdleDelay: to.Ptr("PT15M"), + NoConnectDelay: to.Ptr("PT15M"), + ShutdownOnDisconnect: to.Ptr(armlabservices.EnableStateEnabled), + ShutdownOnIdle: to.Ptr(armlabservices.ShutdownOnIdleModeUserAbsence), + ShutdownWhenNotConnected: to.Ptr(armlabservices.EnableStateEnabled), + }, + ConnectionProfile: &armlabservices.ConnectionProfile{ + ClientRdpAccess: to.Ptr(armlabservices.ConnectionTypePublic), + ClientSSHAccess: to.Ptr(armlabservices.ConnectionTypePublic), + WebRdpAccess: to.Ptr(armlabservices.ConnectionTypeNone), + WebSSHAccess: to.Ptr(armlabservices.ConnectionTypeNone), + }, + LabPlanID: to.Ptr(testsuite.labPlanId), + SecurityProfile: &armlabservices.SecurityProfile{ + OpenAccess: to.Ptr(armlabservices.EnableStateDisabled), + }, + Title: to.Ptr("Test Lab"), + VirtualMachineProfile: &armlabservices.VirtualMachineProfile{ + AdditionalCapabilities: &armlabservices.VirtualMachineAdditionalCapabilities{ + InstallGpuDrivers: to.Ptr(armlabservices.EnableStateDisabled), + }, + AdminUser: &armlabservices.Credentials{ + Password: to.Ptr(testsuite.adminPassword), + Username: to.Ptr("test-user"), + }, + CreateOption: to.Ptr(armlabservices.CreateOptionTemplateVM), + ImageReference: &armlabservices.ImageReference{ + Offer: to.Ptr("0001-com-ubuntu-server-focal"), + Publisher: to.Ptr("canonical"), + SKU: to.Ptr("20_04-lts"), + Version: to.Ptr("latest"), + }, + SKU: &armlabservices.SKU{ + Name: to.Ptr("Standard_Fsv2_2_4GB_64_S_SSD"), + Capacity: to.Ptr[int32](0), + }, + UsageQuota: to.Ptr("2"), + UseSharedPassword: to.Ptr(armlabservices.EnableStateDisabled), + }, + }, + }, nil) + testsuite.Require().NoError(err) + _, err = testutil.PollForTest(testsuite.ctx, labsClientCreateOrUpdateResponsePoller) + testsuite.Require().NoError(err) + + // From step Labs_ListBySubscription + fmt.Println("Call operation: Labs_ListBySubscription") + labsClientNewListBySubscriptionPager := labsClient.NewListBySubscriptionPager(&armlabservices.LabsClientListBySubscriptionOptions{Filter: nil}) + for labsClientNewListBySubscriptionPager.More() { + _, err := labsClientNewListBySubscriptionPager.NextPage(testsuite.ctx) + testsuite.Require().NoError(err) + break + } + + // From step Labs_Get + fmt.Println("Call operation: Labs_Get") + _, err = labsClient.Get(testsuite.ctx, testsuite.resourceGroupName, testsuite.labName, nil) + testsuite.Require().NoError(err) + + // From step Labs_ListByResourceGroup + fmt.Println("Call operation: Labs_ListByResourceGroup") + labsClientNewListByResourceGroupPager := labsClient.NewListByResourceGroupPager(testsuite.resourceGroupName, nil) + for labsClientNewListByResourceGroupPager.More() { + _, err := labsClientNewListByResourceGroupPager.NextPage(testsuite.ctx) + testsuite.Require().NoError(err) + break + } + + // From step Labs_Update + fmt.Println("Call operation: Labs_Update") + labsClientUpdateResponsePoller, err := labsClient.BeginUpdate(testsuite.ctx, testsuite.resourceGroupName, testsuite.labName, armlabservices.LabUpdate{ + Properties: &armlabservices.LabUpdateProperties{ + SecurityProfile: &armlabservices.SecurityProfile{ + OpenAccess: to.Ptr(armlabservices.EnableStateEnabled), + }, + }, + }, nil) + testsuite.Require().NoError(err) + _, err = testutil.PollForTest(testsuite.ctx, labsClientUpdateResponsePoller) + testsuite.Require().NoError(err) + + // From step Labs_Delete + fmt.Println("Call operation: Labs_Delete") + labsClientDeleteResponsePoller, err := labsClient.BeginDelete(testsuite.ctx, testsuite.resourceGroupName, testsuite.labName, nil) + testsuite.Require().NoError(err) + _, err = testutil.PollForTest(testsuite.ctx, labsClientDeleteResponsePoller) + testsuite.Require().NoError(err) +} diff --git a/sdk/resourcemanager/labservices/armlabservices/operation_live_test.go b/sdk/resourcemanager/labservices/armlabservices/operation_live_test.go new file mode 100644 index 000000000000..0bbcf3e8b4e1 --- /dev/null +++ b/sdk/resourcemanager/labservices/armlabservices/operation_live_test.go @@ -0,0 +1,96 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. + +package armlabservices_test + +import ( + "context" + "fmt" + "testing" + + "github.com/Azure/azure-sdk-for-go/sdk/azcore" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/arm" + "github.com/Azure/azure-sdk-for-go/sdk/internal/recording" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/internal/v2/testutil" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/labservices/armlabservices" + "github.com/stretchr/testify/suite" +) + +type OperationTestSuite struct { + suite.Suite + + ctx context.Context + cred azcore.TokenCredential + options *arm.ClientOptions + armEndpoint string + location string + resourceGroupName string + subscriptionId string +} + +func (testsuite *OperationTestSuite) SetupSuite() { + testutil.StartRecording(testsuite.T(), "sdk/resourcemanager/labservices/armlabservices/testdata") + + testsuite.ctx = context.Background() + testsuite.cred, testsuite.options = testutil.GetCredAndClientOptions(testsuite.T()) + testsuite.armEndpoint = "https://management.azure.com" + testsuite.location = recording.GetEnvVariable("LOCATION", "eastus") + testsuite.resourceGroupName = recording.GetEnvVariable("RESOURCE_GROUP_NAME", "scenarioTestTempGroup") + testsuite.subscriptionId = recording.GetEnvVariable("AZURE_SUBSCRIPTION_ID", "00000000-0000-0000-0000-000000000000") +} + +func (testsuite *OperationTestSuite) TearDownSuite() { + testutil.StopRecording(testsuite.T()) +} + +func TestOperationTestSuite(t *testing.T) { + suite.Run(t, new(OperationTestSuite)) +} + +// Microsoft.LabServices/operations +func (testsuite *OperationTestSuite) TestOperation() { + var err error + // From step Operations_List + fmt.Println("Call operation: Operations_List") + operationsClient, err := armlabservices.NewOperationsClient(testsuite.cred, testsuite.options) + testsuite.Require().NoError(err) + operationsClientNewListPager := operationsClient.NewListPager(nil) + for operationsClientNewListPager.More() { + _, err := operationsClientNewListPager.NextPage(testsuite.ctx) + testsuite.Require().NoError(err) + break + } +} + +// Microsoft.LabServices/skus +func (testsuite *OperationTestSuite) TestSkus() { + var err error + // From step Skus_List + fmt.Println("Call operation: Skus_List") + sKUsClient, err := armlabservices.NewSKUsClient(testsuite.subscriptionId, testsuite.cred, testsuite.options) + testsuite.Require().NoError(err) + sKUsClientNewListPager := sKUsClient.NewListPager(&armlabservices.SKUsClientListOptions{Filter: nil}) + for sKUsClientNewListPager.More() { + _, err := sKUsClientNewListPager.NextPage(testsuite.ctx) + testsuite.Require().NoError(err) + break + } +} + +// Microsoft.LabServices/locations/{location}/usages +func (testsuite *OperationTestSuite) TestUsages() { + var err error + // From step Usages_ListByLocation + fmt.Println("Call operation: Usages_ListByLocation") + usagesClient, err := armlabservices.NewUsagesClient(testsuite.subscriptionId, testsuite.cred, testsuite.options) + testsuite.Require().NoError(err) + usagesClientNewListByLocationPager := usagesClient.NewListByLocationPager(testsuite.location, &armlabservices.UsagesClientListByLocationOptions{Filter: nil}) + for usagesClientNewListByLocationPager.More() { + _, err := usagesClientNewListByLocationPager.NextPage(testsuite.ctx) + testsuite.Require().NoError(err) + break + } +} diff --git a/sdk/resourcemanager/labservices/armlabservices/schedules_live_test.go b/sdk/resourcemanager/labservices/armlabservices/schedules_live_test.go new file mode 100644 index 000000000000..85d211aa7f1c --- /dev/null +++ b/sdk/resourcemanager/labservices/armlabservices/schedules_live_test.go @@ -0,0 +1,180 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. + +package armlabservices_test + +import ( + "context" + "fmt" + "testing" + + "time" + + "github.com/Azure/azure-sdk-for-go/sdk/azcore" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/arm" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" + "github.com/Azure/azure-sdk-for-go/sdk/internal/recording" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/internal/v2/testutil" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/labservices/armlabservices" + "github.com/stretchr/testify/suite" +) + +type SchedulesTestSuite struct { + suite.Suite + + ctx context.Context + cred azcore.TokenCredential + options *arm.ClientOptions + armEndpoint string + labName string + scheduleName string + adminPassword string + location string + resourceGroupName string + subscriptionId string +} + +func (testsuite *SchedulesTestSuite) SetupSuite() { + testutil.StartRecording(testsuite.T(), "sdk/resourcemanager/labservices/armlabservices/testdata") + + testsuite.ctx = context.Background() + testsuite.cred, testsuite.options = testutil.GetCredAndClientOptions(testsuite.T()) + testsuite.armEndpoint = "https://management.azure.com" + testsuite.labName, _ = recording.GenerateAlphaNumericID(testsuite.T(), "labna", 11, false) + testsuite.scheduleName, _ = recording.GenerateAlphaNumericID(testsuite.T(), "schedulena", 16, false) + testsuite.adminPassword = recording.GetEnvVariable("ADMIN_PASSWORD", "") + testsuite.location = recording.GetEnvVariable("LOCATION", "eastus") + testsuite.resourceGroupName = recording.GetEnvVariable("RESOURCE_GROUP_NAME", "scenarioTestTempGroup") + testsuite.subscriptionId = recording.GetEnvVariable("AZURE_SUBSCRIPTION_ID", "00000000-0000-0000-0000-000000000000") + resourceGroup, _, err := testutil.CreateResourceGroup(testsuite.ctx, testsuite.subscriptionId, testsuite.cred, testsuite.options, testsuite.location) + testsuite.Require().NoError(err) + testsuite.resourceGroupName = *resourceGroup.Name + testsuite.Prepare() +} + +func (testsuite *SchedulesTestSuite) TearDownSuite() { + _, err := testutil.DeleteResourceGroup(testsuite.ctx, testsuite.subscriptionId, testsuite.cred, testsuite.options, testsuite.resourceGroupName) + testsuite.Require().NoError(err) + testutil.StopRecording(testsuite.T()) +} + +func TestSchedulesTestSuite(t *testing.T) { + suite.Run(t, new(SchedulesTestSuite)) +} + +func (testsuite *SchedulesTestSuite) Prepare() { + var err error + // From step Labs_CreateOrUpdate + fmt.Println("Call operation: Labs_CreateOrUpdate") + labsClient, err := armlabservices.NewLabsClient(testsuite.subscriptionId, testsuite.cred, testsuite.options) + testsuite.Require().NoError(err) + labsClientCreateOrUpdateResponsePoller, err := labsClient.BeginCreateOrUpdate(testsuite.ctx, testsuite.resourceGroupName, testsuite.labName, armlabservices.Lab{ + Location: to.Ptr(testsuite.location), + Properties: &armlabservices.LabProperties{ + Description: to.Ptr("This is a test lab."), + AutoShutdownProfile: &armlabservices.AutoShutdownProfile{ + DisconnectDelay: to.Ptr("PT15M"), + IdleDelay: to.Ptr("PT15M"), + NoConnectDelay: to.Ptr("PT15M"), + ShutdownOnDisconnect: to.Ptr(armlabservices.EnableStateEnabled), + ShutdownOnIdle: to.Ptr(armlabservices.ShutdownOnIdleModeUserAbsence), + ShutdownWhenNotConnected: to.Ptr(armlabservices.EnableStateEnabled), + }, + ConnectionProfile: &armlabservices.ConnectionProfile{ + ClientRdpAccess: to.Ptr(armlabservices.ConnectionTypePublic), + ClientSSHAccess: to.Ptr(armlabservices.ConnectionTypePublic), + WebRdpAccess: to.Ptr(armlabservices.ConnectionTypeNone), + WebSSHAccess: to.Ptr(armlabservices.ConnectionTypeNone), + }, + SecurityProfile: &armlabservices.SecurityProfile{ + OpenAccess: to.Ptr(armlabservices.EnableStateDisabled), + }, + Title: to.Ptr("Test Lab"), + VirtualMachineProfile: &armlabservices.VirtualMachineProfile{ + AdditionalCapabilities: &armlabservices.VirtualMachineAdditionalCapabilities{ + InstallGpuDrivers: to.Ptr(armlabservices.EnableStateDisabled), + }, + AdminUser: &armlabservices.Credentials{ + Password: to.Ptr(testsuite.adminPassword), + Username: to.Ptr("test-user"), + }, + CreateOption: to.Ptr(armlabservices.CreateOptionTemplateVM), + ImageReference: &armlabservices.ImageReference{ + Offer: to.Ptr("0001-com-ubuntu-server-focal"), + Publisher: to.Ptr("canonical"), + SKU: to.Ptr("20_04-lts"), + Version: to.Ptr("latest"), + }, + SKU: &armlabservices.SKU{ + Name: to.Ptr("Standard_Fsv2_2_4GB_64_S_SSD"), + Capacity: to.Ptr[int32](0), + }, + UsageQuota: to.Ptr("2"), + UseSharedPassword: to.Ptr(armlabservices.EnableStateDisabled), + }, + }, + }, nil) + testsuite.Require().NoError(err) + _, err = testutil.PollForTest(testsuite.ctx, labsClientCreateOrUpdateResponsePoller) + testsuite.Require().NoError(err) +} + +// Microsoft.LabServices/labs/{labName}/schedules/{scheduleName} +func (testsuite *SchedulesTestSuite) TestSchedules() { + var err error + // From step Schedules_CreateOrUpdate + fmt.Println("Call operation: Schedules_CreateOrUpdate") + schedulesClient, err := armlabservices.NewSchedulesClient(testsuite.subscriptionId, testsuite.cred, testsuite.options) + testsuite.Require().NoError(err) + _, err = schedulesClient.CreateOrUpdate(testsuite.ctx, testsuite.resourceGroupName, testsuite.labName, testsuite.scheduleName, armlabservices.Schedule{ + Properties: &armlabservices.ScheduleProperties{ + Notes: to.Ptr("Schedule 1 for students"), + RecurrencePattern: &armlabservices.RecurrencePattern{ + ExpirationDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2020-08-14T23:59:59.000Z"); return t }()), + Frequency: to.Ptr(armlabservices.RecurrenceFrequencyDaily), + Interval: to.Ptr[int32](2), + }, + StartAt: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2020-05-26T12:00:00.000Z"); return t }()), + StopAt: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2020-05-26T18:00:00.000Z"); return t }()), + TimeZoneID: to.Ptr("America/Los_Angeles"), + }, + }, nil) + testsuite.Require().NoError(err) + + // From step Schedules_ListByLab + fmt.Println("Call operation: Schedules_ListByLab") + schedulesClientNewListByLabPager := schedulesClient.NewListByLabPager(testsuite.resourceGroupName, testsuite.labName, &armlabservices.SchedulesClientListByLabOptions{Filter: nil}) + for schedulesClientNewListByLabPager.More() { + _, err := schedulesClientNewListByLabPager.NextPage(testsuite.ctx) + testsuite.Require().NoError(err) + break + } + + // From step Schedules_Get + fmt.Println("Call operation: Schedules_Get") + _, err = schedulesClient.Get(testsuite.ctx, testsuite.resourceGroupName, testsuite.labName, testsuite.scheduleName, nil) + testsuite.Require().NoError(err) + + // From step Schedules_Update + fmt.Println("Call operation: Schedules_Update") + _, err = schedulesClient.Update(testsuite.ctx, testsuite.resourceGroupName, testsuite.labName, testsuite.scheduleName, armlabservices.ScheduleUpdate{ + Properties: &armlabservices.ScheduleUpdateProperties{ + RecurrencePattern: &armlabservices.RecurrencePattern{ + ExpirationDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2020-08-14T23:59:59.000Z"); return t }()), + Frequency: to.Ptr(armlabservices.RecurrenceFrequencyDaily), + Interval: to.Ptr[int32](2), + }, + }, + }, nil) + testsuite.Require().NoError(err) + + // From step Schedules_Delete + fmt.Println("Call operation: Schedules_Delete") + schedulesClientDeleteResponsePoller, err := schedulesClient.BeginDelete(testsuite.ctx, testsuite.resourceGroupName, testsuite.labName, testsuite.scheduleName, nil) + testsuite.Require().NoError(err) + _, err = testutil.PollForTest(testsuite.ctx, schedulesClientDeleteResponsePoller) + testsuite.Require().NoError(err) +} diff --git a/sdk/resourcemanager/labservices/armlabservices/users_live_test.go b/sdk/resourcemanager/labservices/armlabservices/users_live_test.go new file mode 100644 index 000000000000..abb2ec4f3482 --- /dev/null +++ b/sdk/resourcemanager/labservices/armlabservices/users_live_test.go @@ -0,0 +1,180 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. + +package armlabservices_test + +import ( + "context" + "fmt" + "testing" + + "github.com/Azure/azure-sdk-for-go/sdk/azcore" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/arm" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" + "github.com/Azure/azure-sdk-for-go/sdk/internal/recording" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/internal/v2/testutil" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/labservices/armlabservices" + "github.com/stretchr/testify/suite" +) + +type UsersTestSuite struct { + suite.Suite + + ctx context.Context + cred azcore.TokenCredential + options *arm.ClientOptions + armEndpoint string + labName string + userName string + adminPassword string + location string + resourceGroupName string + subscriptionId string +} + +func (testsuite *UsersTestSuite) SetupSuite() { + testutil.StartRecording(testsuite.T(), "sdk/resourcemanager/labservices/armlabservices/testdata") + + testsuite.ctx = context.Background() + testsuite.cred, testsuite.options = testutil.GetCredAndClientOptions(testsuite.T()) + testsuite.armEndpoint = "https://management.azure.com" + testsuite.labName, _ = recording.GenerateAlphaNumericID(testsuite.T(), "labna", 11, false) + testsuite.userName, _ = recording.GenerateAlphaNumericID(testsuite.T(), "userna", 12, false) + testsuite.adminPassword = recording.GetEnvVariable("ADMIN_PASSWORD", "") + testsuite.location = recording.GetEnvVariable("LOCATION", "eastus") + testsuite.resourceGroupName = recording.GetEnvVariable("RESOURCE_GROUP_NAME", "scenarioTestTempGroup") + testsuite.subscriptionId = recording.GetEnvVariable("AZURE_SUBSCRIPTION_ID", "00000000-0000-0000-0000-000000000000") + resourceGroup, _, err := testutil.CreateResourceGroup(testsuite.ctx, testsuite.subscriptionId, testsuite.cred, testsuite.options, testsuite.location) + testsuite.Require().NoError(err) + testsuite.resourceGroupName = *resourceGroup.Name + testsuite.Prepare() +} + +func (testsuite *UsersTestSuite) TearDownSuite() { + _, err := testutil.DeleteResourceGroup(testsuite.ctx, testsuite.subscriptionId, testsuite.cred, testsuite.options, testsuite.resourceGroupName) + testsuite.Require().NoError(err) + testutil.StopRecording(testsuite.T()) +} + +func TestUsersTestSuite(t *testing.T) { + suite.Run(t, new(UsersTestSuite)) +} + +func (testsuite *UsersTestSuite) Prepare() { + var err error + // From step Labs_CreateOrUpdate + fmt.Println("Call operation: Labs_CreateOrUpdate") + labsClient, err := armlabservices.NewLabsClient(testsuite.subscriptionId, testsuite.cred, testsuite.options) + testsuite.Require().NoError(err) + labsClientCreateOrUpdateResponsePoller, err := labsClient.BeginCreateOrUpdate(testsuite.ctx, testsuite.resourceGroupName, testsuite.labName, armlabservices.Lab{ + Location: to.Ptr(testsuite.location), + Properties: &armlabservices.LabProperties{ + Description: to.Ptr("This is a test lab."), + AutoShutdownProfile: &armlabservices.AutoShutdownProfile{ + DisconnectDelay: to.Ptr("PT15M"), + IdleDelay: to.Ptr("PT15M"), + NoConnectDelay: to.Ptr("PT15M"), + ShutdownOnDisconnect: to.Ptr(armlabservices.EnableStateEnabled), + ShutdownOnIdle: to.Ptr(armlabservices.ShutdownOnIdleModeUserAbsence), + ShutdownWhenNotConnected: to.Ptr(armlabservices.EnableStateEnabled), + }, + ConnectionProfile: &armlabservices.ConnectionProfile{ + ClientRdpAccess: to.Ptr(armlabservices.ConnectionTypePublic), + ClientSSHAccess: to.Ptr(armlabservices.ConnectionTypePublic), + WebRdpAccess: to.Ptr(armlabservices.ConnectionTypeNone), + WebSSHAccess: to.Ptr(armlabservices.ConnectionTypeNone), + }, + SecurityProfile: &armlabservices.SecurityProfile{ + OpenAccess: to.Ptr(armlabservices.EnableStateDisabled), + }, + Title: to.Ptr("Test Lab"), + VirtualMachineProfile: &armlabservices.VirtualMachineProfile{ + AdditionalCapabilities: &armlabservices.VirtualMachineAdditionalCapabilities{ + InstallGpuDrivers: to.Ptr(armlabservices.EnableStateDisabled), + }, + AdminUser: &armlabservices.Credentials{ + Password: to.Ptr(testsuite.adminPassword), + Username: to.Ptr("test-user"), + }, + CreateOption: to.Ptr(armlabservices.CreateOptionTemplateVM), + ImageReference: &armlabservices.ImageReference{ + Offer: to.Ptr("0001-com-ubuntu-server-focal"), + Publisher: to.Ptr("canonical"), + SKU: to.Ptr("20_04-lts"), + Version: to.Ptr("latest"), + }, + SKU: &armlabservices.SKU{ + Name: to.Ptr("Standard_Fsv2_2_4GB_64_S_SSD"), + Capacity: to.Ptr[int32](0), + }, + UsageQuota: to.Ptr("2"), + UseSharedPassword: to.Ptr(armlabservices.EnableStateDisabled), + }, + }, + }, nil) + testsuite.Require().NoError(err) + _, err = testutil.PollForTest(testsuite.ctx, labsClientCreateOrUpdateResponsePoller) + testsuite.Require().NoError(err) +} + +// Microsoft.LabServices/labs/{labName}/users/{userName} +func (testsuite *UsersTestSuite) TestUsers() { + var err error + // From step Users_CreateOrUpdate + fmt.Println("Call operation: Users_CreateOrUpdate") + usersClient, err := armlabservices.NewUsersClient(testsuite.subscriptionId, testsuite.cred, testsuite.options) + testsuite.Require().NoError(err) + usersClientCreateOrUpdateResponsePoller, err := usersClient.BeginCreateOrUpdate(testsuite.ctx, testsuite.resourceGroupName, testsuite.labName, testsuite.userName, armlabservices.User{ + Properties: &armlabservices.UserProperties{ + AdditionalUsageQuota: to.Ptr("PT10H"), + Email: to.Ptr(testsuite.userName + "@contoso.com"), + }, + }, nil) + testsuite.Require().NoError(err) + _, err = testutil.PollForTest(testsuite.ctx, usersClientCreateOrUpdateResponsePoller) + testsuite.Require().NoError(err) + + // From step Users_ListByLab + fmt.Println("Call operation: Users_ListByLab") + usersClientNewListByLabPager := usersClient.NewListByLabPager(testsuite.resourceGroupName, testsuite.labName, &armlabservices.UsersClientListByLabOptions{Filter: nil}) + for usersClientNewListByLabPager.More() { + _, err := usersClientNewListByLabPager.NextPage(testsuite.ctx) + testsuite.Require().NoError(err) + break + } + + // From step Users_Get + fmt.Println("Call operation: Users_Get") + _, err = usersClient.Get(testsuite.ctx, testsuite.resourceGroupName, testsuite.labName, testsuite.userName, nil) + testsuite.Require().NoError(err) + + // From step Users_Update + fmt.Println("Call operation: Users_Update") + usersClientUpdateResponsePoller, err := usersClient.BeginUpdate(testsuite.ctx, testsuite.resourceGroupName, testsuite.labName, testsuite.userName, armlabservices.UserUpdate{ + Properties: &armlabservices.UserUpdateProperties{ + AdditionalUsageQuota: to.Ptr("PT10H"), + }, + }, nil) + testsuite.Require().NoError(err) + _, err = testutil.PollForTest(testsuite.ctx, usersClientUpdateResponsePoller) + testsuite.Require().NoError(err) + + // From step Users_Invite + fmt.Println("Call operation: Users_Invite") + usersClientInviteResponsePoller, err := usersClient.BeginInvite(testsuite.ctx, testsuite.resourceGroupName, testsuite.labName, testsuite.userName, armlabservices.InviteBody{ + Text: to.Ptr("Invitation to lab " + testsuite.labName), + }, nil) + testsuite.Require().NoError(err) + _, err = testutil.PollForTest(testsuite.ctx, usersClientInviteResponsePoller) + testsuite.Require().NoError(err) + + // From step Users_Delete + fmt.Println("Call operation: Users_Delete") + usersClientDeleteResponsePoller, err := usersClient.BeginDelete(testsuite.ctx, testsuite.resourceGroupName, testsuite.labName, testsuite.userName, nil) + testsuite.Require().NoError(err) + _, err = testutil.PollForTest(testsuite.ctx, usersClientDeleteResponsePoller) + testsuite.Require().NoError(err) +} diff --git a/sdk/resourcemanager/labservices/armlabservices/virtualmachines_live_test.go b/sdk/resourcemanager/labservices/armlabservices/virtualmachines_live_test.go new file mode 100644 index 000000000000..2d533e6e36a8 --- /dev/null +++ b/sdk/resourcemanager/labservices/armlabservices/virtualmachines_live_test.go @@ -0,0 +1,180 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. + +package armlabservices_test + +import ( + "context" + "fmt" + "testing" + + "github.com/Azure/azure-sdk-for-go/sdk/azcore" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/arm" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" + "github.com/Azure/azure-sdk-for-go/sdk/internal/recording" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/internal/v2/testutil" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/labservices/armlabservices" + "github.com/stretchr/testify/suite" +) + +type VirtualMachinesTestSuite struct { + suite.Suite + + ctx context.Context + cred azcore.TokenCredential + options *arm.ClientOptions + armEndpoint string + labName string + adminPassword string + location string + resourceGroupName string + subscriptionId string +} + +func (testsuite *VirtualMachinesTestSuite) SetupSuite() { + testutil.StartRecording(testsuite.T(), "sdk/resourcemanager/labservices/armlabservices/testdata") + + testsuite.ctx = context.Background() + testsuite.cred, testsuite.options = testutil.GetCredAndClientOptions(testsuite.T()) + testsuite.armEndpoint = "https://management.azure.com" + testsuite.labName, _ = recording.GenerateAlphaNumericID(testsuite.T(), "labna", 11, false) + testsuite.adminPassword = recording.GetEnvVariable("ADMIN_PASSWORD", "") + testsuite.location = recording.GetEnvVariable("LOCATION", "eastus") + testsuite.resourceGroupName = recording.GetEnvVariable("RESOURCE_GROUP_NAME", "scenarioTestTempGroup") + testsuite.subscriptionId = recording.GetEnvVariable("AZURE_SUBSCRIPTION_ID", "00000000-0000-0000-0000-000000000000") + resourceGroup, _, err := testutil.CreateResourceGroup(testsuite.ctx, testsuite.subscriptionId, testsuite.cred, testsuite.options, testsuite.location) + testsuite.Require().NoError(err) + testsuite.resourceGroupName = *resourceGroup.Name + testsuite.Prepare() +} + +func (testsuite *VirtualMachinesTestSuite) TearDownSuite() { + _, err := testutil.DeleteResourceGroup(testsuite.ctx, testsuite.subscriptionId, testsuite.cred, testsuite.options, testsuite.resourceGroupName) + testsuite.Require().NoError(err) + testutil.StopRecording(testsuite.T()) +} + +func TestVirtualMachinesTestSuite(t *testing.T) { + suite.Run(t, new(VirtualMachinesTestSuite)) +} + +func (testsuite *VirtualMachinesTestSuite) Prepare() { + var err error + // From step Labs_CreateOrUpdate + fmt.Println("Call operation: Labs_CreateOrUpdate") + labsClient, err := armlabservices.NewLabsClient(testsuite.subscriptionId, testsuite.cred, testsuite.options) + testsuite.Require().NoError(err) + labsClientCreateOrUpdateResponsePoller, err := labsClient.BeginCreateOrUpdate(testsuite.ctx, testsuite.resourceGroupName, testsuite.labName, armlabservices.Lab{ + Location: to.Ptr(testsuite.location), + Properties: &armlabservices.LabProperties{ + Description: to.Ptr("This is a test lab."), + AutoShutdownProfile: &armlabservices.AutoShutdownProfile{ + DisconnectDelay: to.Ptr("PT15M"), + IdleDelay: to.Ptr("PT15M"), + NoConnectDelay: to.Ptr("PT15M"), + ShutdownOnDisconnect: to.Ptr(armlabservices.EnableStateEnabled), + ShutdownOnIdle: to.Ptr(armlabservices.ShutdownOnIdleModeUserAbsence), + ShutdownWhenNotConnected: to.Ptr(armlabservices.EnableStateEnabled), + }, + ConnectionProfile: &armlabservices.ConnectionProfile{ + ClientRdpAccess: to.Ptr(armlabservices.ConnectionTypePublic), + ClientSSHAccess: to.Ptr(armlabservices.ConnectionTypePublic), + WebRdpAccess: to.Ptr(armlabservices.ConnectionTypeNone), + WebSSHAccess: to.Ptr(armlabservices.ConnectionTypeNone), + }, + SecurityProfile: &armlabservices.SecurityProfile{ + OpenAccess: to.Ptr(armlabservices.EnableStateDisabled), + }, + Title: to.Ptr("Test Lab"), + VirtualMachineProfile: &armlabservices.VirtualMachineProfile{ + AdditionalCapabilities: &armlabservices.VirtualMachineAdditionalCapabilities{ + InstallGpuDrivers: to.Ptr(armlabservices.EnableStateDisabled), + }, + AdminUser: &armlabservices.Credentials{ + Password: to.Ptr(testsuite.adminPassword), + Username: to.Ptr("test-user"), + }, + CreateOption: to.Ptr(armlabservices.CreateOptionTemplateVM), + ImageReference: &armlabservices.ImageReference{ + Offer: to.Ptr("0001-com-ubuntu-server-focal"), + Publisher: to.Ptr("canonical"), + SKU: to.Ptr("20_04-lts"), + Version: to.Ptr("latest"), + }, + SKU: &armlabservices.SKU{ + Name: to.Ptr("Standard_Fsv2_2_4GB_64_S_SSD"), + Capacity: to.Ptr[int32](0), + }, + UsageQuota: to.Ptr("2"), + UseSharedPassword: to.Ptr(armlabservices.EnableStateDisabled), + }, + }, + }, nil) + testsuite.Require().NoError(err) + _, err = testutil.PollForTest(testsuite.ctx, labsClientCreateOrUpdateResponsePoller) + testsuite.Require().NoError(err) +} + +// Microsoft.LabServices/labs/{labName}/virtualMachines/{virtualMachineName} +func (testsuite *VirtualMachinesTestSuite) TestVirtualMachines() { + var err error + var virtualMachineName string + // From step VirtualMachines_ListByLab + fmt.Println("Call operation: VirtualMachines_ListByLab") + virtualMachinesClient, err := armlabservices.NewVirtualMachinesClient(testsuite.subscriptionId, testsuite.cred, testsuite.options) + testsuite.Require().NoError(err) + virtualMachinesClientNewListByLabPager := virtualMachinesClient.NewListByLabPager(testsuite.resourceGroupName, testsuite.labName, &armlabservices.VirtualMachinesClientListByLabOptions{Filter: nil}) + for virtualMachinesClientNewListByLabPager.More() { + nextResult, err := virtualMachinesClientNewListByLabPager.NextPage(testsuite.ctx) + testsuite.Require().NoError(err) + + virtualMachineName = *nextResult.Value[0].Name + break + } + + // From step VirtualMachines_Get + fmt.Println("Call operation: VirtualMachines_Get") + _, err = virtualMachinesClient.Get(testsuite.ctx, testsuite.resourceGroupName, testsuite.labName, virtualMachineName, nil) + testsuite.Require().NoError(err) + + // From step VirtualMachines_Start + fmt.Println("Call operation: VirtualMachines_Start") + virtualMachinesClientStartResponsePoller, err := virtualMachinesClient.BeginStart(testsuite.ctx, testsuite.resourceGroupName, testsuite.labName, virtualMachineName, nil) + testsuite.Require().NoError(err) + _, err = testutil.PollForTest(testsuite.ctx, virtualMachinesClientStartResponsePoller) + testsuite.Require().NoError(err) + + // From step VirtualMachines_Redeploy + fmt.Println("Call operation: VirtualMachines_Redeploy") + virtualMachinesClientRedeployResponsePoller, err := virtualMachinesClient.BeginRedeploy(testsuite.ctx, testsuite.resourceGroupName, testsuite.labName, virtualMachineName, nil) + testsuite.Require().NoError(err) + _, err = testutil.PollForTest(testsuite.ctx, virtualMachinesClientRedeployResponsePoller) + testsuite.Require().NoError(err) + + // From step VirtualMachines_Reimage + fmt.Println("Call operation: VirtualMachines_Reimage") + virtualMachinesClientReimageResponsePoller, err := virtualMachinesClient.BeginReimage(testsuite.ctx, testsuite.resourceGroupName, testsuite.labName, virtualMachineName, nil) + testsuite.Require().NoError(err) + _, err = testutil.PollForTest(testsuite.ctx, virtualMachinesClientReimageResponsePoller) + testsuite.Require().NoError(err) + + // From step VirtualMachines_ResetPassword + fmt.Println("Call operation: VirtualMachines_ResetPassword") + virtualMachinesClientResetPasswordResponsePoller, err := virtualMachinesClient.BeginResetPassword(testsuite.ctx, testsuite.resourceGroupName, testsuite.labName, virtualMachineName, armlabservices.ResetPasswordBody{ + Password: to.Ptr(testsuite.adminPassword), + Username: to.Ptr("test-user"), + }, nil) + testsuite.Require().NoError(err) + _, err = testutil.PollForTest(testsuite.ctx, virtualMachinesClientResetPasswordResponsePoller) + testsuite.Require().NoError(err) + + // From step VirtualMachines_Stop + fmt.Println("Call operation: VirtualMachines_Stop") + virtualMachinesClientStopResponsePoller, err := virtualMachinesClient.BeginStop(testsuite.ctx, testsuite.resourceGroupName, testsuite.labName, virtualMachineName, nil) + testsuite.Require().NoError(err) + _, err = testutil.PollForTest(testsuite.ctx, virtualMachinesClientStopResponsePoller) + testsuite.Require().NoError(err) +}