public static SignalRResource CreateSignalR(SignalRManagementClient client, string resourceGroupName, string location, bool isStandard = false, int capacity = 1) { ResourceSku sku; if (isStandard) { sku = new ResourceSku { Name = "Standard_S1", Tier = "Standard", Size = "S1", Capacity = capacity, }; } else { sku = new ResourceSku { Name = "Free_F1", Tier = "Free", Size = "F1", }; } return(client.SignalR.CreateOrUpdate( resourceGroupName, TestUtilities.GenerateName("signalr-test"), new SignalRCreateParameters { Location = location, Sku = sku, Tags = DefaultTags, })); }
public SignalRMgmtClient( string subscriptionId, RestClient restClient ) { if (string.IsNullOrEmpty(subscriptionId)) { throw new ArgumentNullException(nameof(subscriptionId)); } if (restClient is null) { throw new ArgumentNullException(nameof(restClient)); } // We need to initialize new RestClient so that we // extract RootHttpHandler and DelegatingHandlers out of it. var signalRRestClient = RestClient .Configure() .WithEnvironment(restClient.Environment) .WithCredentials(restClient.Credentials) //.WithLogLevel(HttpLoggingDelegatingHandler.Level.BodyAndHeaders) .Build(); _signalRManagementClient = new SignalRManagementClient( signalRRestClient.Credentials, signalRRestClient.RootHttpHandler, signalRRestClient.Handlers.ToArray() ) { SubscriptionId = subscriptionId }; }
protected void SetupManagementClients(MockContext context) { InternalResourceManagementClient = GetResourceManagementClientInternal(context); SignalRManagementClient = GetSignalRManagementClient(context); _helper.SetupManagementClients(InternalResourceManagementClient, SignalRManagementClient); }
protected void SetupManagementClients(MockContext context) { ResourceManagementClient = GetResourceManagementClient(); InternalResourceManagementClient = GetResourceManagementClientInternal(context); //SubscriptionClient = GetSubscriptionClient(); //GalleryClient = GetGalleryClient(); //AuthorizationManagementClient = GetAuthorizationManagementClient(); SignalRManagementClient = GetSignalRManagementClient(context); _helper.SetupManagementClients( ResourceManagementClient, InternalResourceManagementClient, //SubscriptionClient, //GalleryClient, //AuthorizationManagementClient, SignalRManagementClient); }
public static SignalRResource CreateSignalR(SignalRManagementClient client, string resourceGroupName, string location, bool isStandard = false, int capacity = 1) { ResourceSku sku; if (isStandard) { sku = new ResourceSku { Name = "Standard_S1", Tier = "Standard", Capacity = capacity, }; } else { sku = new ResourceSku { Name = "Free_F1", Tier = "Free", }; } return(client.SignalR.CreateOrUpdate( new SignalRResource { Location = location, Sku = sku, Tags = DefaultTags, Features = new List <SignalRFeature> { new SignalRFeature { Flag = FeatureFlags.ServiceMode, Value = "Default", } }, Kind = ServiceKind.SignalR, Upstream = new ServerlessUpstreamSettings { Templates = new List <UpstreamTemplate> { new UpstreamTemplate { UrlTemplate = "http://foo.com" } } }, NetworkACLs = new SignalRNetworkACLs { DefaultAction = ACLAction.Deny, PublicNetwork = new NetworkACL { Allow = new List <string> { SignalRRequestType.ClientConnection }, }, PrivateEndpoints = new List <PrivateEndpointACL> { new PrivateEndpointACL { Name = "mySignalRService.1fa229cd-bf3f-47f0-8c49-afb36723997e", Allow = new List <string> { SignalRRequestType.ServerConnection }, }, }, }, }, resourceGroupName, TestUtilities.GenerateName("signalr-test"))); }
private void SignalRScenarioVerification(SignalRManagementClient signalrClient, ResourceGroup resourceGroup, SignalRResource signalr, bool isStandard, int capacity = 1) { // Validate the newly created SignalR instance SignalRTestUtilities.ValidateResourceDefaultTags(signalr); Assert.NotNull(signalr.Sku); if (isStandard) { Assert.Equal(SignalRSkuTier.Standard, signalr.Sku.Tier); Assert.Equal("Standard_S1", signalr.Sku.Name); Assert.Equal("S1", signalr.Sku.Size); Assert.Equal(capacity, signalr.Sku.Capacity); } else { Assert.Equal(SignalRSkuTier.Free, signalr.Sku.Tier); Assert.Equal("Free_F1", signalr.Sku.Name); Assert.Equal("F1", signalr.Sku.Size); Assert.Equal(capacity, signalr.Sku.Capacity); } Assert.Equal(ProvisioningState.Succeeded, signalr.ProvisioningState); Assert.NotEmpty(signalr.HostName); Assert.NotEmpty(signalr.ExternalIP); Assert.NotNull(signalr.PublicPort); Assert.NotNull(signalr.ServerPort); Assert.NotEmpty(signalr.Version); Assert.Equal(3, signalr.Features.Count); // ServiceMode will be set as Default Assert.Equal("Default", signalr.Features.First().Value); Assert.Equal(1, signalr.Cors.AllowedOrigins.Count); // all origins(*) are allowed by default. Assert.Equal("*", signalr.Cors.AllowedOrigins.First()); Assert.Equal("SignalR", signalr.Kind); Assert.Equal(1, signalr.Upstream.Templates.Count); // List the SignalR instances by resource group var signalrByResourceGroup = signalrClient.SignalR.ListByResourceGroup(resourceGroup.Name); Assert.Single(signalrByResourceGroup); signalr = signalrByResourceGroup.FirstOrDefault(r => StringComparer.OrdinalIgnoreCase.Equals(r.Name, signalr.Name)); SignalRTestUtilities.ValidateResourceDefaultTags(signalr); // Get the SignalR instance by name signalr = signalrClient.SignalR.Get(resourceGroup.Name, signalr.Name); SignalRTestUtilities.ValidateResourceDefaultTags(signalr); // List keys var keys = signalrClient.SignalR.ListKeys(resourceGroup.Name, signalr.Name); Assert.NotNull(keys); Assert.NotEmpty(keys.PrimaryKey); Assert.NotEmpty(keys.PrimaryConnectionString); Assert.NotEmpty(keys.SecondaryKey); Assert.NotEmpty(keys.SecondaryConnectionString); // Update the SignalR instance capacity = isStandard ? 1 : 5; signalr = signalrClient.SignalR.Update(resourceGroup.Name, signalr.Name, new SignalRResource { Tags = SignalRTestUtilities.DefaultNewTags, Sku = new ResourceSku { Name = isStandard ? "Free_F1" : "Standard_S1", Tier = isStandard ? "Free" : "Standard", Capacity = capacity, }, Features = new List <SignalRFeature> { new SignalRFeature { Value = "Serverless" } }, Cors = new SignalRCorsSettings { AllowedOrigins = new List <string> { "http://example.com:12345", "https://contoso.com", } }, }); // Validate the updated SignalR instance SignalRTestUtilities.ValidateResourceDefaultNewTags(signalr); Assert.NotNull(signalr.Sku); if (isStandard) { Assert.Equal(SignalRSkuTier.Free, signalr.Sku.Tier); Assert.Equal("Free_F1", signalr.Sku.Name); Assert.Equal("F1", signalr.Sku.Size); Assert.Equal(capacity, signalr.Sku.Capacity); } else { Assert.Equal(SignalRSkuTier.Standard, signalr.Sku.Tier); Assert.Equal("Standard_S1", signalr.Sku.Name); Assert.Equal("S1", signalr.Sku.Size); Assert.Equal(capacity, signalr.Sku.Capacity); } Assert.Equal(ProvisioningState.Succeeded, signalr.ProvisioningState); Assert.NotEmpty(signalr.HostName); Assert.NotEmpty(signalr.ExternalIP); Assert.NotNull(signalr.PublicPort); Assert.NotNull(signalr.ServerPort); Assert.NotEmpty(signalr.Version); Assert.Equal(3, signalr.Features.Count); Assert.Equal("Serverless", signalr.Features.First().Value); Assert.Equal(2, signalr.Cors.AllowedOrigins.Count); Assert.Equal("http://example.com:12345", signalr.Cors.AllowedOrigins.First()); Assert.Equal("https://contoso.com", signalr.Cors.AllowedOrigins.Last()); // List keys of the updated SignalR instance keys = signalrClient.SignalR.ListKeys(resourceGroup.Name, signalr.Name); Assert.NotNull(keys); Assert.NotEmpty(keys.PrimaryKey); Assert.NotEmpty(keys.PrimaryConnectionString); Assert.NotEmpty(keys.SecondaryKey); Assert.NotEmpty(keys.SecondaryConnectionString); // Regenerate primary key var newKeys1 = signalrClient.SignalR.RegenerateKey(resourceGroup.Name, signalr.Name, new RegenerateKeyParameters { KeyType = "Primary", }); // Due to a bug in SignalR RP, the result of RegenerateKey is null. UnComment following lines after we fixed it RP side //Assert.NotNull(newKeys1); //Assert.NotEqual(keys.PrimaryKey, newKeys1.PrimaryKey); //Assert.NotEqual(keys.PrimaryConnectionString, newKeys1.PrimaryConnectionString); //Assert.Null(newKeys1.SecondaryKey); //Assert.Null(newKeys1.SecondaryConnectionString); // Ensure only the primary key is regenerated newKeys1 = signalrClient.SignalR.ListKeys(resourceGroup.Name, signalr.Name); Assert.NotNull(newKeys1); Assert.NotEqual(keys.PrimaryKey, newKeys1.PrimaryKey); Assert.NotEqual(keys.PrimaryConnectionString, newKeys1.PrimaryConnectionString); Assert.Equal(keys.SecondaryKey, newKeys1.SecondaryKey); Assert.Equal(keys.SecondaryConnectionString, newKeys1.SecondaryConnectionString); // Regenerate secondary key var newKeys2 = signalrClient.SignalR.RegenerateKey(resourceGroup.Name, signalr.Name, new RegenerateKeyParameters { KeyType = "Secondary", }); // Due to a bug in SignalR RP, the result of RegenerateKey is null. UnComment following lines after we fixed it RP side //Assert.NotNull(newKeys2); //Assert.Null(newKeys2.PrimaryKey); //Assert.Null(newKeys2.PrimaryConnectionString); //Assert.NotEqual(keys.SecondaryKey, newKeys2.SecondaryKey); //Assert.NotEqual(keys.SecondaryConnectionString, newKeys2.SecondaryConnectionString); // ensure only the secondary key is regenerated newKeys2 = signalrClient.SignalR.ListKeys(resourceGroup.Name, signalr.Name); Assert.NotNull(newKeys2); Assert.Equal(newKeys1.PrimaryKey, newKeys2.PrimaryKey); Assert.Equal(newKeys1.PrimaryConnectionString, newKeys2.PrimaryConnectionString); Assert.NotEqual(newKeys1.SecondaryKey, newKeys2.SecondaryKey); Assert.NotEqual(newKeys1.SecondaryConnectionString, newKeys2.SecondaryConnectionString); // Delete the SignalR instance signalrClient.SignalR.Delete(resourceGroup.Name, signalr.Name); // Delete again, should be no-op signalrClient.SignalR.Delete(resourceGroup.Name, signalr.Name); }
private void SignalRScenarioVerification(SignalRManagementClient signalrClient, ResourceGroup resourceGroup, SignalRResource signalr, bool isStandard, int capacity = 1) { // Validate the newly created SignalR instance SignalRTestUtilities.ValidateResourceDefaultTags(signalr); Assert.NotNull(signalr.Sku); if (isStandard) { Assert.Equal(SignalRSkuTier.Standard, signalr.Sku.Tier); Assert.Equal("Standard_S1", signalr.Sku.Name); Assert.Equal("S1", signalr.Sku.Size); Assert.Equal(capacity, signalr.Sku.Capacity); } else { Assert.Equal(SignalRSkuTier.Free, signalr.Sku.Tier); Assert.Equal("Free_F1", signalr.Sku.Name); Assert.Equal("F1", signalr.Sku.Size); Assert.Equal(capacity, signalr.Sku.Capacity); } // Currently, HostNamePrefix is used as a placeholder. It's not regarded by the RP Assert.Null(signalr.HostNamePrefix); Assert.Equal(ProvisioningState.Succeeded, signalr.ProvisioningState); Assert.NotEmpty(signalr.HostName); Assert.NotEmpty(signalr.ExternalIP); Assert.NotNull(signalr.PublicPort); Assert.NotNull(signalr.ServerPort); Assert.NotEmpty(signalr.Version); // List the SignalR instances by resource group var signalrByResourceGroup = signalrClient.SignalR.ListByResourceGroup(resourceGroup.Name); Assert.Single(signalrByResourceGroup); signalr = signalrByResourceGroup.FirstOrDefault(r => StringComparer.OrdinalIgnoreCase.Equals(r.Name, signalr.Name)); SignalRTestUtilities.ValidateResourceDefaultTags(signalr); // Get the SignalR instance by name signalr = signalrClient.SignalR.Get(resourceGroup.Name, signalr.Name); SignalRTestUtilities.ValidateResourceDefaultTags(signalr); // List keys var keys = signalrClient.SignalR.ListKeys(resourceGroup.Name, signalr.Name); Assert.NotNull(keys); Assert.NotEmpty(keys.PrimaryKey); Assert.NotEmpty(keys.PrimaryConnectionString); Assert.NotEmpty(keys.SecondaryKey); Assert.NotEmpty(keys.SecondaryConnectionString); // Update the SignalR instance capacity = isStandard ? 1 : 5; signalr = signalrClient.SignalR.Update(resourceGroup.Name, signalr.Name, new SignalRUpdateParameters { Tags = SignalRTestUtilities.DefaultNewTags, Sku = new ResourceSku { Name = isStandard ? "Free_F1" : "Standard_S1", Tier = isStandard ? "Free" : "Standard", Size = isStandard ? "F1" : "S1", Capacity = capacity, }, Properties = new SignalRCreateOrUpdateProperties { HostNamePrefix = TestUtilities.GenerateName("signalr-service-test"), }, }); // Validate the updated SignalR instance SignalRTestUtilities.ValidateResourceDefaultNewTags(signalr); Assert.NotNull(signalr.Sku); if (isStandard) { Assert.Equal(SignalRSkuTier.Free, signalr.Sku.Tier); Assert.Equal("Free_F1", signalr.Sku.Name); Assert.Equal("F1", signalr.Sku.Size); Assert.Equal(capacity, signalr.Sku.Capacity); } else { Assert.Equal(SignalRSkuTier.Standard, signalr.Sku.Tier); Assert.Equal("Standard_S1", signalr.Sku.Name); Assert.Equal("S1", signalr.Sku.Size); Assert.Equal(capacity, signalr.Sku.Capacity); } Assert.Null(signalr.HostNamePrefix); Assert.Equal(ProvisioningState.Succeeded, signalr.ProvisioningState); Assert.NotEmpty(signalr.HostName); Assert.NotEmpty(signalr.ExternalIP); Assert.NotNull(signalr.PublicPort); Assert.NotNull(signalr.ServerPort); Assert.NotEmpty(signalr.Version); // List keys of the updated SignalR instance keys = signalrClient.SignalR.ListKeys(resourceGroup.Name, signalr.Name); Assert.NotNull(keys); Assert.NotEmpty(keys.PrimaryKey); Assert.NotEmpty(keys.PrimaryConnectionString); Assert.NotEmpty(keys.SecondaryKey); Assert.NotEmpty(keys.SecondaryConnectionString); // Regenerate primary key var newKeys1 = signalrClient.SignalR.RegenerateKey(resourceGroup.Name, signalr.Name, new RegenerateKeyParameters { KeyType = "Primary", }); Assert.NotNull(newKeys1); Assert.NotEqual(keys.PrimaryKey, newKeys1.PrimaryKey); Assert.NotEqual(keys.PrimaryConnectionString, newKeys1.PrimaryConnectionString); Assert.Null(newKeys1.SecondaryKey); Assert.Null(newKeys1.SecondaryConnectionString); // Ensure only the primary key is regenerated newKeys1 = signalrClient.SignalR.ListKeys(resourceGroup.Name, signalr.Name); Assert.NotNull(newKeys1); Assert.NotEqual(keys.PrimaryKey, newKeys1.PrimaryKey); Assert.NotEqual(keys.PrimaryConnectionString, newKeys1.PrimaryConnectionString); Assert.Equal(keys.SecondaryKey, newKeys1.SecondaryKey); Assert.Equal(keys.SecondaryConnectionString, newKeys1.SecondaryConnectionString); // Regenerate secondary key var newKeys2 = signalrClient.SignalR.RegenerateKey(resourceGroup.Name, signalr.Name, new RegenerateKeyParameters { KeyType = "Secondary", }); Assert.NotNull(newKeys2); Assert.Null(newKeys2.PrimaryKey); Assert.Null(newKeys2.PrimaryConnectionString); Assert.NotEqual(keys.SecondaryKey, newKeys2.SecondaryKey); Assert.NotEqual(keys.SecondaryConnectionString, newKeys2.SecondaryConnectionString); // ensure only the secondary key is regenerated newKeys2 = signalrClient.SignalR.ListKeys(resourceGroup.Name, signalr.Name); Assert.NotNull(newKeys2); Assert.Equal(newKeys1.PrimaryKey, newKeys2.PrimaryKey); Assert.Equal(newKeys1.PrimaryConnectionString, newKeys2.PrimaryConnectionString); Assert.NotEqual(newKeys1.SecondaryKey, newKeys2.SecondaryKey); Assert.NotEqual(newKeys1.SecondaryConnectionString, newKeys2.SecondaryConnectionString); // Delete the SignalR instance signalrClient.SignalR.Delete(resourceGroup.Name, signalr.Name); // Delete again, should be no-op signalrClient.SignalR.Delete(resourceGroup.Name, signalr.Name); }