public void ConfigureServiceEndpoint_WithConnectionString()
        {
            var connectionStrings = FakeEndpointUtils.GetFakeConnectionString(2);
            var names             = new string[] { "First", "Second" };
            var configuration     = new ConfigurationBuilder().AddInMemoryCollection().Build();

            foreach (var(name, connStr) in names.Zip(connectionStrings))
            {
                configuration[$"{Constants.Keys.AzureSignalREndpointsKey}:{name}"] = connStr;
            }
            var connectionString = FakeEndpointUtils.GetFakeConnectionString(1).Single();

            configuration[Constants.Keys.ConnectionStringDefaultKey] = connectionString;
            var optionsSetup = new ServiceManagerOptionsSetup(configuration);
            var options      = new ServiceManagerOptions();

            optionsSetup.Configure(options);

            var actualEndpoints = options.ServiceEndpoints;

            foreach (var(name, connStr) in names.Zip(connectionStrings))
            {
                Assert.Contains(new ServiceEndpoint(name, connStr), actualEndpoints);
            }
            Assert.Equal(connectionString, options.ConnectionString);
        }
Ejemplo n.º 2
0
        internal void GenerateClientAccessTokenTest()
        {
            var endpoint             = "https://abc";
            var accessKey            = "nOu3jXsHnsO5urMumc87M9skQbUWuQ+PE5IvSUEic8w=";
            var testConnectionString = $"Endpoint={endpoint};AccessKey={accessKey};Version=1.0;";
            var userId           = "UserA";
            var hubName          = "signalrbench";
            var expectedAudience = $"{endpoint}/client/?hub={hubName.ToLower()}";
            var lifeTime         = TimeSpan.FromSeconds(99);
            var claims           = new List <Claim> {
                new Claim(ClaimTypes.NameIdentifier, userId), new Claim("type1", "val1")
            };

            var serviceManagerOptions = new ServiceManagerOptions
            {
                ConnectionString     = testConnectionString,
                ServiceTransportType = ServiceTransportType.Transient
            };
            var serviceManager = new ServiceManager(serviceManagerOptions);
            var tokenString    = serviceManager.GenerateClientAccessToken(hubName, claims, lifeTime);
            var token          = JwtTokenHelper.JwtHandler.ReadJwtToken(tokenString);
            var customClaims   = new Claim[] { new Claim("type1", "val1") };

            string expectedToken = JwtTokenHelper.GenerateExpectedAccessToken(token, expectedAudience, accessKey, customClaims);

            Assert.Equal(expectedToken, tokenString);
        }
Ejemplo n.º 3
0
        private static IServiceManager GenerateServiceManager(string connectionString, ServiceTransportType serviceTransportType = ServiceTransportType.Transient)
        {
            var serviceManagerOptions = new ServiceManagerOptions
            {
                ConnectionString     = connectionString,
                ServiceTransportType = serviceTransportType
            };

            return(new ServiceManager(serviceManagerOptions));
        }
Ejemplo n.º 4
0
        private static IServiceManager GenerateServiceManager(string connectionString, ServiceTransportType serviceTransportType = ServiceTransportType.Transient, string appName = null)
        {
            var serviceManagerOptions = new ServiceManagerOptions
            {
                ConnectionString     = connectionString,
                ServiceTransportType = serviceTransportType,
                ApplicationName      = appName
            };

            return(new ServiceManager(serviceManagerOptions));
        }
Ejemplo n.º 5
0
        public void TestHubProtocolConfiguration(string configKey, string configValue, Type objectSerializerType)
        {
            var configuration = new ConfigurationBuilder().AddInMemoryCollection().Build();

            configuration[configKey] = configValue;
            var options = new ServiceManagerOptions();
            var setup   = new OptionsSetup(configuration, NullLoggerFactory.Instance, SingletonAzureComponentFactory.Instance, "key");

            setup.Configure(options);
            Assert.Equal(objectSerializerType, options.ObjectSerializer?.GetType());
        }
