Пример #1
0
        public async Task PlayerConnectedEvent_WhenNewPlayerJoins_ShouldCreateConnection()
        {
            await using var playerOne = HubConnectionFactory.Create();
            await using var playerTwo = HubConnectionFactory.Create();
            await playerOne.StartAsync();

            await playerTwo.StartAsync();
        }
        public async Task Subscribe_should_subcribe_to_hub_events()
        {
            using var waitHandle = new ManualResetEvent(false);

            var configuration = new Dictionary <string, string>
            {
                ["ConnectionStrings:DefaultConnection"] = Guid.NewGuid().ToString(),
                ["ApiAuthentication:Authority"]         = "http://localhost",
                ["SignalR:HubUrl"]         = "http://localhost/providerhub",
                ["SignalR:UseMessagePack"] = "false",
                ["Seed"] = "true"
            };

            TestServer server = null;

            server = TestUtils.CreateTestServer(services =>
            {
                services.RemoveAll <HubHttpMessageHandlerAccessor>();
                services.AddTransient(p => new HubHttpMessageHandlerAccessor {
                    Handler = new MockHttpMessageHandler(waitHandle, server.CreateHandler())
                });
                services.RemoveAll <HttpClient>();
                services.AddTransient(p => server.CreateClient());
                services.RemoveAll <HttpClientHandler>();
                services.AddTransient <HttpClientHandler>(p => new MockHttpClientHandler(p.GetRequiredService <HttpClient>()));
            }, configuration, (endpoints, isProxy) =>
            {
                endpoints.MapRazorPages();
                endpoints.MapDefaultControllerRoute();
                if (!isProxy)
                {
                    endpoints.MapHub <ProviderHub>("/providerhub");
                }
            });
            using (server)
            {
                server.CreateWebSocketClient();

                var provider   = server.Host.Services;
                var store      = provider.GetRequiredService <IAdminStore <ExternalProvider> >();
                var serializer = provider.GetRequiredService <IAuthenticationSchemeOptionsSerializer>();

                var manager              = new NoPersistentDynamicManager <SchemeDefinition>(new Mock <IAuthenticationSchemeProvider>().Object, new OptionsMonitorCacheWrapperFactory(new Mock <IServiceProvider>().Object), Array.Empty <Type>());
                var wrapper1             = new KeyManagerWrapper <Microsoft.AspNetCore.DataProtection.AuthenticatedEncryption.ConfigurationModel.IAuthenticatedEncryptorDescriptor>(new Mock <IKeyManager>().Object, new Mock <IDefaultKeyResolver>().Object, new Mock <IProviderClient>().Object);
                var wrapper2             = new KeyManagerWrapper <IdentityServer.KeysRotation.RsaEncryptorDescriptor>(new Mock <IKeyManager>().Object, new Mock <IDefaultKeyResolver>().Object, new Mock <IProviderClient>().Object);
                var hubConnectionFactory = new HubConnectionFactory(provider.GetRequiredService <IConfiguration>(), provider, new NullLogger <HubConnectionFactory>());

                var connection = hubConnectionFactory.GetConnection(default);
        public void Constructor_should_throw_on_args_null()
        {
            Assert.Throws <ArgumentNullException>(() => new SchemeChangeSubscriber <SchemeDefinition>(null, null, null, null, null, null));
            var hubConnectionFactory = new HubConnectionFactory(new Mock <IConfiguration>().Object, new Mock <IServiceProvider>().Object, new NullLogger <HubConnectionFactory>());

            Assert.Throws <ArgumentNullException>(() => new SchemeChangeSubscriber <SchemeDefinition>(hubConnectionFactory, null, null, null, null, null));
            var manager = new NoPersistentDynamicManager <SchemeDefinition>(new Mock <IAuthenticationSchemeProvider>().Object, new OptionsMonitorCacheWrapperFactory(new Mock <IServiceProvider>().Object), Array.Empty <Type>());

            Assert.Throws <ArgumentNullException>(() => new SchemeChangeSubscriber <SchemeDefinition>(hubConnectionFactory, manager, null, null, null, null));
            Assert.Throws <ArgumentNullException>(() => new SchemeChangeSubscriber <SchemeDefinition>(hubConnectionFactory, manager, new Mock <IDynamicProviderStore <SchemeDefinition> >().Object, null, null, null));
            var wrapper1 = new KeyManagerWrapper <Microsoft.AspNetCore.DataProtection.AuthenticatedEncryption.ConfigurationModel.IAuthenticatedEncryptorDescriptor>(new Mock <IKeyManager>().Object, new Mock <IDefaultKeyResolver>().Object, new Mock <IProviderClient>().Object);

            Assert.Throws <ArgumentNullException>(() => new SchemeChangeSubscriber <SchemeDefinition>(hubConnectionFactory, manager, new Mock <IDynamicProviderStore <SchemeDefinition> >().Object, wrapper1, null, null));
            var wrapper2 = new KeyManagerWrapper <IdentityServer.KeysRotation.RsaEncryptorDescriptor>(new Mock <IKeyManager>().Object, new Mock <IDefaultKeyResolver>().Object, new Mock <IProviderClient>().Object);

            Assert.Throws <ArgumentNullException>(() => new SchemeChangeSubscriber <SchemeDefinition>(hubConnectionFactory, manager, new Mock <IDynamicProviderStore <SchemeDefinition> >().Object, wrapper1, wrapper2, null));
        }
        public async Task Setup()
        {
            string runType = TestContext.CurrentContext.Test.Properties.Get("RunType")?.ToString();

            // Start HubConnection
            HubConnectionFactory.InitHubConnection();
            await HubConnectionFactory.SignalRConnection.StartAsync();

            switch (runType.ToUpper())
            {
            case "DEV":
                DevRunRecord devRunRecord = new DevRunRecord()
                {
                    TestCaseId       = TestContext.CurrentContext.Test.Properties.Get("TestCaseId")?.ToString(),
                    TestCaseName     = TestContext.CurrentContext.Test.Properties.Get("TestCaseName")?.ToString(),
                    TestCaseCodeName = TestContext.CurrentContext.Test.Properties.Get("TestCaseCodeName")?.ToString(),
                    Description      = TestContext.CurrentContext.Test.Properties.Get("Description")?.ToString(),
                    Category         = TestContext.CurrentContext.Test.Properties.Get("Category")?.ToString(),
                    TestSuite        = TestContext.CurrentContext.Test.Properties.Get("TestSuite")?.ToString(),
                    TestGroup        = TestContext.CurrentContext.Test.Properties.Get("TestGroup")?.ToString(),
                    Team             = TestContext.CurrentContext.Test.Properties.Get("Team")?.ToString(),
                    StartAt          = DateTime.UtcNow,
                    RunMachine       = Environment.MachineName,
                    WorkItem         = TestContext.CurrentContext.Test.Properties.Get("WorkItem")?.ToString(),
                    Status           = TestContext.CurrentContext.Result.Outcome.Status.ToString(),
                    TestCaseType     = TestContext.CurrentContext.Test.Properties.Get("TestCaseType")?.ToString(),
                };

                //TestCase Info
                Console.WriteLine(
                    $"---------------------{new string('-', devRunRecord.TestCaseId.Length)}--{new string('-', devRunRecord.TestCaseName.Length)}-------");
                Console.WriteLine(
                    $"------ Run TestCase: {devRunRecord.TestCaseId}: {devRunRecord.TestCaseName} ------");
                Console.WriteLine(
                    $"---------------------{new string('-', devRunRecord.TestCaseId.Length)}--{new string('-', devRunRecord.TestCaseName.Length)}-------");
                Console.WriteLine("");

                devRunRecord.Log  = $"{DateTime.UtcNow} - [Setup]: -------- Setup --------";
                devRunRecord.Log += "\nTest Case attributes:";
                IList <string> lstPros = TestContext.CurrentContext.Test.Properties.Keys.ToList <string>();
                foreach (var key in lstPros)
                {
                    if (!key.Equals("WebDriver"))     //WebDriver attribute is multiple, so need to get list of it before action
                    {
                        Console.WriteLine($"[{key}]: {TestContext.CurrentContext.Test.Properties.Get(key)}");
                        devRunRecord.Log += $"\n[{key}]: {TestContext.CurrentContext.Test.Properties.Get(key)}";
                    }
                    else
                    {
                        IList lstDriver = (IList)TestContext.CurrentContext.Test.Properties["WebDriver"];
                        foreach (string driver in lstDriver)
                        {
                            Console.WriteLine($"[{key}]: {driver}");
                            devRunRecord.Log += $"\n[{key}]: {driver}";
                        }
                    }
                }

                devRunRecord.Log += "\n";
                _runId            = await MongoDBHelpers.InitDevRunRecord(devRunRecord);

                TestExecutionContext.CurrentContext.CurrentTest.Properties.Set("Id", _runId);
                TestExecutionContext.CurrentContext.CurrentTest.Properties.Set("StartAt", devRunRecord.StartAt);
                await HubConnectionFactory.SignalRConnection.InvokeAsync("DevRunningInfo", devRunRecord);

                break;

            case "REGRESSION":
                RegressionRunRecord regRunRecord = new RegressionRunRecord()
                {
                    RegressionTestId = TestContext.CurrentContext.Test.Properties.Get("RegressionTestId")?.ToString(),
                    ErrorMessage     = string.Empty,
                    Log             = string.Empty,
                    ErrorScreenshot = string.Empty,
                    Screenshot1     = string.Empty,
                    Screenshot2     = string.Empty,
                    StartAt         = DateTime.UtcNow,
                    ClientName      = string.Empty,
                    RunMachine      = Environment.MachineName,
                    Status          = TestContext.CurrentContext.Result.Outcome.Status.ToString(),
                };
                _runId = await MongoDBHelpers.InitRegRunRecord(regRunRecord);

                TestExecutionContext.CurrentContext.CurrentTest.Properties.Set("Id", _runId);
                TestExecutionContext.CurrentContext.CurrentTest.Properties.Set("StartAt", regRunRecord.StartAt);
                break;
            }
        }