Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
<TargetFrameworks>$(RequiredTargetFrameworks)</TargetFrameworks>
<DefineConstants>$(DefineConstants);TESTFRAMEWORK</DefineConstants>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<TestHelperProjects>Resources201705;</TestHelperProjects>
</PropertyGroup>

<ItemGroup>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
using System.Net;
using System.Threading.Tasks;
using Azure.Core.TestFramework;
using Azure.Management.Resources.Models;
using Azure.ResourceManager.DigitalTwins.Models;
using FluentAssertions;
using NUnit.Framework;
Expand All @@ -18,21 +19,37 @@ public DigitalTwinInstanceLifecycleTests(bool isAsync)
{
}

[SetUp]
public void ClearChallengeCacheforRecord()
{
if (Mode == RecordedTestMode.Record || Mode == RecordedTestMode.Playback)
{
Initialize();
}
}

[TearDown]
public async Task CleanupResourceGroup()
{
await CleanupResourceGroupsAsync();
}

[Test]
public async Task DigitalTwinInstance_Lifecycle()
{
InitClient();

string dtInstanceName;
Response<CheckNameResult> checkNameResponse = null;
const int maxTryCount = 5;
int tryCount = 0;

// Create Resource Group
string resourceGroupName = Recording.GenerateAssetName("DtSDKRG");
await ResourceManagementClient.ResourceGroups.CreateOrUpdateAsync(resourceGroupName, new ResourceGroup("eastus2"));

// Ensure the random instance Id generated does not already exist.
do
{
dtInstanceName = $"DtInstanceLifecycle-{GetRandom()}";

dtInstanceName = Recording.GenerateAssetName("DtInstanceLifecycle");
if (tryCount++ > maxTryCount)
{
// If for some reason this unique check keeps failing, proceed with the last unique
Expand All @@ -42,7 +59,7 @@ public async Task DigitalTwinInstance_Lifecycle()

try
{
checkNameResponse = await Client.DigitalTwins
checkNameResponse = await DigitalTwinsManagementClient.DigitalTwins
.CheckNameAvailabilityAsync(
TestEnvironment.Location,
dtInstanceName)
Expand All @@ -66,9 +83,9 @@ public async Task DigitalTwinInstance_Lifecycle()
try
{
// Test create
DigitalTwinsCreateOrUpdateOperation createResponse = await Client.DigitalTwins
DigitalTwinsCreateOrUpdateOperation createResponse = await DigitalTwinsManagementClient.DigitalTwins
.StartCreateOrUpdateAsync(
TestEnvironment.ResourceGroup,
resourceGroupName,
dtInstanceName,
new DigitalTwinsDescription(TestEnvironment.Location))
.ConfigureAwait(false);
Expand Down Expand Up @@ -97,9 +114,9 @@ public async Task DigitalTwinInstance_Lifecycle()
createdDtInstance.LastUpdatedTime.Should().NotBeNull();

// Test get
Response<DigitalTwinsDescription> getResponse = await Client.DigitalTwins
Response<DigitalTwinsDescription> getResponse = await DigitalTwinsManagementClient.DigitalTwins
.GetAsync(
TestEnvironment.ResourceGroup,
resourceGroupName,
dtInstanceName)
.ConfigureAwait(false);

Expand All @@ -115,7 +132,7 @@ public async Task DigitalTwinInstance_Lifecycle()
getResponse.Value.LastUpdatedTime.Should().NotBeNull();

// Test list
AsyncPageable<DigitalTwinsDescription> listResponse = Client.DigitalTwins.ListAsync();
AsyncPageable<DigitalTwinsDescription> listResponse = DigitalTwinsManagementClient.DigitalTwins.ListAsync();

// Validate list
DigitalTwinsDescription foundInstance = null;
Expand All @@ -140,9 +157,9 @@ public async Task DigitalTwinInstance_Lifecycle()
if (createdSuccessfully)
{
// Test delete
DigitalTwinsDeleteOperation deleteResponse = await Client.DigitalTwins
DigitalTwinsDeleteOperation deleteResponse = await DigitalTwinsManagementClient.DigitalTwins
.StartDeleteAsync(
TestEnvironment.ResourceGroup,
resourceGroupName,
dtInstanceName)
.ConfigureAwait(false);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,18 +4,22 @@
using System;
using System.Threading.Tasks;
using Azure.Core.TestFramework;
using Azure.Management.Resources;
using Azure.Management.Resources.Models;
using Azure.ResourceManager.TestFramework;

namespace Azure.ResourceManager.DigitalTwins.Tests
{
[ClientTestFixture]
public abstract class E2eTestBase : RecordedTestBase<DigitalTwinsManagementTestEnvironment>
public abstract class E2eTestBase : ManagementRecordedTestBase<DigitalTwinsManagementTestEnvironment>
{
// This should be checked in as Playback, and changed to Record or Live locally, if needed.
private const RecordedTestMode TestMode = RecordedTestMode.Playback;

private static readonly TimeSpan s_pollingInterval = TimeSpan.FromSeconds(3);

protected DigitalTwinsManagementClient Client { get; private set; }
protected DigitalTwinsManagementClient DigitalTwinsManagementClient { get; set; }
protected ResourcesManagementClient ResourceManagementClient { get; set; }

protected E2eTestBase(bool isAsync)
: base(isAsync, TestMode)
Expand All @@ -27,30 +31,18 @@ protected E2eTestBase(bool isAsync, RecordedTestMode mode)
{
}

protected DigitalTwinsManagementClient InitClient()
protected void Initialize()
{
Client = InstrumentClient(
new DigitalTwinsManagementClient(
TestEnvironment.SubscriptionId,
TestEnvironment.Credential,
Recording?.InstrumentClientOptions(new DigitalTwinsManagementClientOptions())));

return Client;
ResourceManagementClient = GetResourceManagementClient();
DigitalTwinsManagementClient = GetDigitalTwinsManagementClient();
}

protected ValueTask<Response<T>> WaitForCompletionAsync<T>(Operation<T> operation)
private DigitalTwinsManagementClient GetDigitalTwinsManagementClient()
{
if (Mode == RecordedTestMode.Playback)
{
return operation.WaitForCompletionAsync(s_pollingInterval, default);
}

return operation.WaitForCompletionAsync();
return CreateClient<DigitalTwinsManagementClient>(TestEnvironment.SubscriptionId,
TestEnvironment.Credential,
Recording.InstrumentClientOptions(new DigitalTwinsManagementClientOptions()));
}

protected string GetRandom()
{
return Recording.GenerateId();
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.

[assembly: Azure.Core.AzureResourceProviderNamespace("Microsoft.DigitalTwins")]
Loading