Ejemplo n.º 6
0
        internal void GenerateClientEndpointTestWithClientEndpoint()
        {
            var options = new ServiceManagerOptions
            {
                ConnectionString = $"Endpoint=http://localhost;AccessKey=ABC;Version=1.0;ClientEndpoint=https://remote"
            };

            var context = new ServiceManagerContext();

            context.SetValueFromOptions(options);
            var manager        = new ServiceManager(context, new RestClientFactory(UserAgent));
            var clientEndpoint = manager.GetClientEndpoint(HubName);

            Assert.Equal("https://remote/client/?hub=signalrbench", clientEndpoint);
        }
        public void TestIdentityBasedMultiEndpointConfiguration()
        {
            var serviceUris   = new string[] { "http://localhost.signalr.com", "http://localhost2.signalr.com" };
            var endpointNames = new string[] { "eastus", "westus" };
            var configuration = new ConfigurationBuilder().AddInMemoryCollection().Build();

            configuration[$"Azure:SignalR:Endpoints:{endpointNames[0]}:serviceUri"] = serviceUris[0];
            configuration[$"Azure:SignalR:Endpoints:{endpointNames[1]}:serviceUri"] = serviceUris[1];
            var optionsSetup = new OptionsSetup(configuration, NullLoggerFactory.Instance, SingletonAzureComponentFactory.Instance, "does_not_matter");
            var options      = new ServiceManagerOptions();

            optionsSetup.Configure(options);

            Assert.Equal(2, options.ServiceEndpoints.Length);
            Assert.Contains(options.ServiceEndpoints, e => endpointNames[0] == e.Name && serviceUris[0] == e.Endpoint);
            Assert.Contains(options.ServiceEndpoints, e => endpointNames[1] == e.Name && serviceUris[1] == e.Endpoint);
        }
        public void TestIdentityBasedSingleEndpointConfiguration()
        {
            var configuration = new ConfigurationBuilder().AddInMemoryCollection().Build();
            var sectionKey    = "connection";
            var serviceUri    = "http://localhost.signalr.com";

            configuration[$"{sectionKey}:serviceUri"] = serviceUri;
            var optionsSetup = new OptionsSetup(configuration, NullLoggerFactory.Instance, SingletonAzureComponentFactory.Instance, sectionKey);
            var options      = new ServiceManagerOptions();

            optionsSetup.Configure(options);

            var endpoint = Assert.Single(options.ServiceEndpoints);

            Assert.Equal(serviceUri, endpoint.Endpoint);
            Assert.Equal(string.Empty, endpoint.Name);
        }
        public void EmptyConfiguration_NotCleanOriginalValue()
        {
            const string app       = "App";
            var          connStr   = FakeEndpointUtils.GetFakeConnectionString(1).Single();
            var          endpoints = FakeEndpointUtils.GetFakeEndpoint(2).ToArray();
            var          options   = new ServiceManagerOptions
            {
                ApplicationName  = app,
                ConnectionString = connStr,
                ServiceEndpoints = endpoints
            };
            var configuration = new ConfigurationBuilder().AddInMemoryCollection().Build();
            var setup         = new ServiceManagerOptionsSetup(configuration);

            setup.Configure(options);
            Assert.Equal(app, options.ApplicationName);
            Assert.Equal(connStr, options.ConnectionString);
            Assert.Equal(endpoints, options.ServiceEndpoints);
        }
        public void TestIdentityBasedMixedEndpointConfiguration()
        {
            var serviceUris         = new string[] { "http://localhost.signalr.com", "http://localhost2.signalr.com" };
            var endpointName        = "eastus";
            var namelessEndpointKey = "AzureSignalRConnection";
            var configuration       = new ConfigurationBuilder().AddInMemoryCollection().Build();

            configuration[$"Azure:SignalR:Endpoints:{endpointName}:serviceUri"] = serviceUris[0];
            configuration[$"{namelessEndpointKey}:serviceUri"] = serviceUris[1];

            var optionsSetup = new OptionsSetup(configuration, NullLoggerFactory.Instance, SingletonAzureComponentFactory.Instance, namelessEndpointKey);
            var options      = new ServiceManagerOptions();

            optionsSetup.Configure(options);

            Assert.Equal(2, options.ServiceEndpoints.Length);
            Assert.Contains(options.ServiceEndpoints, e => endpointName == e.Name && serviceUris[0] == e.Endpoint);
            Assert.Contains(options.ServiceEndpoints, e => string.Empty == e.Name && serviceUris[1] == e.Endpoint);
        }