Esempio n. 1
0
        private async Task RunTestablesOnlyRunAllAsync(Test container, List <ControllerBase> testables, bool runAll)
        {
            foreach (var testable in testables)
            {
                var methods = testable.GetType()
                              .GetMethods()
                              .Where(testMethod =>
                {
                    var group         = testMethod.GetCustomAttribute <SwaggerGroupAttribute>();
                    var hideInSwagger = testMethod.GetCustomAttribute <ApiExplorerSettingsAttribute>();
                    return(group != null && hideInSwagger == null &&
                           ((runAll && testMethod.Name == nameof(ITestable.RunAllAsync)) ||
                            (!runAll && testMethod.Name != nameof(ITestable.RunAllAsync))) &&
                           testMethod.Name != "TopLevelAllTestsAsync");     // Special for preventing loops in AllTestsController
                })
                              .ToList();

                foreach (var method in methods)
                {
                    Test test = null;
                    try
                    {
#pragma warning disable 8632
                        var task = (Task <Test>)method.Invoke(testable, new object?[] { container });
#pragma warning restore 8632
                        test = await task;
                    }
                    catch (Exception e)
                    {
                        if (test != null)
                        {
                            await TestLogic.SetStateAsync(test, StateEnum.Failed, e.Message);
                        }
                        else
                        {
                            await TestLogic.SetStateAsync(container, StateEnum.Failed, e.Message);
                        }
                    }
                }
            }
        }
Esempio n. 2
0
        public async Task Publish(string entityName, string eventName, int major, int minor, JObject content)
        {
            ServiceContract.RequireNotNull(entityName, nameof(entityName));
            ServiceContract.RequireNotNull(eventName, nameof(eventName));
            ServiceContract.RequireGreaterThan(0, major, nameof(major));
            ServiceContract.RequireGreaterThanOrEqualTo(0, minor, nameof(minor));
            ServiceContract.RequireNotNull(content, nameof(content));

            var correlationId = FulcrumApplication.Context.CorrelationId;
            var test          = await _testLogic.GetAsync(correlationId);

            if (test != null)
            {
                try
                {
                    var client  = FulcrumApplication.Context.CallingClientName;
                    var payload = JObject.FromObject(content);
                    var result  = await _integrationApiClient.TestBenchPublish(entityName, eventName, major, minor, client, payload);

                    if (result.Verified)
                    {
                        await _integrationApiClient.PublishEvent(entityName, eventName, major, minor, client, payload);

                        await _testLogic.SetStateAsync(test, StateEnum.Ok, "Event intercepted and verified with BE Test bench");
                    }
                    else
                    {
                        var message = string.Join(", ", result.Errors) +
                                      $" | Contract: {JsonConvert.SerializeObject(result.Contract)}" +
                                      $" | Payload: {JsonConvert.SerializeObject(result.Payload)}";
                        await _testLogic.SetStateAsync(test, StateEnum.Failed, message);
                    }
                }
                catch (Exception e)
                {
                    await _testLogic.SetStateAsync(test, StateEnum.Failed, e.Message);
                }
            }
        }