diff --git a/LittleShop.Client/Models/CustomerMessage.cs b/LittleShop.Client/Models/CustomerMessage.cs index 41fe0e4..c16adb8 100644 --- a/LittleShop.Client/Models/CustomerMessage.cs +++ b/LittleShop.Client/Models/CustomerMessage.cs @@ -11,6 +11,7 @@ public class CustomerMessage public bool IsUrgent { get; set; } public string? OrderReference { get; set; } public DateTime CreatedAt { get; set; } + public int Direction { get; set; } // 0 = AdminToCustomer, 1 = CustomerToAdmin } public enum MessageType diff --git a/LittleShop.Client/Services/IMessageService.cs b/LittleShop.Client/Services/IMessageService.cs index 6e6a4dd..3c57718 100644 --- a/LittleShop.Client/Services/IMessageService.cs +++ b/LittleShop.Client/Services/IMessageService.cs @@ -8,4 +8,5 @@ public interface IMessageService Task MarkMessageAsSentAsync(Guid messageId, string? platformMessageId = null); Task MarkMessageAsFailedAsync(Guid messageId, string reason); Task CreateCustomerMessageAsync(object messageData); + Task?> GetCustomerMessagesAsync(Guid customerId); } \ No newline at end of file diff --git a/LittleShop.Client/Services/IOrderService.cs b/LittleShop.Client/Services/IOrderService.cs index 4c15e22..5d416c1 100644 --- a/LittleShop.Client/Services/IOrderService.cs +++ b/LittleShop.Client/Services/IOrderService.cs @@ -6,6 +6,7 @@ public interface IOrderService { Task> CreateOrderAsync(CreateOrderRequest request); Task>> GetOrdersByIdentityAsync(string identityReference); + Task>> GetOrdersByCustomerIdAsync(Guid customerId); Task> GetOrderByIdAsync(Guid id); Task> CreatePaymentAsync(Guid orderId, int currency); Task>> GetOrderPaymentsAsync(Guid orderId); diff --git a/LittleShop.Client/Services/MessageService.cs b/LittleShop.Client/Services/MessageService.cs index 0a1aed1..29b4b60 100644 --- a/LittleShop.Client/Services/MessageService.cs +++ b/LittleShop.Client/Services/MessageService.cs @@ -84,4 +84,26 @@ public class MessageService : IMessageService return false; } } + + public async Task?> GetCustomerMessagesAsync(Guid customerId) + { + try + { + var response = await _httpClient.GetAsync($"api/bot/messages/customer/{customerId}"); + + if (response.IsSuccessStatusCode) + { + var messages = await response.Content.ReadFromJsonAsync>(); + return messages ?? new List(); + } + + _logger.LogWarning("Failed to get customer messages: {StatusCode}", response.StatusCode); + return new List(); + } + catch (Exception ex) + { + _logger.LogError(ex, "Error getting customer messages"); + return new List(); + } + } } \ No newline at end of file diff --git a/LittleShop.Client/Services/OrderService.cs b/LittleShop.Client/Services/OrderService.cs index fc2a58f..9a012b2 100644 --- a/LittleShop.Client/Services/OrderService.cs +++ b/LittleShop.Client/Services/OrderService.cs @@ -64,6 +64,30 @@ public class OrderService : IOrderService System.Net.HttpStatusCode.InternalServerError); } } + + public async Task>> GetOrdersByCustomerIdAsync(Guid customerId) + { + try + { + var response = await _httpClient.GetAsync($"api/orders/by-customer/{customerId}"); + + if (response.IsSuccessStatusCode) + { + var orders = await response.Content.ReadFromJsonAsync>(); + return ApiResponse>.Success(orders ?? new List()); + } + + var error = await response.Content.ReadAsStringAsync(); + return ApiResponse>.Failure(error, response.StatusCode); + } + catch (Exception ex) + { + _logger.LogError(ex, "Failed to get orders for customer {CustomerId}", customerId); + return ApiResponse>.Failure( + ex.Message, + System.Net.HttpStatusCode.InternalServerError); + } + } public async Task> GetOrderByIdAsync(Guid id) { diff --git a/LittleShop/Areas/Admin/Controllers/MessagesController.cs b/LittleShop/Areas/Admin/Controllers/MessagesController.cs index fd818d2..aada2a1 100644 --- a/LittleShop/Areas/Admin/Controllers/MessagesController.cs +++ b/LittleShop/Areas/Admin/Controllers/MessagesController.cs @@ -11,11 +11,13 @@ namespace LittleShop.Areas.Admin.Controllers; public class MessagesController : Controller { private readonly ICustomerMessageService _messageService; + private readonly ICustomerService _customerService; private readonly ILogger _logger; - public MessagesController(ICustomerMessageService messageService, ILogger logger) + public MessagesController(ICustomerMessageService messageService, ICustomerService customerService, ILogger logger) { _messageService = messageService; + _customerService = customerService; _logger = logger; } @@ -28,9 +30,42 @@ public class MessagesController : Controller public async Task Customer(Guid id) { var conversation = await _messageService.GetMessageThreadAsync(id); + + // If no conversation exists yet, create an empty one for this customer if (conversation == null) { - return NotFound(); + // Check if customer exists + var customerExists = await _messageService.ValidateCustomerExistsAsync(id); + if (!customerExists) + { + TempData["Error"] = "Customer not found."; + return RedirectToAction("Index"); + } + + // Get customer information + var customer = await _customerService.GetCustomerByIdAsync(id); + if (customer == null) + { + TempData["Error"] = "Customer information not available."; + return RedirectToAction("Index"); + } + + // Create empty conversation structure for new conversation + conversation = new MessageThreadDto + { + ThreadId = id, + Subject = customer.DisplayName, + CustomerId = id, + CustomerName = customer.DisplayName, + OrderId = null, + OrderReference = null, + StartedAt = DateTime.UtcNow, + LastMessageAt = DateTime.UtcNow, + MessageCount = 0, + HasUnreadMessages = false, + RequiresResponse = false, + Messages = new List() + }; } return View(conversation); diff --git a/LittleShop/Areas/Admin/Views/Messages/Customer.cshtml b/LittleShop/Areas/Admin/Views/Messages/Customer.cshtml index 33e6289..01d1dbe 100644 --- a/LittleShop/Areas/Admin/Views/Messages/Customer.cshtml +++ b/LittleShop/Areas/Admin/Views/Messages/Customer.cshtml @@ -4,6 +4,15 @@ ViewData["Title"] = $"Conversation with {Model.CustomerName}"; } +@{ + // Get customer info if name is not loaded + if (Model.CustomerName == "Loading...") + { + // This would need to be loaded via a service call + Model.CustomerName = "Customer"; // Fallback + } +} +
@@ -41,8 +50,19 @@
- @foreach (var message in Model.Messages.OrderBy(m => m.CreatedAt)) + @if (!Model.Messages.Any()) { +
+ +
No messages yet
+

This is the start of your conversation with @Model.CustomerName.

+

Send a message below to begin the conversation.

+
+ } + else + { + @foreach (var message in Model.Messages.OrderBy(m => m.CreatedAt)) + {
@@ -84,6 +104,7 @@
+ } }
@@ -118,7 +139,7 @@
-
Send Reply
+
@(Model.MessageCount == 0 ? "Start Conversation" : "Send Reply")
@@ -126,7 +147,7 @@
- +
@@ -137,7 +158,7 @@
diff --git a/LittleShop/Controllers/BotMessagesController.cs b/LittleShop/Controllers/BotMessagesController.cs index 236c29b..2aaed17 100644 --- a/LittleShop/Controllers/BotMessagesController.cs +++ b/LittleShop/Controllers/BotMessagesController.cs @@ -110,6 +110,13 @@ public class BotMessagesController : ControllerBase return BadRequest($"Error creating customer message: {ex.Message}"); } } + + [HttpGet("customer/{customerId}")] + public async Task>> GetCustomerMessages(Guid customerId) + { + var messages = await _messageService.GetCustomerMessagesAsync(customerId); + return Ok(messages); + } } // TEMPORARY DTO FOR TESTING diff --git a/LittleShop/Controllers/OrdersController.cs b/LittleShop/Controllers/OrdersController.cs index c07500a..198dfd4 100644 --- a/LittleShop/Controllers/OrdersController.cs +++ b/LittleShop/Controllers/OrdersController.cs @@ -64,6 +64,14 @@ public class OrdersController : ControllerBase return Ok(orders); } + [HttpGet("by-customer/{customerId}")] + [AllowAnonymous] + public async Task>> GetOrdersByCustomerId(Guid customerId) + { + var orders = await _orderService.GetOrdersByCustomerIdAsync(customerId); + return Ok(orders); + } + [HttpGet("by-identity/{identityReference}/{id}")] [AllowAnonymous] public async Task> GetOrderByIdentity(string identityReference, Guid id) diff --git a/LittleShop/Services/IOrderService.cs b/LittleShop/Services/IOrderService.cs index 88a827d..50753b9 100644 --- a/LittleShop/Services/IOrderService.cs +++ b/LittleShop/Services/IOrderService.cs @@ -6,6 +6,7 @@ public interface IOrderService { Task> GetAllOrdersAsync(); Task> GetOrdersByIdentityAsync(string identityReference); + Task> GetOrdersByCustomerIdAsync(Guid customerId); Task GetOrderByIdAsync(Guid id); Task CreateOrderAsync(CreateOrderDto createOrderDto); Task UpdateOrderStatusAsync(Guid id, UpdateOrderStatusDto updateOrderStatusDto); diff --git a/LittleShop/Services/OrderService.cs b/LittleShop/Services/OrderService.cs index b9a87fa..21a76ee 100644 --- a/LittleShop/Services/OrderService.cs +++ b/LittleShop/Services/OrderService.cs @@ -46,6 +46,20 @@ public class OrderService : IOrderService return orders.Select(MapToDto); } + public async Task> GetOrdersByCustomerIdAsync(Guid customerId) + { + var orders = await _context.Orders + .Include(o => o.Customer) + .Include(o => o.Items) + .ThenInclude(oi => oi.Product) + .Include(o => o.Payments) + .Where(o => o.CustomerId == customerId) + .OrderByDescending(o => o.CreatedAt) + .ToListAsync(); + + return orders.Select(MapToDto); + } + public async Task GetOrderByIdAsync(Guid id) { var order = await _context.Orders diff --git a/LittleShop/TestAgent_Results/authentication_analysis.json b/LittleShop/TestAgent_Results/authentication_analysis.json new file mode 100644 index 0000000..5ccf6c9 --- /dev/null +++ b/LittleShop/TestAgent_Results/authentication_analysis.json @@ -0,0 +1,2447 @@ +{ + "Summary": { + "TotalStates": 3, + "TotalEndpoints": 115, + "ProtectedEndpoints": 10, + "PublicEndpoints": 105, + "IdentifiedGaps": 153, + "AuthenticationTransitions": 7 + }, + "States": [ + { + "Name": "Anonymous", + "IsAuthenticated": false, + "Roles": [], + "Claims": [], + "AccessibleEndpoints": [ + "AuthController/Login", + "BotMessagesController/GetPendingMessages", + "BotMessagesController/MarkMessageAsSent", + "BotMessagesController/MarkMessageAsFailed", + "BotMessagesController/CreateTestMessage", + "BotMessagesController/CreateCustomerMessage", + "BotMessagesController/GetCustomerMessages", + "BotsController/RegisterBot", + "BotsController/AuthenticateBot", + "BotsController/GetBotSettings", + "BotsController/UpdateBotSettings", + "BotsController/RecordHeartbeat", + "BotsController/UpdatePlatformInfo", + "BotsController/RecordMetric", + "BotsController/RecordMetricsBatch", + "BotsController/StartSession", + "BotsController/UpdateSession", + "BotsController/EndSession", + "CatalogController/GetCategories", + "CatalogController/GetCategory", + "CatalogController/GetProducts", + "CatalogController/GetProduct", + "CustomersController/GetCustomers", + "CustomersController/GetCustomer", + "CustomersController/GetCustomerByTelegramId", + "CustomersController/CreateCustomer", + "CustomersController/GetOrCreateCustomer", + "CustomersController/UpdateCustomer", + "CustomersController/BlockCustomer", + "CustomersController/UnblockCustomer", + "CustomersController/DeleteCustomer", + "HomeController/Index", + "MessagesController/SendMessage", + "MessagesController/GetMessage", + "MessagesController/GetCustomerMessages", + "MessagesController/GetOrderMessages", + "MessagesController/GetPendingMessages", + "MessagesController/MarkMessageAsSent", + "MessagesController/MarkMessageAsDelivered", + "MessagesController/MarkMessageAsFailed", + "OrdersController/GetOrdersByIdentity", + "OrdersController/GetOrdersByCustomerId", + "OrdersController/GetOrderByIdentity", + "OrdersController/CreateOrder", + "OrdersController/CreatePayment", + "OrdersController/GetOrderPayments", + "OrdersController/GetPaymentStatus", + "OrdersController/CancelOrder", + "OrdersController/PaymentWebhook", + "TestController/CreateTestProduct", + "TestController/SetupTestData", + "AccountController/Login", + "AccountController/Login", + "AccountController/AccessDenied", + "BotsController/Index", + "BotsController/Details", + "BotsController/Create", + "BotsController/Wizard", + "BotsController/Wizard", + "BotsController/CompleteWizard", + "BotsController/Create", + "BotsController/Edit", + "BotsController/Edit", + "BotsController/Metrics", + "BotsController/Delete", + "BotsController/Suspend", + "BotsController/Activate", + "BotsController/RegenerateKey", + "CategoriesController/Index", + "CategoriesController/Create", + "CategoriesController/Create", + "CategoriesController/Edit", + "CategoriesController/Edit", + "CategoriesController/Delete", + "DashboardController/Index", + "MessagesController/Index", + "MessagesController/Customer", + "MessagesController/Reply", + "OrdersController/Index", + "OrdersController/Details", + "OrdersController/Create", + "OrdersController/Create", + "OrdersController/Edit", + "OrdersController/Edit", + "OrdersController/UpdateStatus", + "ProductsController/Index", + "ProductsController/Create", + "ProductsController/Create", + "ProductsController/Edit", + "ProductsController/Edit", + "ProductsController/UploadPhoto", + "ProductsController/DeletePhoto", + "ProductsController/Delete", + "ShippingRatesController/Index", + "ShippingRatesController/Create", + "ShippingRatesController/Create", + "ShippingRatesController/Edit", + "ShippingRatesController/Edit", + "ShippingRatesController/Delete", + "UsersController/Index", + "UsersController/Create", + "UsersController/Create", + "UsersController/Edit", + "UsersController/Edit", + "UsersController/Delete" + ] + }, + { + "Name": "Authenticated", + "IsAuthenticated": true, + "Roles": [], + "Claims": [], + "AccessibleEndpoints": [ + "AuthController/Login", + "BotMessagesController/GetPendingMessages", + "BotMessagesController/MarkMessageAsSent", + "BotMessagesController/MarkMessageAsFailed", + "BotMessagesController/CreateTestMessage", + "BotMessagesController/CreateCustomerMessage", + "BotMessagesController/GetCustomerMessages", + "BotsController/RegisterBot", + "BotsController/AuthenticateBot", + "BotsController/GetBotSettings", + "BotsController/UpdateBotSettings", + "BotsController/RecordHeartbeat", + "BotsController/UpdatePlatformInfo", + "BotsController/RecordMetric", + "BotsController/RecordMetricsBatch", + "BotsController/StartSession", + "BotsController/UpdateSession", + "BotsController/EndSession", + "CatalogController/GetCategories", + "CatalogController/GetCategory", + "CatalogController/GetProducts", + "CatalogController/GetProduct", + "CustomersController/GetCustomers", + "CustomersController/GetCustomer", + "CustomersController/GetCustomerByTelegramId", + "CustomersController/CreateCustomer", + "CustomersController/GetOrCreateCustomer", + "CustomersController/UpdateCustomer", + "CustomersController/BlockCustomer", + "CustomersController/UnblockCustomer", + "CustomersController/DeleteCustomer", + "HomeController/Index", + "MessagesController/SendMessage", + "MessagesController/GetMessage", + "MessagesController/GetCustomerMessages", + "MessagesController/GetOrderMessages", + "MessagesController/GetPendingMessages", + "MessagesController/MarkMessageAsSent", + "MessagesController/MarkMessageAsDelivered", + "MessagesController/MarkMessageAsFailed", + "OrdersController/GetOrdersByIdentity", + "OrdersController/GetOrdersByCustomerId", + "OrdersController/GetOrderByIdentity", + "OrdersController/CreateOrder", + "OrdersController/CreatePayment", + "OrdersController/GetOrderPayments", + "OrdersController/GetPaymentStatus", + "OrdersController/CancelOrder", + "OrdersController/PaymentWebhook", + "TestController/CreateTestProduct", + "TestController/SetupTestData", + "AccountController/Login", + "AccountController/Login", + "AccountController/Logout", + "AccountController/AccessDenied", + "BotsController/Index", + "BotsController/Details", + "BotsController/Create", + "BotsController/Wizard", + "BotsController/Wizard", + "BotsController/CompleteWizard", + "BotsController/Create", + "BotsController/Edit", + "BotsController/Edit", + "BotsController/Metrics", + "BotsController/Delete", + "BotsController/Suspend", + "BotsController/Activate", + "BotsController/RegenerateKey", + "CategoriesController/Index", + "CategoriesController/Create", + "CategoriesController/Create", + "CategoriesController/Edit", + "CategoriesController/Edit", + "CategoriesController/Delete", + "DashboardController/Index", + "MessagesController/Index", + "MessagesController/Customer", + "MessagesController/Reply", + "OrdersController/Index", + "OrdersController/Details", + "OrdersController/Create", + "OrdersController/Create", + "OrdersController/Edit", + "OrdersController/Edit", + "OrdersController/UpdateStatus", + "ProductsController/Index", + "ProductsController/Create", + "ProductsController/Create", + "ProductsController/Edit", + "ProductsController/Edit", + "ProductsController/UploadPhoto", + "ProductsController/DeletePhoto", + "ProductsController/Delete", + "ShippingRatesController/Index", + "ShippingRatesController/Create", + "ShippingRatesController/Create", + "ShippingRatesController/Edit", + "ShippingRatesController/Edit", + "ShippingRatesController/Delete", + "UsersController/Index", + "UsersController/Create", + "UsersController/Create", + "UsersController/Edit", + "UsersController/Edit", + "UsersController/Delete" + ] + }, + { + "Name": "Authenticated_Admin", + "IsAuthenticated": true, + "Roles": [ + "Admin" + ], + "Claims": [], + "AccessibleEndpoints": [ + "AuthController/Login", + "BotMessagesController/GetPendingMessages", + "BotMessagesController/MarkMessageAsSent", + "BotMessagesController/MarkMessageAsFailed", + "BotMessagesController/CreateTestMessage", + "BotMessagesController/CreateCustomerMessage", + "BotMessagesController/GetCustomerMessages", + "BotsController/RegisterBot", + "BotsController/AuthenticateBot", + "BotsController/GetBotSettings", + "BotsController/UpdateBotSettings", + "BotsController/RecordHeartbeat", + "BotsController/UpdatePlatformInfo", + "BotsController/RecordMetric", + "BotsController/RecordMetricsBatch", + "BotsController/StartSession", + "BotsController/UpdateSession", + "BotsController/EndSession", + "BotsController/GetAllBots", + "BotsController/GetBot", + "BotsController/GetBotMetrics", + "BotsController/GetMetricsSummary", + "BotsController/GetBotSessions", + "BotsController/DeleteBot", + "CatalogController/GetCategories", + "CatalogController/GetCategory", + "CatalogController/GetProducts", + "CatalogController/GetProduct", + "CustomersController/GetCustomers", + "CustomersController/GetCustomer", + "CustomersController/GetCustomerByTelegramId", + "CustomersController/CreateCustomer", + "CustomersController/GetOrCreateCustomer", + "CustomersController/UpdateCustomer", + "CustomersController/BlockCustomer", + "CustomersController/UnblockCustomer", + "CustomersController/DeleteCustomer", + "HomeController/Index", + "MessagesController/SendMessage", + "MessagesController/GetMessage", + "MessagesController/GetCustomerMessages", + "MessagesController/GetOrderMessages", + "MessagesController/GetPendingMessages", + "MessagesController/MarkMessageAsSent", + "MessagesController/MarkMessageAsDelivered", + "MessagesController/MarkMessageAsFailed", + "OrdersController/GetAllOrders", + "OrdersController/GetOrder", + "OrdersController/UpdateOrderStatus", + "OrdersController/GetOrdersByIdentity", + "OrdersController/GetOrdersByCustomerId", + "OrdersController/GetOrderByIdentity", + "OrdersController/CreateOrder", + "OrdersController/CreatePayment", + "OrdersController/GetOrderPayments", + "OrdersController/GetPaymentStatus", + "OrdersController/CancelOrder", + "OrdersController/PaymentWebhook", + "TestController/CreateTestProduct", + "TestController/SetupTestData", + "AccountController/Login", + "AccountController/Login", + "AccountController/Logout", + "AccountController/AccessDenied", + "BotsController/Index", + "BotsController/Details", + "BotsController/Create", + "BotsController/Wizard", + "BotsController/Wizard", + "BotsController/CompleteWizard", + "BotsController/Create", + "BotsController/Edit", + "BotsController/Edit", + "BotsController/Metrics", + "BotsController/Delete", + "BotsController/Suspend", + "BotsController/Activate", + "BotsController/RegenerateKey", + "CategoriesController/Index", + "CategoriesController/Create", + "CategoriesController/Create", + "CategoriesController/Edit", + "CategoriesController/Edit", + "CategoriesController/Delete", + "DashboardController/Index", + "MessagesController/Index", + "MessagesController/Customer", + "MessagesController/Reply", + "OrdersController/Index", + "OrdersController/Details", + "OrdersController/Create", + "OrdersController/Create", + "OrdersController/Edit", + "OrdersController/Edit", + "OrdersController/UpdateStatus", + "ProductsController/Index", + "ProductsController/Create", + "ProductsController/Create", + "ProductsController/Edit", + "ProductsController/Edit", + "ProductsController/UploadPhoto", + "ProductsController/DeletePhoto", + "ProductsController/Delete", + "ShippingRatesController/Index", + "ShippingRatesController/Create", + "ShippingRatesController/Create", + "ShippingRatesController/Edit", + "ShippingRatesController/Edit", + "ShippingRatesController/Delete", + "UsersController/Index", + "UsersController/Create", + "UsersController/Create", + "UsersController/Edit", + "UsersController/Edit", + "UsersController/Delete" + ] + } + ], + "EndpointRequirements": [ + { + "Endpoint": "AuthController/Login", + "Controller": "AuthController", + "Action": "Login", + "RequiresAuth": false, + "RequiredRoles": [], + "AllowsAnonymous": false, + "AccessibleByStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous" + ] + }, + { + "Endpoint": "BotMessagesController/GetPendingMessages", + "Controller": "BotMessagesController", + "Action": "GetPendingMessages", + "RequiresAuth": false, + "RequiredRoles": [], + "AllowsAnonymous": false, + "AccessibleByStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous" + ] + }, + { + "Endpoint": "BotMessagesController/MarkMessageAsSent", + "Controller": "BotMessagesController", + "Action": "MarkMessageAsSent", + "RequiresAuth": false, + "RequiredRoles": [], + "AllowsAnonymous": false, + "AccessibleByStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous" + ] + }, + { + "Endpoint": "BotMessagesController/MarkMessageAsFailed", + "Controller": "BotMessagesController", + "Action": "MarkMessageAsFailed", + "RequiresAuth": false, + "RequiredRoles": [], + "AllowsAnonymous": false, + "AccessibleByStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous" + ] + }, + { + "Endpoint": "BotMessagesController/CreateTestMessage", + "Controller": "BotMessagesController", + "Action": "CreateTestMessage", + "RequiresAuth": false, + "RequiredRoles": [], + "AllowsAnonymous": false, + "AccessibleByStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous" + ] + }, + { + "Endpoint": "BotMessagesController/CreateCustomerMessage", + "Controller": "BotMessagesController", + "Action": "CreateCustomerMessage", + "RequiresAuth": false, + "RequiredRoles": [], + "AllowsAnonymous": false, + "AccessibleByStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous" + ] + }, + { + "Endpoint": "BotMessagesController/GetCustomerMessages", + "Controller": "BotMessagesController", + "Action": "GetCustomerMessages", + "RequiresAuth": false, + "RequiredRoles": [], + "AllowsAnonymous": false, + "AccessibleByStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous" + ] + }, + { + "Endpoint": "BotsController/RegisterBot", + "Controller": "BotsController", + "Action": "RegisterBot", + "RequiresAuth": false, + "RequiredRoles": [], + "AllowsAnonymous": true, + "AccessibleByStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ] + }, + { + "Endpoint": "BotsController/AuthenticateBot", + "Controller": "BotsController", + "Action": "AuthenticateBot", + "RequiresAuth": false, + "RequiredRoles": [], + "AllowsAnonymous": true, + "AccessibleByStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ] + }, + { + "Endpoint": "BotsController/GetBotSettings", + "Controller": "BotsController", + "Action": "GetBotSettings", + "RequiresAuth": false, + "RequiredRoles": [], + "AllowsAnonymous": false, + "AccessibleByStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous" + ] + }, + { + "Endpoint": "BotsController/UpdateBotSettings", + "Controller": "BotsController", + "Action": "UpdateBotSettings", + "RequiresAuth": false, + "RequiredRoles": [], + "AllowsAnonymous": false, + "AccessibleByStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous" + ] + }, + { + "Endpoint": "BotsController/RecordHeartbeat", + "Controller": "BotsController", + "Action": "RecordHeartbeat", + "RequiresAuth": false, + "RequiredRoles": [], + "AllowsAnonymous": false, + "AccessibleByStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous" + ] + }, + { + "Endpoint": "BotsController/UpdatePlatformInfo", + "Controller": "BotsController", + "Action": "UpdatePlatformInfo", + "RequiresAuth": false, + "RequiredRoles": [], + "AllowsAnonymous": false, + "AccessibleByStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous" + ] + }, + { + "Endpoint": "BotsController/RecordMetric", + "Controller": "BotsController", + "Action": "RecordMetric", + "RequiresAuth": false, + "RequiredRoles": [], + "AllowsAnonymous": false, + "AccessibleByStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous" + ] + }, + { + "Endpoint": "BotsController/RecordMetricsBatch", + "Controller": "BotsController", + "Action": "RecordMetricsBatch", + "RequiresAuth": false, + "RequiredRoles": [], + "AllowsAnonymous": false, + "AccessibleByStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous" + ] + }, + { + "Endpoint": "BotsController/StartSession", + "Controller": "BotsController", + "Action": "StartSession", + "RequiresAuth": false, + "RequiredRoles": [], + "AllowsAnonymous": false, + "AccessibleByStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous" + ] + }, + { + "Endpoint": "BotsController/UpdateSession", + "Controller": "BotsController", + "Action": "UpdateSession", + "RequiresAuth": false, + "RequiredRoles": [], + "AllowsAnonymous": false, + "AccessibleByStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous" + ] + }, + { + "Endpoint": "BotsController/EndSession", + "Controller": "BotsController", + "Action": "EndSession", + "RequiresAuth": false, + "RequiredRoles": [], + "AllowsAnonymous": false, + "AccessibleByStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous" + ] + }, + { + "Endpoint": "BotsController/GetAllBots", + "Controller": "BotsController", + "Action": "GetAllBots", + "RequiresAuth": true, + "RequiredRoles": [ + "Admin" + ], + "AllowsAnonymous": false, + "AccessibleByStates": [ + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous", + "Authenticated_Admin" + ] + }, + { + "Endpoint": "BotsController/GetBot", + "Controller": "BotsController", + "Action": "GetBot", + "RequiresAuth": true, + "RequiredRoles": [ + "Admin" + ], + "AllowsAnonymous": false, + "AccessibleByStates": [ + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous", + "Authenticated_Admin" + ] + }, + { + "Endpoint": "BotsController/GetBotMetrics", + "Controller": "BotsController", + "Action": "GetBotMetrics", + "RequiresAuth": true, + "RequiredRoles": [ + "Admin" + ], + "AllowsAnonymous": false, + "AccessibleByStates": [ + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous", + "Authenticated_Admin" + ] + }, + { + "Endpoint": "BotsController/GetMetricsSummary", + "Controller": "BotsController", + "Action": "GetMetricsSummary", + "RequiresAuth": true, + "RequiredRoles": [ + "Admin" + ], + "AllowsAnonymous": false, + "AccessibleByStates": [ + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous", + "Authenticated_Admin" + ] + }, + { + "Endpoint": "BotsController/GetBotSessions", + "Controller": "BotsController", + "Action": "GetBotSessions", + "RequiresAuth": true, + "RequiredRoles": [ + "Admin" + ], + "AllowsAnonymous": false, + "AccessibleByStates": [ + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous", + "Authenticated_Admin" + ] + }, + { + "Endpoint": "BotsController/DeleteBot", + "Controller": "BotsController", + "Action": "DeleteBot", + "RequiresAuth": true, + "RequiredRoles": [ + "Admin" + ], + "AllowsAnonymous": false, + "AccessibleByStates": [ + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous", + "Authenticated_Admin" + ] + }, + { + "Endpoint": "CatalogController/GetCategories", + "Controller": "CatalogController", + "Action": "GetCategories", + "RequiresAuth": false, + "RequiredRoles": [], + "AllowsAnonymous": false, + "AccessibleByStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous" + ] + }, + { + "Endpoint": "CatalogController/GetCategory", + "Controller": "CatalogController", + "Action": "GetCategory", + "RequiresAuth": false, + "RequiredRoles": [], + "AllowsAnonymous": false, + "AccessibleByStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous" + ] + }, + { + "Endpoint": "CatalogController/GetProducts", + "Controller": "CatalogController", + "Action": "GetProducts", + "RequiresAuth": false, + "RequiredRoles": [], + "AllowsAnonymous": false, + "AccessibleByStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous" + ] + }, + { + "Endpoint": "CatalogController/GetProduct", + "Controller": "CatalogController", + "Action": "GetProduct", + "RequiresAuth": false, + "RequiredRoles": [], + "AllowsAnonymous": false, + "AccessibleByStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous" + ] + }, + { + "Endpoint": "CustomersController/GetCustomers", + "Controller": "CustomersController", + "Action": "GetCustomers", + "RequiresAuth": false, + "RequiredRoles": [], + "AllowsAnonymous": false, + "AccessibleByStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous" + ] + }, + { + "Endpoint": "CustomersController/GetCustomer", + "Controller": "CustomersController", + "Action": "GetCustomer", + "RequiresAuth": false, + "RequiredRoles": [], + "AllowsAnonymous": false, + "AccessibleByStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous" + ] + }, + { + "Endpoint": "CustomersController/GetCustomerByTelegramId", + "Controller": "CustomersController", + "Action": "GetCustomerByTelegramId", + "RequiresAuth": false, + "RequiredRoles": [], + "AllowsAnonymous": false, + "AccessibleByStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous" + ] + }, + { + "Endpoint": "CustomersController/CreateCustomer", + "Controller": "CustomersController", + "Action": "CreateCustomer", + "RequiresAuth": false, + "RequiredRoles": [], + "AllowsAnonymous": false, + "AccessibleByStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous" + ] + }, + { + "Endpoint": "CustomersController/GetOrCreateCustomer", + "Controller": "CustomersController", + "Action": "GetOrCreateCustomer", + "RequiresAuth": false, + "RequiredRoles": [], + "AllowsAnonymous": true, + "AccessibleByStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ] + }, + { + "Endpoint": "CustomersController/UpdateCustomer", + "Controller": "CustomersController", + "Action": "UpdateCustomer", + "RequiresAuth": false, + "RequiredRoles": [], + "AllowsAnonymous": false, + "AccessibleByStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous" + ] + }, + { + "Endpoint": "CustomersController/BlockCustomer", + "Controller": "CustomersController", + "Action": "BlockCustomer", + "RequiresAuth": false, + "RequiredRoles": [], + "AllowsAnonymous": false, + "AccessibleByStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous" + ] + }, + { + "Endpoint": "CustomersController/UnblockCustomer", + "Controller": "CustomersController", + "Action": "UnblockCustomer", + "RequiresAuth": false, + "RequiredRoles": [], + "AllowsAnonymous": false, + "AccessibleByStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous" + ] + }, + { + "Endpoint": "CustomersController/DeleteCustomer", + "Controller": "CustomersController", + "Action": "DeleteCustomer", + "RequiresAuth": false, + "RequiredRoles": [], + "AllowsAnonymous": false, + "AccessibleByStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous" + ] + }, + { + "Endpoint": "HomeController/Index", + "Controller": "HomeController", + "Action": "Index", + "RequiresAuth": false, + "RequiredRoles": [], + "AllowsAnonymous": false, + "AccessibleByStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous" + ] + }, + { + "Endpoint": "MessagesController/SendMessage", + "Controller": "MessagesController", + "Action": "SendMessage", + "RequiresAuth": false, + "RequiredRoles": [], + "AllowsAnonymous": false, + "AccessibleByStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous" + ] + }, + { + "Endpoint": "MessagesController/GetMessage", + "Controller": "MessagesController", + "Action": "GetMessage", + "RequiresAuth": false, + "RequiredRoles": [], + "AllowsAnonymous": false, + "AccessibleByStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous" + ] + }, + { + "Endpoint": "MessagesController/GetCustomerMessages", + "Controller": "MessagesController", + "Action": "GetCustomerMessages", + "RequiresAuth": false, + "RequiredRoles": [], + "AllowsAnonymous": false, + "AccessibleByStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous" + ] + }, + { + "Endpoint": "MessagesController/GetOrderMessages", + "Controller": "MessagesController", + "Action": "GetOrderMessages", + "RequiresAuth": false, + "RequiredRoles": [], + "AllowsAnonymous": false, + "AccessibleByStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous" + ] + }, + { + "Endpoint": "MessagesController/GetPendingMessages", + "Controller": "MessagesController", + "Action": "GetPendingMessages", + "RequiresAuth": false, + "RequiredRoles": [], + "AllowsAnonymous": true, + "AccessibleByStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ] + }, + { + "Endpoint": "MessagesController/MarkMessageAsSent", + "Controller": "MessagesController", + "Action": "MarkMessageAsSent", + "RequiresAuth": false, + "RequiredRoles": [], + "AllowsAnonymous": true, + "AccessibleByStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ] + }, + { + "Endpoint": "MessagesController/MarkMessageAsDelivered", + "Controller": "MessagesController", + "Action": "MarkMessageAsDelivered", + "RequiresAuth": false, + "RequiredRoles": [], + "AllowsAnonymous": false, + "AccessibleByStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous" + ] + }, + { + "Endpoint": "MessagesController/MarkMessageAsFailed", + "Controller": "MessagesController", + "Action": "MarkMessageAsFailed", + "RequiresAuth": false, + "RequiredRoles": [], + "AllowsAnonymous": true, + "AccessibleByStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ] + }, + { + "Endpoint": "OrdersController/GetAllOrders", + "Controller": "OrdersController", + "Action": "GetAllOrders", + "RequiresAuth": true, + "RequiredRoles": [ + "Admin" + ], + "AllowsAnonymous": false, + "AccessibleByStates": [ + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous", + "Authenticated_Admin" + ] + }, + { + "Endpoint": "OrdersController/GetOrder", + "Controller": "OrdersController", + "Action": "GetOrder", + "RequiresAuth": true, + "RequiredRoles": [ + "Admin" + ], + "AllowsAnonymous": false, + "AccessibleByStates": [ + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous", + "Authenticated_Admin" + ] + }, + { + "Endpoint": "OrdersController/UpdateOrderStatus", + "Controller": "OrdersController", + "Action": "UpdateOrderStatus", + "RequiresAuth": true, + "RequiredRoles": [ + "Admin" + ], + "AllowsAnonymous": false, + "AccessibleByStates": [ + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous", + "Authenticated_Admin" + ] + }, + { + "Endpoint": "OrdersController/GetOrdersByIdentity", + "Controller": "OrdersController", + "Action": "GetOrdersByIdentity", + "RequiresAuth": false, + "RequiredRoles": [], + "AllowsAnonymous": true, + "AccessibleByStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ] + }, + { + "Endpoint": "OrdersController/GetOrdersByCustomerId", + "Controller": "OrdersController", + "Action": "GetOrdersByCustomerId", + "RequiresAuth": false, + "RequiredRoles": [], + "AllowsAnonymous": true, + "AccessibleByStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ] + }, + { + "Endpoint": "OrdersController/GetOrderByIdentity", + "Controller": "OrdersController", + "Action": "GetOrderByIdentity", + "RequiresAuth": false, + "RequiredRoles": [], + "AllowsAnonymous": true, + "AccessibleByStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ] + }, + { + "Endpoint": "OrdersController/CreateOrder", + "Controller": "OrdersController", + "Action": "CreateOrder", + "RequiresAuth": false, + "RequiredRoles": [], + "AllowsAnonymous": true, + "AccessibleByStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ] + }, + { + "Endpoint": "OrdersController/CreatePayment", + "Controller": "OrdersController", + "Action": "CreatePayment", + "RequiresAuth": false, + "RequiredRoles": [], + "AllowsAnonymous": true, + "AccessibleByStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ] + }, + { + "Endpoint": "OrdersController/GetOrderPayments", + "Controller": "OrdersController", + "Action": "GetOrderPayments", + "RequiresAuth": false, + "RequiredRoles": [], + "AllowsAnonymous": false, + "AccessibleByStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous" + ] + }, + { + "Endpoint": "OrdersController/GetPaymentStatus", + "Controller": "OrdersController", + "Action": "GetPaymentStatus", + "RequiresAuth": false, + "RequiredRoles": [], + "AllowsAnonymous": false, + "AccessibleByStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous" + ] + }, + { + "Endpoint": "OrdersController/CancelOrder", + "Controller": "OrdersController", + "Action": "CancelOrder", + "RequiresAuth": false, + "RequiredRoles": [], + "AllowsAnonymous": false, + "AccessibleByStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous" + ] + }, + { + "Endpoint": "OrdersController/PaymentWebhook", + "Controller": "OrdersController", + "Action": "PaymentWebhook", + "RequiresAuth": false, + "RequiredRoles": [], + "AllowsAnonymous": false, + "AccessibleByStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous" + ] + }, + { + "Endpoint": "TestController/CreateTestProduct", + "Controller": "TestController", + "Action": "CreateTestProduct", + "RequiresAuth": false, + "RequiredRoles": [], + "AllowsAnonymous": false, + "AccessibleByStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous" + ] + }, + { + "Endpoint": "TestController/SetupTestData", + "Controller": "TestController", + "Action": "SetupTestData", + "RequiresAuth": false, + "RequiredRoles": [], + "AllowsAnonymous": false, + "AccessibleByStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous" + ] + }, + { + "Endpoint": "AccountController/Login", + "Controller": "AccountController", + "Action": "Login", + "RequiresAuth": false, + "RequiredRoles": [], + "AllowsAnonymous": false, + "AccessibleByStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous" + ] + }, + { + "Endpoint": "AccountController/Login", + "Controller": "AccountController", + "Action": "Login", + "RequiresAuth": false, + "RequiredRoles": [], + "AllowsAnonymous": false, + "AccessibleByStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous" + ] + }, + { + "Endpoint": "AccountController/Logout", + "Controller": "AccountController", + "Action": "Logout", + "RequiresAuth": true, + "RequiredRoles": [], + "AllowsAnonymous": false, + "AccessibleByStates": [ + "Authenticated", + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous", + "Authenticated" + ] + }, + { + "Endpoint": "AccountController/AccessDenied", + "Controller": "AccountController", + "Action": "AccessDenied", + "RequiresAuth": false, + "RequiredRoles": [], + "AllowsAnonymous": false, + "AccessibleByStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous" + ] + }, + { + "Endpoint": "BotsController/Index", + "Controller": "BotsController", + "Action": "Index", + "RequiresAuth": false, + "RequiredRoles": [], + "AllowsAnonymous": false, + "AccessibleByStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous" + ] + }, + { + "Endpoint": "BotsController/Details", + "Controller": "BotsController", + "Action": "Details", + "RequiresAuth": false, + "RequiredRoles": [], + "AllowsAnonymous": false, + "AccessibleByStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous" + ] + }, + { + "Endpoint": "BotsController/Create", + "Controller": "BotsController", + "Action": "Create", + "RequiresAuth": false, + "RequiredRoles": [], + "AllowsAnonymous": false, + "AccessibleByStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous" + ] + }, + { + "Endpoint": "BotsController/Wizard", + "Controller": "BotsController", + "Action": "Wizard", + "RequiresAuth": false, + "RequiredRoles": [], + "AllowsAnonymous": false, + "AccessibleByStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous" + ] + }, + { + "Endpoint": "BotsController/Wizard", + "Controller": "BotsController", + "Action": "Wizard", + "RequiresAuth": false, + "RequiredRoles": [], + "AllowsAnonymous": false, + "AccessibleByStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous" + ] + }, + { + "Endpoint": "BotsController/CompleteWizard", + "Controller": "BotsController", + "Action": "CompleteWizard", + "RequiresAuth": false, + "RequiredRoles": [], + "AllowsAnonymous": false, + "AccessibleByStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous" + ] + }, + { + "Endpoint": "BotsController/Create", + "Controller": "BotsController", + "Action": "Create", + "RequiresAuth": false, + "RequiredRoles": [], + "AllowsAnonymous": false, + "AccessibleByStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous" + ] + }, + { + "Endpoint": "BotsController/Edit", + "Controller": "BotsController", + "Action": "Edit", + "RequiresAuth": false, + "RequiredRoles": [], + "AllowsAnonymous": false, + "AccessibleByStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous" + ] + }, + { + "Endpoint": "BotsController/Edit", + "Controller": "BotsController", + "Action": "Edit", + "RequiresAuth": false, + "RequiredRoles": [], + "AllowsAnonymous": false, + "AccessibleByStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous" + ] + }, + { + "Endpoint": "BotsController/Metrics", + "Controller": "BotsController", + "Action": "Metrics", + "RequiresAuth": false, + "RequiredRoles": [], + "AllowsAnonymous": false, + "AccessibleByStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous" + ] + }, + { + "Endpoint": "BotsController/Delete", + "Controller": "BotsController", + "Action": "Delete", + "RequiresAuth": false, + "RequiredRoles": [], + "AllowsAnonymous": false, + "AccessibleByStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous" + ] + }, + { + "Endpoint": "BotsController/Suspend", + "Controller": "BotsController", + "Action": "Suspend", + "RequiresAuth": false, + "RequiredRoles": [], + "AllowsAnonymous": false, + "AccessibleByStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous" + ] + }, + { + "Endpoint": "BotsController/Activate", + "Controller": "BotsController", + "Action": "Activate", + "RequiresAuth": false, + "RequiredRoles": [], + "AllowsAnonymous": false, + "AccessibleByStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous" + ] + }, + { + "Endpoint": "BotsController/RegenerateKey", + "Controller": "BotsController", + "Action": "RegenerateKey", + "RequiresAuth": false, + "RequiredRoles": [], + "AllowsAnonymous": false, + "AccessibleByStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous" + ] + }, + { + "Endpoint": "CategoriesController/Index", + "Controller": "CategoriesController", + "Action": "Index", + "RequiresAuth": false, + "RequiredRoles": [], + "AllowsAnonymous": false, + "AccessibleByStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous" + ] + }, + { + "Endpoint": "CategoriesController/Create", + "Controller": "CategoriesController", + "Action": "Create", + "RequiresAuth": false, + "RequiredRoles": [], + "AllowsAnonymous": false, + "AccessibleByStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous" + ] + }, + { + "Endpoint": "CategoriesController/Create", + "Controller": "CategoriesController", + "Action": "Create", + "RequiresAuth": false, + "RequiredRoles": [], + "AllowsAnonymous": false, + "AccessibleByStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous" + ] + }, + { + "Endpoint": "CategoriesController/Edit", + "Controller": "CategoriesController", + "Action": "Edit", + "RequiresAuth": false, + "RequiredRoles": [], + "AllowsAnonymous": false, + "AccessibleByStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous" + ] + }, + { + "Endpoint": "CategoriesController/Edit", + "Controller": "CategoriesController", + "Action": "Edit", + "RequiresAuth": false, + "RequiredRoles": [], + "AllowsAnonymous": false, + "AccessibleByStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous" + ] + }, + { + "Endpoint": "CategoriesController/Delete", + "Controller": "CategoriesController", + "Action": "Delete", + "RequiresAuth": false, + "RequiredRoles": [], + "AllowsAnonymous": false, + "AccessibleByStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous" + ] + }, + { + "Endpoint": "DashboardController/Index", + "Controller": "DashboardController", + "Action": "Index", + "RequiresAuth": false, + "RequiredRoles": [], + "AllowsAnonymous": false, + "AccessibleByStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous" + ] + }, + { + "Endpoint": "MessagesController/Index", + "Controller": "MessagesController", + "Action": "Index", + "RequiresAuth": false, + "RequiredRoles": [], + "AllowsAnonymous": false, + "AccessibleByStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous" + ] + }, + { + "Endpoint": "MessagesController/Customer", + "Controller": "MessagesController", + "Action": "Customer", + "RequiresAuth": false, + "RequiredRoles": [], + "AllowsAnonymous": false, + "AccessibleByStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous" + ] + }, + { + "Endpoint": "MessagesController/Reply", + "Controller": "MessagesController", + "Action": "Reply", + "RequiresAuth": false, + "RequiredRoles": [], + "AllowsAnonymous": false, + "AccessibleByStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous" + ] + }, + { + "Endpoint": "OrdersController/Index", + "Controller": "OrdersController", + "Action": "Index", + "RequiresAuth": false, + "RequiredRoles": [], + "AllowsAnonymous": false, + "AccessibleByStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous" + ] + }, + { + "Endpoint": "OrdersController/Details", + "Controller": "OrdersController", + "Action": "Details", + "RequiresAuth": false, + "RequiredRoles": [], + "AllowsAnonymous": false, + "AccessibleByStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous" + ] + }, + { + "Endpoint": "OrdersController/Create", + "Controller": "OrdersController", + "Action": "Create", + "RequiresAuth": false, + "RequiredRoles": [], + "AllowsAnonymous": false, + "AccessibleByStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous" + ] + }, + { + "Endpoint": "OrdersController/Create", + "Controller": "OrdersController", + "Action": "Create", + "RequiresAuth": false, + "RequiredRoles": [], + "AllowsAnonymous": false, + "AccessibleByStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous" + ] + }, + { + "Endpoint": "OrdersController/Edit", + "Controller": "OrdersController", + "Action": "Edit", + "RequiresAuth": false, + "RequiredRoles": [], + "AllowsAnonymous": false, + "AccessibleByStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous" + ] + }, + { + "Endpoint": "OrdersController/Edit", + "Controller": "OrdersController", + "Action": "Edit", + "RequiresAuth": false, + "RequiredRoles": [], + "AllowsAnonymous": false, + "AccessibleByStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous" + ] + }, + { + "Endpoint": "OrdersController/UpdateStatus", + "Controller": "OrdersController", + "Action": "UpdateStatus", + "RequiresAuth": false, + "RequiredRoles": [], + "AllowsAnonymous": false, + "AccessibleByStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous" + ] + }, + { + "Endpoint": "ProductsController/Index", + "Controller": "ProductsController", + "Action": "Index", + "RequiresAuth": false, + "RequiredRoles": [], + "AllowsAnonymous": false, + "AccessibleByStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous" + ] + }, + { + "Endpoint": "ProductsController/Create", + "Controller": "ProductsController", + "Action": "Create", + "RequiresAuth": false, + "RequiredRoles": [], + "AllowsAnonymous": false, + "AccessibleByStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous" + ] + }, + { + "Endpoint": "ProductsController/Create", + "Controller": "ProductsController", + "Action": "Create", + "RequiresAuth": false, + "RequiredRoles": [], + "AllowsAnonymous": false, + "AccessibleByStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous" + ] + }, + { + "Endpoint": "ProductsController/Edit", + "Controller": "ProductsController", + "Action": "Edit", + "RequiresAuth": false, + "RequiredRoles": [], + "AllowsAnonymous": false, + "AccessibleByStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous" + ] + }, + { + "Endpoint": "ProductsController/Edit", + "Controller": "ProductsController", + "Action": "Edit", + "RequiresAuth": false, + "RequiredRoles": [], + "AllowsAnonymous": false, + "AccessibleByStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous" + ] + }, + { + "Endpoint": "ProductsController/UploadPhoto", + "Controller": "ProductsController", + "Action": "UploadPhoto", + "RequiresAuth": false, + "RequiredRoles": [], + "AllowsAnonymous": false, + "AccessibleByStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous" + ] + }, + { + "Endpoint": "ProductsController/DeletePhoto", + "Controller": "ProductsController", + "Action": "DeletePhoto", + "RequiresAuth": false, + "RequiredRoles": [], + "AllowsAnonymous": false, + "AccessibleByStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous" + ] + }, + { + "Endpoint": "ProductsController/Delete", + "Controller": "ProductsController", + "Action": "Delete", + "RequiresAuth": false, + "RequiredRoles": [], + "AllowsAnonymous": false, + "AccessibleByStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous" + ] + }, + { + "Endpoint": "ShippingRatesController/Index", + "Controller": "ShippingRatesController", + "Action": "Index", + "RequiresAuth": false, + "RequiredRoles": [], + "AllowsAnonymous": false, + "AccessibleByStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous" + ] + }, + { + "Endpoint": "ShippingRatesController/Create", + "Controller": "ShippingRatesController", + "Action": "Create", + "RequiresAuth": false, + "RequiredRoles": [], + "AllowsAnonymous": false, + "AccessibleByStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous" + ] + }, + { + "Endpoint": "ShippingRatesController/Create", + "Controller": "ShippingRatesController", + "Action": "Create", + "RequiresAuth": false, + "RequiredRoles": [], + "AllowsAnonymous": false, + "AccessibleByStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous" + ] + }, + { + "Endpoint": "ShippingRatesController/Edit", + "Controller": "ShippingRatesController", + "Action": "Edit", + "RequiresAuth": false, + "RequiredRoles": [], + "AllowsAnonymous": false, + "AccessibleByStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous" + ] + }, + { + "Endpoint": "ShippingRatesController/Edit", + "Controller": "ShippingRatesController", + "Action": "Edit", + "RequiresAuth": false, + "RequiredRoles": [], + "AllowsAnonymous": false, + "AccessibleByStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous" + ] + }, + { + "Endpoint": "ShippingRatesController/Delete", + "Controller": "ShippingRatesController", + "Action": "Delete", + "RequiresAuth": false, + "RequiredRoles": [], + "AllowsAnonymous": false, + "AccessibleByStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous" + ] + }, + { + "Endpoint": "UsersController/Index", + "Controller": "UsersController", + "Action": "Index", + "RequiresAuth": false, + "RequiredRoles": [], + "AllowsAnonymous": false, + "AccessibleByStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous" + ] + }, + { + "Endpoint": "UsersController/Create", + "Controller": "UsersController", + "Action": "Create", + "RequiresAuth": false, + "RequiredRoles": [], + "AllowsAnonymous": false, + "AccessibleByStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous" + ] + }, + { + "Endpoint": "UsersController/Create", + "Controller": "UsersController", + "Action": "Create", + "RequiresAuth": false, + "RequiredRoles": [], + "AllowsAnonymous": false, + "AccessibleByStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous" + ] + }, + { + "Endpoint": "UsersController/Edit", + "Controller": "UsersController", + "Action": "Edit", + "RequiresAuth": false, + "RequiredRoles": [], + "AllowsAnonymous": false, + "AccessibleByStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous" + ] + }, + { + "Endpoint": "UsersController/Edit", + "Controller": "UsersController", + "Action": "Edit", + "RequiresAuth": false, + "RequiredRoles": [], + "AllowsAnonymous": false, + "AccessibleByStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous" + ] + }, + { + "Endpoint": "UsersController/Delete", + "Controller": "UsersController", + "Action": "Delete", + "RequiresAuth": false, + "RequiredRoles": [], + "AllowsAnonymous": false, + "AccessibleByStates": [ + "Anonymous", + "Authenticated", + "Authenticated_Admin" + ], + "TestableStates": [ + "Anonymous" + ] + } + ], + "Transitions": [ + { + "FromState": "Anonymous", + "ToState": "Authenticated", + "Action": "Login", + "Endpoint": "AuthController/Login", + "RequiresValidation": true + }, + { + "FromState": "Anonymous", + "ToState": "Authenticated", + "Action": "Register", + "Endpoint": "BotsController/RegisterBot", + "RequiresValidation": true + }, + { + "FromState": "Anonymous", + "ToState": "Authenticated", + "Action": "Login", + "Endpoint": "BotsController/AuthenticateBot", + "RequiresValidation": true + }, + { + "FromState": "Anonymous", + "ToState": "Authenticated", + "Action": "Login", + "Endpoint": "AccountController/Login", + "RequiresValidation": true + }, + { + "FromState": "Anonymous", + "ToState": "Authenticated", + "Action": "Login", + "Endpoint": "AccountController/Login", + "RequiresValidation": true + }, + { + "FromState": "Authenticated", + "ToState": "Anonymous", + "Action": "Logout", + "Endpoint": "AccountController/Logout", + "RequiresValidation": false + }, + { + "FromState": "Authenticated_Admin", + "ToState": "Anonymous", + "Action": "Logout", + "Endpoint": "AccountController/Logout", + "RequiresValidation": false + } + ], + "TestingGaps": [ + "Untested authentication states for AuthController/Login: Authenticated, Authenticated_Admin", + "Untested authentication states for BotMessagesController/GetPendingMessages: Authenticated, Authenticated_Admin", + "Untested authentication states for BotMessagesController/MarkMessageAsSent: Authenticated, Authenticated_Admin", + "Untested authentication states for BotMessagesController/MarkMessageAsFailed: Authenticated, Authenticated_Admin", + "Untested authentication states for BotMessagesController/CreateTestMessage: Authenticated, Authenticated_Admin", + "State-dependent endpoint BotMessagesController/CreateTestMessage may show different content for anonymous vs authenticated users - ensure both paths are tested", + "Untested authentication states for BotMessagesController/CreateCustomerMessage: Authenticated, Authenticated_Admin", + "State-dependent endpoint BotMessagesController/CreateCustomerMessage may show different content for anonymous vs authenticated users - ensure both paths are tested", + "Untested authentication states for BotMessagesController/GetCustomerMessages: Authenticated, Authenticated_Admin", + "Untested authentication states for BotsController/GetBotSettings: Authenticated, Authenticated_Admin", + "State-dependent endpoint BotsController/GetBotSettings may show different content for anonymous vs authenticated users - ensure both paths are tested", + "Untested authentication states for BotsController/UpdateBotSettings: Authenticated, Authenticated_Admin", + "State-dependent endpoint BotsController/UpdateBotSettings may show different content for anonymous vs authenticated users - ensure both paths are tested", + "Untested authentication states for BotsController/RecordHeartbeat: Authenticated, Authenticated_Admin", + "Untested authentication states for BotsController/UpdatePlatformInfo: Authenticated, Authenticated_Admin", + "State-dependent endpoint BotsController/UpdatePlatformInfo may show different content for anonymous vs authenticated users - ensure both paths are tested", + "Untested authentication states for BotsController/RecordMetric: Authenticated, Authenticated_Admin", + "Untested authentication states for BotsController/RecordMetricsBatch: Authenticated, Authenticated_Admin", + "Untested authentication states for BotsController/StartSession: Authenticated, Authenticated_Admin", + "Untested authentication states for BotsController/UpdateSession: Authenticated, Authenticated_Admin", + "State-dependent endpoint BotsController/UpdateSession may show different content for anonymous vs authenticated users - ensure both paths are tested", + "Untested authentication states for BotsController/EndSession: Authenticated, Authenticated_Admin", + "Untested authentication states for CatalogController/GetCategories: Authenticated, Authenticated_Admin", + "Untested authentication states for CatalogController/GetCategory: Authenticated, Authenticated_Admin", + "Untested authentication states for CatalogController/GetProducts: Authenticated, Authenticated_Admin", + "Untested authentication states for CatalogController/GetProduct: Authenticated, Authenticated_Admin", + "Untested authentication states for CustomersController/GetCustomers: Authenticated, Authenticated_Admin", + "Untested authentication states for CustomersController/GetCustomer: Authenticated, Authenticated_Admin", + "Untested authentication states for CustomersController/GetCustomerByTelegramId: Authenticated, Authenticated_Admin", + "Untested authentication states for CustomersController/CreateCustomer: Authenticated, Authenticated_Admin", + "State-dependent endpoint CustomersController/CreateCustomer may show different content for anonymous vs authenticated users - ensure both paths are tested", + "State-dependent endpoint CustomersController/GetOrCreateCustomer may show different content for anonymous vs authenticated users - ensure both paths are tested", + "Untested authentication states for CustomersController/UpdateCustomer: Authenticated, Authenticated_Admin", + "State-dependent endpoint CustomersController/UpdateCustomer may show different content for anonymous vs authenticated users - ensure both paths are tested", + "Untested authentication states for CustomersController/BlockCustomer: Authenticated, Authenticated_Admin", + "Untested authentication states for CustomersController/UnblockCustomer: Authenticated, Authenticated_Admin", + "Untested authentication states for CustomersController/DeleteCustomer: Authenticated, Authenticated_Admin", + "State-dependent endpoint CustomersController/DeleteCustomer may show different content for anonymous vs authenticated users - ensure both paths are tested", + "Untested authentication states for HomeController/Index: Authenticated, Authenticated_Admin", + "Untested authentication states for MessagesController/SendMessage: Authenticated, Authenticated_Admin", + "Untested authentication states for MessagesController/GetMessage: Authenticated, Authenticated_Admin", + "Untested authentication states for MessagesController/GetCustomerMessages: Authenticated, Authenticated_Admin", + "Untested authentication states for MessagesController/GetOrderMessages: Authenticated, Authenticated_Admin", + "State-dependent endpoint MessagesController/GetOrderMessages may show different content for anonymous vs authenticated users - ensure both paths are tested", + "Untested authentication states for MessagesController/MarkMessageAsDelivered: Authenticated, Authenticated_Admin", + "State-dependent endpoint OrdersController/GetOrdersByIdentity may show different content for anonymous vs authenticated users - ensure both paths are tested", + "State-dependent endpoint OrdersController/GetOrdersByCustomerId may show different content for anonymous vs authenticated users - ensure both paths are tested", + "State-dependent endpoint OrdersController/GetOrderByIdentity may show different content for anonymous vs authenticated users - ensure both paths are tested", + "State-dependent endpoint OrdersController/CreateOrder may show different content for anonymous vs authenticated users - ensure both paths are tested", + "State-dependent endpoint OrdersController/CreatePayment may show different content for anonymous vs authenticated users - ensure both paths are tested", + "Untested authentication states for OrdersController/GetOrderPayments: Authenticated, Authenticated_Admin", + "State-dependent endpoint OrdersController/GetOrderPayments may show different content for anonymous vs authenticated users - ensure both paths are tested", + "Untested authentication states for OrdersController/GetPaymentStatus: Authenticated, Authenticated_Admin", + "State-dependent endpoint OrdersController/GetPaymentStatus may show different content for anonymous vs authenticated users - ensure both paths are tested", + "Untested authentication states for OrdersController/CancelOrder: Authenticated, Authenticated_Admin", + "State-dependent endpoint OrdersController/CancelOrder may show different content for anonymous vs authenticated users - ensure both paths are tested", + "Untested authentication states for OrdersController/PaymentWebhook: Authenticated, Authenticated_Admin", + "State-dependent endpoint OrdersController/PaymentWebhook may show different content for anonymous vs authenticated users - ensure both paths are tested", + "Untested authentication states for TestController/CreateTestProduct: Authenticated, Authenticated_Admin", + "State-dependent endpoint TestController/CreateTestProduct may show different content for anonymous vs authenticated users - ensure both paths are tested", + "Untested authentication states for TestController/SetupTestData: Authenticated, Authenticated_Admin", + "Untested authentication states for AccountController/Login: Authenticated, Authenticated_Admin", + "State-dependent endpoint AccountController/Login may show different content for anonymous vs authenticated users - ensure both paths are tested", + "Untested authentication states for AccountController/Login: Authenticated, Authenticated_Admin", + "State-dependent endpoint AccountController/Login may show different content for anonymous vs authenticated users - ensure both paths are tested", + "Untested authentication states for AccountController/Logout: Authenticated_Admin", + "Untested authentication states for AccountController/AccessDenied: Authenticated, Authenticated_Admin", + "State-dependent endpoint AccountController/AccessDenied may show different content for anonymous vs authenticated users - ensure both paths are tested", + "Untested authentication states for BotsController/Index: Authenticated, Authenticated_Admin", + "Untested authentication states for BotsController/Details: Authenticated, Authenticated_Admin", + "Untested authentication states for BotsController/Create: Authenticated, Authenticated_Admin", + "State-dependent endpoint BotsController/Create may show different content for anonymous vs authenticated users - ensure both paths are tested", + "Untested authentication states for BotsController/Wizard: Authenticated, Authenticated_Admin", + "Untested authentication states for BotsController/Wizard: Authenticated, Authenticated_Admin", + "Untested authentication states for BotsController/CompleteWizard: Authenticated, Authenticated_Admin", + "Untested authentication states for BotsController/Create: Authenticated, Authenticated_Admin", + "State-dependent endpoint BotsController/Create may show different content for anonymous vs authenticated users - ensure both paths are tested", + "Untested authentication states for BotsController/Edit: Authenticated, Authenticated_Admin", + "State-dependent endpoint BotsController/Edit may show different content for anonymous vs authenticated users - ensure both paths are tested", + "Untested authentication states for BotsController/Edit: Authenticated, Authenticated_Admin", + "State-dependent endpoint BotsController/Edit may show different content for anonymous vs authenticated users - ensure both paths are tested", + "Untested authentication states for BotsController/Metrics: Authenticated, Authenticated_Admin", + "Untested authentication states for BotsController/Delete: Authenticated, Authenticated_Admin", + "State-dependent endpoint BotsController/Delete may show different content for anonymous vs authenticated users - ensure both paths are tested", + "Untested authentication states for BotsController/Suspend: Authenticated, Authenticated_Admin", + "Untested authentication states for BotsController/Activate: Authenticated, Authenticated_Admin", + "Untested authentication states for BotsController/RegenerateKey: Authenticated, Authenticated_Admin", + "Untested authentication states for CategoriesController/Index: Authenticated, Authenticated_Admin", + "Untested authentication states for CategoriesController/Create: Authenticated, Authenticated_Admin", + "State-dependent endpoint CategoriesController/Create may show different content for anonymous vs authenticated users - ensure both paths are tested", + "Untested authentication states for CategoriesController/Create: Authenticated, Authenticated_Admin", + "State-dependent endpoint CategoriesController/Create may show different content for anonymous vs authenticated users - ensure both paths are tested", + "Untested authentication states for CategoriesController/Edit: Authenticated, Authenticated_Admin", + "State-dependent endpoint CategoriesController/Edit may show different content for anonymous vs authenticated users - ensure both paths are tested", + "Untested authentication states for CategoriesController/Edit: Authenticated, Authenticated_Admin", + "State-dependent endpoint CategoriesController/Edit may show different content for anonymous vs authenticated users - ensure both paths are tested", + "Untested authentication states for CategoriesController/Delete: Authenticated, Authenticated_Admin", + "State-dependent endpoint CategoriesController/Delete may show different content for anonymous vs authenticated users - ensure both paths are tested", + "Untested authentication states for DashboardController/Index: Authenticated, Authenticated_Admin", + "State-dependent endpoint DashboardController/Index may show different content for anonymous vs authenticated users - ensure both paths are tested", + "Untested authentication states for MessagesController/Index: Authenticated, Authenticated_Admin", + "Untested authentication states for MessagesController/Customer: Authenticated, Authenticated_Admin", + "Untested authentication states for MessagesController/Reply: Authenticated, Authenticated_Admin", + "Untested authentication states for OrdersController/Index: Authenticated, Authenticated_Admin", + "State-dependent endpoint OrdersController/Index may show different content for anonymous vs authenticated users - ensure both paths are tested", + "Untested authentication states for OrdersController/Details: Authenticated, Authenticated_Admin", + "State-dependent endpoint OrdersController/Details may show different content for anonymous vs authenticated users - ensure both paths are tested", + "Untested authentication states for OrdersController/Create: Authenticated, Authenticated_Admin", + "State-dependent endpoint OrdersController/Create may show different content for anonymous vs authenticated users - ensure both paths are tested", + "Untested authentication states for OrdersController/Create: Authenticated, Authenticated_Admin", + "State-dependent endpoint OrdersController/Create may show different content for anonymous vs authenticated users - ensure both paths are tested", + "Untested authentication states for OrdersController/Edit: Authenticated, Authenticated_Admin", + "State-dependent endpoint OrdersController/Edit may show different content for anonymous vs authenticated users - ensure both paths are tested", + "Untested authentication states for OrdersController/Edit: Authenticated, Authenticated_Admin", + "State-dependent endpoint OrdersController/Edit may show different content for anonymous vs authenticated users - ensure both paths are tested", + "Untested authentication states for OrdersController/UpdateStatus: Authenticated, Authenticated_Admin", + "State-dependent endpoint OrdersController/UpdateStatus may show different content for anonymous vs authenticated users - ensure both paths are tested", + "Untested authentication states for ProductsController/Index: Authenticated, Authenticated_Admin", + "Untested authentication states for ProductsController/Create: Authenticated, Authenticated_Admin", + "State-dependent endpoint ProductsController/Create may show different content for anonymous vs authenticated users - ensure both paths are tested", + "Untested authentication states for ProductsController/Create: Authenticated, Authenticated_Admin", + "State-dependent endpoint ProductsController/Create may show different content for anonymous vs authenticated users - ensure both paths are tested", + "Untested authentication states for ProductsController/Edit: Authenticated, Authenticated_Admin", + "State-dependent endpoint ProductsController/Edit may show different content for anonymous vs authenticated users - ensure both paths are tested", + "Untested authentication states for ProductsController/Edit: Authenticated, Authenticated_Admin", + "State-dependent endpoint ProductsController/Edit may show different content for anonymous vs authenticated users - ensure both paths are tested", + "Untested authentication states for ProductsController/UploadPhoto: Authenticated, Authenticated_Admin", + "Untested authentication states for ProductsController/DeletePhoto: Authenticated, Authenticated_Admin", + "State-dependent endpoint ProductsController/DeletePhoto may show different content for anonymous vs authenticated users - ensure both paths are tested", + "Untested authentication states for ProductsController/Delete: Authenticated, Authenticated_Admin", + "State-dependent endpoint ProductsController/Delete may show different content for anonymous vs authenticated users - ensure both paths are tested", + "Untested authentication states for ShippingRatesController/Index: Authenticated, Authenticated_Admin", + "Untested authentication states for ShippingRatesController/Create: Authenticated, Authenticated_Admin", + "State-dependent endpoint ShippingRatesController/Create may show different content for anonymous vs authenticated users - ensure both paths are tested", + "Untested authentication states for ShippingRatesController/Create: Authenticated, Authenticated_Admin", + "State-dependent endpoint ShippingRatesController/Create may show different content for anonymous vs authenticated users - ensure both paths are tested", + "Untested authentication states for ShippingRatesController/Edit: Authenticated, Authenticated_Admin", + "State-dependent endpoint ShippingRatesController/Edit may show different content for anonymous vs authenticated users - ensure both paths are tested", + "Untested authentication states for ShippingRatesController/Edit: Authenticated, Authenticated_Admin", + "State-dependent endpoint ShippingRatesController/Edit may show different content for anonymous vs authenticated users - ensure both paths are tested", + "Untested authentication states for ShippingRatesController/Delete: Authenticated, Authenticated_Admin", + "State-dependent endpoint ShippingRatesController/Delete may show different content for anonymous vs authenticated users - ensure both paths are tested", + "Untested authentication states for UsersController/Index: Authenticated, Authenticated_Admin", + "Untested authentication states for UsersController/Create: Authenticated, Authenticated_Admin", + "State-dependent endpoint UsersController/Create may show different content for anonymous vs authenticated users - ensure both paths are tested", + "Untested authentication states for UsersController/Create: Authenticated, Authenticated_Admin", + "State-dependent endpoint UsersController/Create may show different content for anonymous vs authenticated users - ensure both paths are tested", + "Untested authentication states for UsersController/Edit: Authenticated, Authenticated_Admin", + "State-dependent endpoint UsersController/Edit may show different content for anonymous vs authenticated users - ensure both paths are tested", + "Untested authentication states for UsersController/Edit: Authenticated, Authenticated_Admin", + "State-dependent endpoint UsersController/Edit may show different content for anonymous vs authenticated users - ensure both paths are tested", + "Untested authentication states for UsersController/Delete: Authenticated, Authenticated_Admin", + "State-dependent endpoint UsersController/Delete may show different content for anonymous vs authenticated users - ensure both paths are tested" + ], + "Recommendations": [ + "High number of testing gaps detected - prioritize implementing missing authentication tests", + "Generate automated integration tests using TestAgent.TestGenerator for comprehensive coverage" + ] +} \ No newline at end of file diff --git a/LittleShop/TestAgent_Results/coverage_analysis.json b/LittleShop/TestAgent_Results/coverage_analysis.json new file mode 100644 index 0000000..8912414 --- /dev/null +++ b/LittleShop/TestAgent_Results/coverage_analysis.json @@ -0,0 +1,6861 @@ +{ + "EndpointCoverage": [ + { + "Endpoint": "api/Auth/login", + "Controller": "Auth", + "Action": "Login", + "HttpMethods": [ + "POST" + ], + "TestedStates": [], + "UntestedStates": [ + "Anonymous" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [], + "MissingTestTypes": [ + "Valid Data Test", + "Invalid Data Test" + ], + "CoveragePercentage": 20 + }, + { + "Endpoint": "api/bot/messages/pending", + "Controller": "BotMessages", + "Action": "GetPendingMessages", + "HttpMethods": [ + "GET" + ], + "TestedStates": [], + "UntestedStates": [ + "Anonymous" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [], + "MissingTestTypes": [], + "CoveragePercentage": 40 + }, + { + "Endpoint": "api/bot/messages/{id}/mark-sent", + "Controller": "BotMessages", + "Action": "MarkMessageAsSent", + "HttpMethods": [ + "POST" + ], + "TestedStates": [], + "UntestedStates": [ + "Anonymous" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [], + "MissingTestTypes": [ + "Valid Data Test", + "Invalid Data Test" + ], + "CoveragePercentage": 20 + }, + { + "Endpoint": "api/bot/messages/{id}/mark-failed", + "Controller": "BotMessages", + "Action": "MarkMessageAsFailed", + "HttpMethods": [ + "POST" + ], + "TestedStates": [], + "UntestedStates": [ + "Anonymous" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [], + "MissingTestTypes": [ + "Valid Data Test", + "Invalid Data Test" + ], + "CoveragePercentage": 20 + }, + { + "Endpoint": "api/bot/messages/test-create", + "Controller": "BotMessages", + "Action": "CreateTestMessage", + "HttpMethods": [ + "POST" + ], + "TestedStates": [], + "UntestedStates": [ + "Anonymous" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [], + "MissingTestTypes": [ + "Valid Data Test", + "Invalid Data Test" + ], + "CoveragePercentage": 20 + }, + { + "Endpoint": "api/bot/messages/customer-create", + "Controller": "BotMessages", + "Action": "CreateCustomerMessage", + "HttpMethods": [ + "POST" + ], + "TestedStates": [], + "UntestedStates": [ + "Anonymous" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [], + "MissingTestTypes": [ + "Valid Data Test", + "Invalid Data Test" + ], + "CoveragePercentage": 20 + }, + { + "Endpoint": "api/bot/messages/customer/{customerId}", + "Controller": "BotMessages", + "Action": "GetCustomerMessages", + "HttpMethods": [ + "GET" + ], + "TestedStates": [], + "UntestedStates": [ + "Anonymous" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [], + "MissingTestTypes": [ + "Valid Data Test", + "Invalid Data Test" + ], + "CoveragePercentage": 20 + }, + { + "Endpoint": "api/Bots/register", + "Controller": "Bots", + "Action": "RegisterBot", + "HttpMethods": [ + "POST" + ], + "TestedStates": [], + "UntestedStates": [ + "Anonymous" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [], + "MissingTestTypes": [ + "Valid Data Test", + "Invalid Data Test" + ], + "CoveragePercentage": 20 + }, + { + "Endpoint": "api/Bots/authenticate", + "Controller": "Bots", + "Action": "AuthenticateBot", + "HttpMethods": [ + "POST" + ], + "TestedStates": [], + "UntestedStates": [ + "Anonymous" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [], + "MissingTestTypes": [ + "Valid Data Test", + "Invalid Data Test" + ], + "CoveragePercentage": 20 + }, + { + "Endpoint": "api/Bots/settings", + "Controller": "Bots", + "Action": "GetBotSettings", + "HttpMethods": [ + "GET" + ], + "TestedStates": [], + "UntestedStates": [ + "Anonymous" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [], + "MissingTestTypes": [], + "CoveragePercentage": 40 + }, + { + "Endpoint": "api/Bots/settings", + "Controller": "Bots", + "Action": "UpdateBotSettings", + "HttpMethods": [ + "PUT" + ], + "TestedStates": [], + "UntestedStates": [ + "Anonymous" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [], + "MissingTestTypes": [ + "Valid Data Test", + "Invalid Data Test" + ], + "CoveragePercentage": 20 + }, + { + "Endpoint": "api/Bots/heartbeat", + "Controller": "Bots", + "Action": "RecordHeartbeat", + "HttpMethods": [ + "POST" + ], + "TestedStates": [], + "UntestedStates": [ + "Anonymous" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [], + "MissingTestTypes": [ + "Valid Data Test", + "Invalid Data Test" + ], + "CoveragePercentage": 20 + }, + { + "Endpoint": "api/Bots/platform-info", + "Controller": "Bots", + "Action": "UpdatePlatformInfo", + "HttpMethods": [ + "PUT" + ], + "TestedStates": [], + "UntestedStates": [ + "Anonymous" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [], + "MissingTestTypes": [ + "Valid Data Test", + "Invalid Data Test" + ], + "CoveragePercentage": 20 + }, + { + "Endpoint": "api/Bots/metrics", + "Controller": "Bots", + "Action": "RecordMetric", + "HttpMethods": [ + "POST" + ], + "TestedStates": [], + "UntestedStates": [ + "Anonymous" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [], + "MissingTestTypes": [ + "Valid Data Test", + "Invalid Data Test" + ], + "CoveragePercentage": 20 + }, + { + "Endpoint": "api/Bots/metrics/batch", + "Controller": "Bots", + "Action": "RecordMetricsBatch", + "HttpMethods": [ + "POST" + ], + "TestedStates": [], + "UntestedStates": [ + "Anonymous" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [], + "MissingTestTypes": [ + "Valid Data Test", + "Invalid Data Test" + ], + "CoveragePercentage": 20 + }, + { + "Endpoint": "api/Bots/sessions/start", + "Controller": "Bots", + "Action": "StartSession", + "HttpMethods": [ + "POST" + ], + "TestedStates": [], + "UntestedStates": [ + "Anonymous" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [], + "MissingTestTypes": [ + "Valid Data Test", + "Invalid Data Test" + ], + "CoveragePercentage": 20 + }, + { + "Endpoint": "api/Bots/sessions/{sessionId}", + "Controller": "Bots", + "Action": "UpdateSession", + "HttpMethods": [ + "PUT" + ], + "TestedStates": [], + "UntestedStates": [ + "Anonymous" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [], + "MissingTestTypes": [ + "Valid Data Test", + "Invalid Data Test" + ], + "CoveragePercentage": 20 + }, + { + "Endpoint": "api/Bots/sessions/{sessionId}/end", + "Controller": "Bots", + "Action": "EndSession", + "HttpMethods": [ + "POST" + ], + "TestedStates": [], + "UntestedStates": [ + "Anonymous" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [], + "MissingTestTypes": [ + "Valid Data Test", + "Invalid Data Test" + ], + "CoveragePercentage": 20 + }, + { + "Endpoint": "api/Bots/GetAllBots", + "Controller": "Bots", + "Action": "GetAllBots", + "HttpMethods": [ + "GET" + ], + "TestedStates": [], + "UntestedStates": [ + "Authenticated", + "Authenticated_Admin" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [ + "Admin" + ], + "MissingTestTypes": [ + "Unauthorized Access Test", + "Role-Based Authorization Test" + ], + "CoveragePercentage": 20 + }, + { + "Endpoint": "api/Bots/{id}", + "Controller": "Bots", + "Action": "GetBot", + "HttpMethods": [ + "GET" + ], + "TestedStates": [], + "UntestedStates": [ + "Authenticated", + "Authenticated_Admin" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [ + "Admin" + ], + "MissingTestTypes": [ + "Unauthorized Access Test", + "Valid Data Test", + "Invalid Data Test", + "Role-Based Authorization Test" + ], + "CoveragePercentage": 0 + }, + { + "Endpoint": "api/Bots/{id}/metrics", + "Controller": "Bots", + "Action": "GetBotMetrics", + "HttpMethods": [ + "GET" + ], + "TestedStates": [], + "UntestedStates": [ + "Authenticated", + "Authenticated_Admin" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [ + "Admin" + ], + "MissingTestTypes": [ + "Unauthorized Access Test", + "Valid Data Test", + "Invalid Data Test", + "Role-Based Authorization Test" + ], + "CoveragePercentage": 0 + }, + { + "Endpoint": "api/Bots/{id}/metrics/summary", + "Controller": "Bots", + "Action": "GetMetricsSummary", + "HttpMethods": [ + "GET" + ], + "TestedStates": [], + "UntestedStates": [ + "Authenticated", + "Authenticated_Admin" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [ + "Admin" + ], + "MissingTestTypes": [ + "Unauthorized Access Test", + "Valid Data Test", + "Invalid Data Test", + "Role-Based Authorization Test" + ], + "CoveragePercentage": 0 + }, + { + "Endpoint": "api/Bots/{id}/sessions", + "Controller": "Bots", + "Action": "GetBotSessions", + "HttpMethods": [ + "GET" + ], + "TestedStates": [], + "UntestedStates": [ + "Authenticated", + "Authenticated_Admin" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [ + "Admin" + ], + "MissingTestTypes": [ + "Unauthorized Access Test", + "Valid Data Test", + "Invalid Data Test", + "Role-Based Authorization Test" + ], + "CoveragePercentage": 0 + }, + { + "Endpoint": "api/Bots/{id}", + "Controller": "Bots", + "Action": "DeleteBot", + "HttpMethods": [ + "DELETE" + ], + "TestedStates": [], + "UntestedStates": [ + "Authenticated", + "Authenticated_Admin" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [ + "Admin" + ], + "MissingTestTypes": [ + "Unauthorized Access Test", + "Valid Data Test", + "Invalid Data Test", + "Role-Based Authorization Test" + ], + "CoveragePercentage": 0 + }, + { + "Endpoint": "api/Catalog/categories", + "Controller": "Catalog", + "Action": "GetCategories", + "HttpMethods": [ + "GET" + ], + "TestedStates": [], + "UntestedStates": [ + "Anonymous" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [], + "MissingTestTypes": [], + "CoveragePercentage": 40 + }, + { + "Endpoint": "api/Catalog/categories/{id}", + "Controller": "Catalog", + "Action": "GetCategory", + "HttpMethods": [ + "GET" + ], + "TestedStates": [], + "UntestedStates": [ + "Anonymous" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [], + "MissingTestTypes": [ + "Valid Data Test", + "Invalid Data Test" + ], + "CoveragePercentage": 20 + }, + { + "Endpoint": "api/Catalog/products", + "Controller": "Catalog", + "Action": "GetProducts", + "HttpMethods": [ + "GET" + ], + "TestedStates": [], + "UntestedStates": [ + "Anonymous" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [], + "MissingTestTypes": [], + "CoveragePercentage": 40 + }, + { + "Endpoint": "api/Catalog/products/{id}", + "Controller": "Catalog", + "Action": "GetProduct", + "HttpMethods": [ + "GET" + ], + "TestedStates": [], + "UntestedStates": [ + "Anonymous" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [], + "MissingTestTypes": [ + "Valid Data Test", + "Invalid Data Test" + ], + "CoveragePercentage": 20 + }, + { + "Endpoint": "api/Customers/GetCustomers", + "Controller": "Customers", + "Action": "GetCustomers", + "HttpMethods": [ + "GET" + ], + "TestedStates": [], + "UntestedStates": [ + "Authenticated" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [], + "MissingTestTypes": [ + "Unauthorized Access Test" + ], + "CoveragePercentage": 30.000000000000004 + }, + { + "Endpoint": "api/Customers/{id}", + "Controller": "Customers", + "Action": "GetCustomer", + "HttpMethods": [ + "GET" + ], + "TestedStates": [], + "UntestedStates": [ + "Authenticated" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [], + "MissingTestTypes": [ + "Unauthorized Access Test", + "Valid Data Test", + "Invalid Data Test" + ], + "CoveragePercentage": 10 + }, + { + "Endpoint": "api/Customers/by-telegram/{telegramUserId}", + "Controller": "Customers", + "Action": "GetCustomerByTelegramId", + "HttpMethods": [ + "GET" + ], + "TestedStates": [], + "UntestedStates": [ + "Authenticated" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [], + "MissingTestTypes": [ + "Unauthorized Access Test", + "Valid Data Test", + "Invalid Data Test" + ], + "CoveragePercentage": 10 + }, + { + "Endpoint": "api/Customers/CreateCustomer", + "Controller": "Customers", + "Action": "CreateCustomer", + "HttpMethods": [ + "POST" + ], + "TestedStates": [], + "UntestedStates": [ + "Authenticated" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [], + "MissingTestTypes": [ + "Unauthorized Access Test", + "Valid Data Test", + "Invalid Data Test" + ], + "CoveragePercentage": 10 + }, + { + "Endpoint": "api/Customers/get-or-create", + "Controller": "Customers", + "Action": "GetOrCreateCustomer", + "HttpMethods": [ + "POST" + ], + "TestedStates": [], + "UntestedStates": [ + "Anonymous" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [], + "MissingTestTypes": [ + "Valid Data Test", + "Invalid Data Test", + "State-Dependent Content Test" + ], + "CoveragePercentage": 10 + }, + { + "Endpoint": "api/Customers/{id}", + "Controller": "Customers", + "Action": "UpdateCustomer", + "HttpMethods": [ + "PUT" + ], + "TestedStates": [], + "UntestedStates": [ + "Authenticated" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [], + "MissingTestTypes": [ + "Unauthorized Access Test", + "Valid Data Test", + "Invalid Data Test" + ], + "CoveragePercentage": 10 + }, + { + "Endpoint": "api/Customers/{id}/block", + "Controller": "Customers", + "Action": "BlockCustomer", + "HttpMethods": [ + "POST" + ], + "TestedStates": [], + "UntestedStates": [ + "Authenticated" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [], + "MissingTestTypes": [ + "Unauthorized Access Test", + "Valid Data Test", + "Invalid Data Test" + ], + "CoveragePercentage": 10 + }, + { + "Endpoint": "api/Customers/{id}/unblock", + "Controller": "Customers", + "Action": "UnblockCustomer", + "HttpMethods": [ + "POST" + ], + "TestedStates": [], + "UntestedStates": [ + "Authenticated" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [], + "MissingTestTypes": [ + "Unauthorized Access Test", + "Valid Data Test", + "Invalid Data Test" + ], + "CoveragePercentage": 10 + }, + { + "Endpoint": "api/Customers/{id}", + "Controller": "Customers", + "Action": "DeleteCustomer", + "HttpMethods": [ + "DELETE" + ], + "TestedStates": [], + "UntestedStates": [ + "Authenticated" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [], + "MissingTestTypes": [ + "Unauthorized Access Test", + "Valid Data Test", + "Invalid Data Test" + ], + "CoveragePercentage": 10 + }, + { + "Endpoint": "api/Home/Index", + "Controller": "Home", + "Action": "Index", + "HttpMethods": [ + "GET" + ], + "TestedStates": [], + "UntestedStates": [ + "Anonymous" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [], + "MissingTestTypes": [], + "CoveragePercentage": 40 + }, + { + "Endpoint": "api/Messages/SendMessage", + "Controller": "Messages", + "Action": "SendMessage", + "HttpMethods": [ + "POST" + ], + "TestedStates": [], + "UntestedStates": [ + "Authenticated" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [], + "MissingTestTypes": [ + "Unauthorized Access Test", + "Valid Data Test", + "Invalid Data Test" + ], + "CoveragePercentage": 10 + }, + { + "Endpoint": "api/Messages/{id}", + "Controller": "Messages", + "Action": "GetMessage", + "HttpMethods": [ + "GET" + ], + "TestedStates": [], + "UntestedStates": [ + "Authenticated" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [], + "MissingTestTypes": [ + "Unauthorized Access Test", + "Valid Data Test", + "Invalid Data Test" + ], + "CoveragePercentage": 10 + }, + { + "Endpoint": "api/Messages/customer/{customerId}", + "Controller": "Messages", + "Action": "GetCustomerMessages", + "HttpMethods": [ + "GET" + ], + "TestedStates": [], + "UntestedStates": [ + "Authenticated" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [], + "MissingTestTypes": [ + "Unauthorized Access Test", + "Valid Data Test", + "Invalid Data Test" + ], + "CoveragePercentage": 10 + }, + { + "Endpoint": "api/Messages/order/{orderId}", + "Controller": "Messages", + "Action": "GetOrderMessages", + "HttpMethods": [ + "GET" + ], + "TestedStates": [], + "UntestedStates": [ + "Authenticated" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [], + "MissingTestTypes": [ + "Unauthorized Access Test", + "Valid Data Test", + "Invalid Data Test" + ], + "CoveragePercentage": 10 + }, + { + "Endpoint": "api/Messages/pending", + "Controller": "Messages", + "Action": "GetPendingMessages", + "HttpMethods": [ + "GET" + ], + "TestedStates": [], + "UntestedStates": [ + "Anonymous" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [], + "MissingTestTypes": [], + "CoveragePercentage": 40 + }, + { + "Endpoint": "api/Messages/{id}/mark-sent", + "Controller": "Messages", + "Action": "MarkMessageAsSent", + "HttpMethods": [ + "POST" + ], + "TestedStates": [], + "UntestedStates": [ + "Anonymous" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [], + "MissingTestTypes": [ + "Valid Data Test", + "Invalid Data Test" + ], + "CoveragePercentage": 20 + }, + { + "Endpoint": "api/Messages/{id}/mark-delivered", + "Controller": "Messages", + "Action": "MarkMessageAsDelivered", + "HttpMethods": [ + "POST" + ], + "TestedStates": [], + "UntestedStates": [ + "Authenticated" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [], + "MissingTestTypes": [ + "Unauthorized Access Test", + "Valid Data Test", + "Invalid Data Test" + ], + "CoveragePercentage": 10 + }, + { + "Endpoint": "api/Messages/{id}/mark-failed", + "Controller": "Messages", + "Action": "MarkMessageAsFailed", + "HttpMethods": [ + "POST" + ], + "TestedStates": [], + "UntestedStates": [ + "Anonymous" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [], + "MissingTestTypes": [ + "Valid Data Test", + "Invalid Data Test" + ], + "CoveragePercentage": 20 + }, + { + "Endpoint": "api/Orders/GetAllOrders", + "Controller": "Orders", + "Action": "GetAllOrders", + "HttpMethods": [ + "GET" + ], + "TestedStates": [], + "UntestedStates": [ + "Authenticated", + "Authenticated_Admin" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [ + "Admin" + ], + "MissingTestTypes": [ + "Unauthorized Access Test", + "Role-Based Authorization Test" + ], + "CoveragePercentage": 20 + }, + { + "Endpoint": "api/Orders/{id}", + "Controller": "Orders", + "Action": "GetOrder", + "HttpMethods": [ + "GET" + ], + "TestedStates": [], + "UntestedStates": [ + "Authenticated", + "Authenticated_Admin" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [ + "Admin" + ], + "MissingTestTypes": [ + "Unauthorized Access Test", + "Valid Data Test", + "Invalid Data Test", + "Role-Based Authorization Test" + ], + "CoveragePercentage": 0 + }, + { + "Endpoint": "api/Orders/{id}/status", + "Controller": "Orders", + "Action": "UpdateOrderStatus", + "HttpMethods": [ + "PUT" + ], + "TestedStates": [], + "UntestedStates": [ + "Authenticated", + "Authenticated_Admin" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [ + "Admin" + ], + "MissingTestTypes": [ + "Unauthorized Access Test", + "Valid Data Test", + "Invalid Data Test", + "Role-Based Authorization Test" + ], + "CoveragePercentage": 0 + }, + { + "Endpoint": "api/Orders/by-identity/{identityReference}", + "Controller": "Orders", + "Action": "GetOrdersByIdentity", + "HttpMethods": [ + "GET" + ], + "TestedStates": [], + "UntestedStates": [ + "Anonymous" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [], + "MissingTestTypes": [ + "Valid Data Test", + "Invalid Data Test", + "State-Dependent Content Test" + ], + "CoveragePercentage": 10 + }, + { + "Endpoint": "api/Orders/by-customer/{customerId}", + "Controller": "Orders", + "Action": "GetOrdersByCustomerId", + "HttpMethods": [ + "GET" + ], + "TestedStates": [], + "UntestedStates": [ + "Anonymous" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [], + "MissingTestTypes": [ + "Valid Data Test", + "Invalid Data Test", + "State-Dependent Content Test" + ], + "CoveragePercentage": 10 + }, + { + "Endpoint": "api/Orders/by-identity/{identityReference}/{id}", + "Controller": "Orders", + "Action": "GetOrderByIdentity", + "HttpMethods": [ + "GET" + ], + "TestedStates": [], + "UntestedStates": [ + "Anonymous" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [], + "MissingTestTypes": [ + "Valid Data Test", + "Invalid Data Test", + "State-Dependent Content Test" + ], + "CoveragePercentage": 10 + }, + { + "Endpoint": "api/Orders/CreateOrder", + "Controller": "Orders", + "Action": "CreateOrder", + "HttpMethods": [ + "POST" + ], + "TestedStates": [], + "UntestedStates": [ + "Anonymous" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [], + "MissingTestTypes": [ + "Valid Data Test", + "Invalid Data Test", + "State-Dependent Content Test" + ], + "CoveragePercentage": 10 + }, + { + "Endpoint": "api/Orders/{id}/payments", + "Controller": "Orders", + "Action": "CreatePayment", + "HttpMethods": [ + "POST" + ], + "TestedStates": [], + "UntestedStates": [ + "Anonymous" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [], + "MissingTestTypes": [ + "Valid Data Test", + "Invalid Data Test", + "State-Dependent Content Test" + ], + "CoveragePercentage": 10 + }, + { + "Endpoint": "api/Orders/{id}/payments", + "Controller": "Orders", + "Action": "GetOrderPayments", + "HttpMethods": [ + "GET" + ], + "TestedStates": [], + "UntestedStates": [ + "Authenticated" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [], + "MissingTestTypes": [ + "Unauthorized Access Test", + "Valid Data Test", + "Invalid Data Test" + ], + "CoveragePercentage": 10 + }, + { + "Endpoint": "api/Orders/payments/{paymentId}/status", + "Controller": "Orders", + "Action": "GetPaymentStatus", + "HttpMethods": [ + "GET" + ], + "TestedStates": [], + "UntestedStates": [ + "Authenticated" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [], + "MissingTestTypes": [ + "Unauthorized Access Test", + "Valid Data Test", + "Invalid Data Test" + ], + "CoveragePercentage": 10 + }, + { + "Endpoint": "api/Orders/{id}/cancel", + "Controller": "Orders", + "Action": "CancelOrder", + "HttpMethods": [ + "POST" + ], + "TestedStates": [], + "UntestedStates": [ + "Authenticated" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [], + "MissingTestTypes": [ + "Unauthorized Access Test", + "Valid Data Test", + "Invalid Data Test" + ], + "CoveragePercentage": 10 + }, + { + "Endpoint": "api/Orders/payments/webhook", + "Controller": "Orders", + "Action": "PaymentWebhook", + "HttpMethods": [ + "POST" + ], + "TestedStates": [], + "UntestedStates": [ + "Authenticated" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [], + "MissingTestTypes": [ + "Unauthorized Access Test", + "Valid Data Test", + "Invalid Data Test" + ], + "CoveragePercentage": 10 + }, + { + "Endpoint": "api/Test/create-product", + "Controller": "Test", + "Action": "CreateTestProduct", + "HttpMethods": [ + "POST" + ], + "TestedStates": [], + "UntestedStates": [ + "Anonymous" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [], + "MissingTestTypes": [], + "CoveragePercentage": 40 + }, + { + "Endpoint": "api/Test/setup-test-data", + "Controller": "Test", + "Action": "SetupTestData", + "HttpMethods": [ + "POST" + ], + "TestedStates": [], + "UntestedStates": [ + "Anonymous" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [], + "MissingTestTypes": [], + "CoveragePercentage": 40 + }, + { + "Endpoint": "api/Account/Login", + "Controller": "Account", + "Action": "Login", + "HttpMethods": [ + "GET" + ], + "TestedStates": [], + "UntestedStates": [ + "Anonymous" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [], + "MissingTestTypes": [], + "CoveragePercentage": 40 + }, + { + "Endpoint": "api/Account/Login", + "Controller": "Account", + "Action": "Login", + "HttpMethods": [ + "POST" + ], + "TestedStates": [], + "UntestedStates": [ + "Anonymous" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [], + "MissingTestTypes": [ + "Valid Data Test", + "Invalid Data Test" + ], + "CoveragePercentage": 20 + }, + { + "Endpoint": "api/Account/Logout", + "Controller": "Account", + "Action": "Logout", + "HttpMethods": [ + "POST" + ], + "TestedStates": [], + "UntestedStates": [ + "Authenticated" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [], + "MissingTestTypes": [ + "Unauthorized Access Test" + ], + "CoveragePercentage": 30.000000000000004 + }, + { + "Endpoint": "api/Account/AccessDenied", + "Controller": "Account", + "Action": "AccessDenied", + "HttpMethods": [ + "GET" + ], + "TestedStates": [], + "UntestedStates": [ + "Anonymous" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [], + "MissingTestTypes": [], + "CoveragePercentage": 40 + }, + { + "Endpoint": "api/Bots/Index", + "Controller": "Bots", + "Action": "Index", + "HttpMethods": [ + "GET" + ], + "TestedStates": [], + "UntestedStates": [ + "Authenticated" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [], + "MissingTestTypes": [ + "Unauthorized Access Test" + ], + "CoveragePercentage": 30.000000000000004 + }, + { + "Endpoint": "api/Bots/Details", + "Controller": "Bots", + "Action": "Details", + "HttpMethods": [ + "GET" + ], + "TestedStates": [], + "UntestedStates": [ + "Authenticated" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [], + "MissingTestTypes": [ + "Unauthorized Access Test", + "Valid Data Test", + "Invalid Data Test" + ], + "CoveragePercentage": 10 + }, + { + "Endpoint": "api/Bots/Create", + "Controller": "Bots", + "Action": "Create", + "HttpMethods": [ + "GET" + ], + "TestedStates": [], + "UntestedStates": [ + "Authenticated" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [], + "MissingTestTypes": [ + "Unauthorized Access Test" + ], + "CoveragePercentage": 30.000000000000004 + }, + { + "Endpoint": "api/Bots/Wizard", + "Controller": "Bots", + "Action": "Wizard", + "HttpMethods": [ + "GET" + ], + "TestedStates": [], + "UntestedStates": [ + "Authenticated" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [], + "MissingTestTypes": [ + "Unauthorized Access Test" + ], + "CoveragePercentage": 30.000000000000004 + }, + { + "Endpoint": "api/Bots/Wizard", + "Controller": "Bots", + "Action": "Wizard", + "HttpMethods": [ + "POST" + ], + "TestedStates": [], + "UntestedStates": [ + "Authenticated" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [], + "MissingTestTypes": [ + "Unauthorized Access Test", + "Valid Data Test", + "Invalid Data Test" + ], + "CoveragePercentage": 10 + }, + { + "Endpoint": "api/Bots/CompleteWizard", + "Controller": "Bots", + "Action": "CompleteWizard", + "HttpMethods": [ + "POST" + ], + "TestedStates": [], + "UntestedStates": [ + "Authenticated" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [], + "MissingTestTypes": [ + "Unauthorized Access Test", + "Valid Data Test", + "Invalid Data Test" + ], + "CoveragePercentage": 10 + }, + { + "Endpoint": "api/Bots/Create", + "Controller": "Bots", + "Action": "Create", + "HttpMethods": [ + "POST" + ], + "TestedStates": [], + "UntestedStates": [ + "Authenticated" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [], + "MissingTestTypes": [ + "Unauthorized Access Test", + "Valid Data Test", + "Invalid Data Test" + ], + "CoveragePercentage": 10 + }, + { + "Endpoint": "api/Bots/Edit", + "Controller": "Bots", + "Action": "Edit", + "HttpMethods": [ + "GET" + ], + "TestedStates": [], + "UntestedStates": [ + "Authenticated" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [], + "MissingTestTypes": [ + "Unauthorized Access Test", + "Valid Data Test", + "Invalid Data Test" + ], + "CoveragePercentage": 10 + }, + { + "Endpoint": "api/Bots/Edit", + "Controller": "Bots", + "Action": "Edit", + "HttpMethods": [ + "POST" + ], + "TestedStates": [], + "UntestedStates": [ + "Authenticated" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [], + "MissingTestTypes": [ + "Unauthorized Access Test", + "Valid Data Test", + "Invalid Data Test" + ], + "CoveragePercentage": 10 + }, + { + "Endpoint": "api/Bots/Metrics", + "Controller": "Bots", + "Action": "Metrics", + "HttpMethods": [ + "GET" + ], + "TestedStates": [], + "UntestedStates": [ + "Authenticated" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [], + "MissingTestTypes": [ + "Unauthorized Access Test", + "Valid Data Test", + "Invalid Data Test" + ], + "CoveragePercentage": 10 + }, + { + "Endpoint": "api/Bots/Delete", + "Controller": "Bots", + "Action": "Delete", + "HttpMethods": [ + "POST" + ], + "TestedStates": [], + "UntestedStates": [ + "Authenticated" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [], + "MissingTestTypes": [ + "Unauthorized Access Test", + "Valid Data Test", + "Invalid Data Test" + ], + "CoveragePercentage": 10 + }, + { + "Endpoint": "api/Bots/Suspend", + "Controller": "Bots", + "Action": "Suspend", + "HttpMethods": [ + "POST" + ], + "TestedStates": [], + "UntestedStates": [ + "Authenticated" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [], + "MissingTestTypes": [ + "Unauthorized Access Test", + "Valid Data Test", + "Invalid Data Test" + ], + "CoveragePercentage": 10 + }, + { + "Endpoint": "api/Bots/Activate", + "Controller": "Bots", + "Action": "Activate", + "HttpMethods": [ + "POST" + ], + "TestedStates": [], + "UntestedStates": [ + "Authenticated" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [], + "MissingTestTypes": [ + "Unauthorized Access Test", + "Valid Data Test", + "Invalid Data Test" + ], + "CoveragePercentage": 10 + }, + { + "Endpoint": "api/Bots/RegenerateKey", + "Controller": "Bots", + "Action": "RegenerateKey", + "HttpMethods": [ + "GET" + ], + "TestedStates": [], + "UntestedStates": [ + "Authenticated" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [], + "MissingTestTypes": [ + "Unauthorized Access Test", + "Valid Data Test", + "Invalid Data Test" + ], + "CoveragePercentage": 10 + }, + { + "Endpoint": "api/Categories/Index", + "Controller": "Categories", + "Action": "Index", + "HttpMethods": [ + "GET" + ], + "TestedStates": [], + "UntestedStates": [ + "Authenticated" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [], + "MissingTestTypes": [ + "Unauthorized Access Test" + ], + "CoveragePercentage": 30.000000000000004 + }, + { + "Endpoint": "api/Categories/Create", + "Controller": "Categories", + "Action": "Create", + "HttpMethods": [ + "GET" + ], + "TestedStates": [], + "UntestedStates": [ + "Authenticated" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [], + "MissingTestTypes": [ + "Unauthorized Access Test" + ], + "CoveragePercentage": 30.000000000000004 + }, + { + "Endpoint": "api/Categories/Create", + "Controller": "Categories", + "Action": "Create", + "HttpMethods": [ + "POST" + ], + "TestedStates": [], + "UntestedStates": [ + "Authenticated" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [], + "MissingTestTypes": [ + "Unauthorized Access Test", + "Valid Data Test", + "Invalid Data Test" + ], + "CoveragePercentage": 10 + }, + { + "Endpoint": "api/Categories/Edit", + "Controller": "Categories", + "Action": "Edit", + "HttpMethods": [ + "GET" + ], + "TestedStates": [], + "UntestedStates": [ + "Authenticated" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [], + "MissingTestTypes": [ + "Unauthorized Access Test", + "Valid Data Test", + "Invalid Data Test" + ], + "CoveragePercentage": 10 + }, + { + "Endpoint": "api/Categories/Edit", + "Controller": "Categories", + "Action": "Edit", + "HttpMethods": [ + "POST" + ], + "TestedStates": [], + "UntestedStates": [ + "Authenticated" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [], + "MissingTestTypes": [ + "Unauthorized Access Test", + "Valid Data Test", + "Invalid Data Test" + ], + "CoveragePercentage": 10 + }, + { + "Endpoint": "api/Categories/Delete", + "Controller": "Categories", + "Action": "Delete", + "HttpMethods": [ + "POST" + ], + "TestedStates": [], + "UntestedStates": [ + "Authenticated" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [], + "MissingTestTypes": [ + "Unauthorized Access Test", + "Valid Data Test", + "Invalid Data Test" + ], + "CoveragePercentage": 10 + }, + { + "Endpoint": "api/Dashboard/Index", + "Controller": "Dashboard", + "Action": "Index", + "HttpMethods": [ + "GET" + ], + "TestedStates": [], + "UntestedStates": [ + "Authenticated" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [], + "MissingTestTypes": [ + "Unauthorized Access Test" + ], + "CoveragePercentage": 30.000000000000004 + }, + { + "Endpoint": "api/Messages/Index", + "Controller": "Messages", + "Action": "Index", + "HttpMethods": [ + "GET" + ], + "TestedStates": [], + "UntestedStates": [ + "Authenticated" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [], + "MissingTestTypes": [ + "Unauthorized Access Test" + ], + "CoveragePercentage": 30.000000000000004 + }, + { + "Endpoint": "api/Messages/Customer", + "Controller": "Messages", + "Action": "Customer", + "HttpMethods": [ + "GET" + ], + "TestedStates": [], + "UntestedStates": [ + "Authenticated" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [], + "MissingTestTypes": [ + "Unauthorized Access Test", + "Valid Data Test", + "Invalid Data Test" + ], + "CoveragePercentage": 10 + }, + { + "Endpoint": "api/Messages/Reply", + "Controller": "Messages", + "Action": "Reply", + "HttpMethods": [ + "POST" + ], + "TestedStates": [], + "UntestedStates": [ + "Authenticated" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [], + "MissingTestTypes": [ + "Unauthorized Access Test", + "Valid Data Test", + "Invalid Data Test" + ], + "CoveragePercentage": 10 + }, + { + "Endpoint": "api/Orders/Index", + "Controller": "Orders", + "Action": "Index", + "HttpMethods": [ + "GET" + ], + "TestedStates": [], + "UntestedStates": [ + "Authenticated" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [], + "MissingTestTypes": [ + "Unauthorized Access Test" + ], + "CoveragePercentage": 30.000000000000004 + }, + { + "Endpoint": "api/Orders/Details", + "Controller": "Orders", + "Action": "Details", + "HttpMethods": [ + "GET" + ], + "TestedStates": [], + "UntestedStates": [ + "Authenticated" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [], + "MissingTestTypes": [ + "Unauthorized Access Test", + "Valid Data Test", + "Invalid Data Test" + ], + "CoveragePercentage": 10 + }, + { + "Endpoint": "api/Orders/Create", + "Controller": "Orders", + "Action": "Create", + "HttpMethods": [ + "GET" + ], + "TestedStates": [], + "UntestedStates": [ + "Authenticated" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [], + "MissingTestTypes": [ + "Unauthorized Access Test" + ], + "CoveragePercentage": 30.000000000000004 + }, + { + "Endpoint": "api/Orders/Create", + "Controller": "Orders", + "Action": "Create", + "HttpMethods": [ + "POST" + ], + "TestedStates": [], + "UntestedStates": [ + "Authenticated" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [], + "MissingTestTypes": [ + "Unauthorized Access Test", + "Valid Data Test", + "Invalid Data Test" + ], + "CoveragePercentage": 10 + }, + { + "Endpoint": "api/Orders/Edit", + "Controller": "Orders", + "Action": "Edit", + "HttpMethods": [ + "GET" + ], + "TestedStates": [], + "UntestedStates": [ + "Authenticated" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [], + "MissingTestTypes": [ + "Unauthorized Access Test", + "Valid Data Test", + "Invalid Data Test" + ], + "CoveragePercentage": 10 + }, + { + "Endpoint": "api/Orders/Edit", + "Controller": "Orders", + "Action": "Edit", + "HttpMethods": [ + "POST" + ], + "TestedStates": [], + "UntestedStates": [ + "Authenticated" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [], + "MissingTestTypes": [ + "Unauthorized Access Test", + "Valid Data Test", + "Invalid Data Test" + ], + "CoveragePercentage": 10 + }, + { + "Endpoint": "api/Orders/UpdateStatus", + "Controller": "Orders", + "Action": "UpdateStatus", + "HttpMethods": [ + "POST" + ], + "TestedStates": [], + "UntestedStates": [ + "Authenticated" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [], + "MissingTestTypes": [ + "Unauthorized Access Test", + "Valid Data Test", + "Invalid Data Test" + ], + "CoveragePercentage": 10 + }, + { + "Endpoint": "api/Products/Index", + "Controller": "Products", + "Action": "Index", + "HttpMethods": [ + "GET" + ], + "TestedStates": [], + "UntestedStates": [ + "Authenticated" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [], + "MissingTestTypes": [ + "Unauthorized Access Test" + ], + "CoveragePercentage": 30.000000000000004 + }, + { + "Endpoint": "api/Products/Create", + "Controller": "Products", + "Action": "Create", + "HttpMethods": [ + "GET" + ], + "TestedStates": [], + "UntestedStates": [ + "Authenticated" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [], + "MissingTestTypes": [ + "Unauthorized Access Test" + ], + "CoveragePercentage": 30.000000000000004 + }, + { + "Endpoint": "api/Products/Create", + "Controller": "Products", + "Action": "Create", + "HttpMethods": [ + "POST" + ], + "TestedStates": [], + "UntestedStates": [ + "Authenticated" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [], + "MissingTestTypes": [ + "Unauthorized Access Test", + "Valid Data Test", + "Invalid Data Test" + ], + "CoveragePercentage": 10 + }, + { + "Endpoint": "api/Products/Edit", + "Controller": "Products", + "Action": "Edit", + "HttpMethods": [ + "GET" + ], + "TestedStates": [], + "UntestedStates": [ + "Authenticated" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [], + "MissingTestTypes": [ + "Unauthorized Access Test", + "Valid Data Test", + "Invalid Data Test" + ], + "CoveragePercentage": 10 + }, + { + "Endpoint": "api/Products/Edit", + "Controller": "Products", + "Action": "Edit", + "HttpMethods": [ + "POST" + ], + "TestedStates": [], + "UntestedStates": [ + "Authenticated" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [], + "MissingTestTypes": [ + "Unauthorized Access Test", + "Valid Data Test", + "Invalid Data Test" + ], + "CoveragePercentage": 10 + }, + { + "Endpoint": "api/Products/UploadPhoto", + "Controller": "Products", + "Action": "UploadPhoto", + "HttpMethods": [ + "POST" + ], + "TestedStates": [], + "UntestedStates": [ + "Authenticated" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [], + "MissingTestTypes": [ + "Unauthorized Access Test", + "Valid Data Test", + "Invalid Data Test" + ], + "CoveragePercentage": 10 + }, + { + "Endpoint": "api/Products/DeletePhoto", + "Controller": "Products", + "Action": "DeletePhoto", + "HttpMethods": [ + "POST" + ], + "TestedStates": [], + "UntestedStates": [ + "Authenticated" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [], + "MissingTestTypes": [ + "Unauthorized Access Test", + "Valid Data Test", + "Invalid Data Test" + ], + "CoveragePercentage": 10 + }, + { + "Endpoint": "api/Products/Delete", + "Controller": "Products", + "Action": "Delete", + "HttpMethods": [ + "POST" + ], + "TestedStates": [], + "UntestedStates": [ + "Authenticated" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [], + "MissingTestTypes": [ + "Unauthorized Access Test", + "Valid Data Test", + "Invalid Data Test" + ], + "CoveragePercentage": 10 + }, + { + "Endpoint": "api/ShippingRates/Index", + "Controller": "ShippingRates", + "Action": "Index", + "HttpMethods": [ + "GET" + ], + "TestedStates": [], + "UntestedStates": [ + "Authenticated" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [], + "MissingTestTypes": [ + "Unauthorized Access Test" + ], + "CoveragePercentage": 30.000000000000004 + }, + { + "Endpoint": "api/ShippingRates/Create", + "Controller": "ShippingRates", + "Action": "Create", + "HttpMethods": [ + "GET" + ], + "TestedStates": [], + "UntestedStates": [ + "Authenticated" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [], + "MissingTestTypes": [ + "Unauthorized Access Test" + ], + "CoveragePercentage": 30.000000000000004 + }, + { + "Endpoint": "api/ShippingRates/Create", + "Controller": "ShippingRates", + "Action": "Create", + "HttpMethods": [ + "POST" + ], + "TestedStates": [], + "UntestedStates": [ + "Authenticated" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [], + "MissingTestTypes": [ + "Unauthorized Access Test", + "Valid Data Test", + "Invalid Data Test" + ], + "CoveragePercentage": 10 + }, + { + "Endpoint": "api/ShippingRates/Edit", + "Controller": "ShippingRates", + "Action": "Edit", + "HttpMethods": [ + "GET" + ], + "TestedStates": [], + "UntestedStates": [ + "Authenticated" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [], + "MissingTestTypes": [ + "Unauthorized Access Test", + "Valid Data Test", + "Invalid Data Test" + ], + "CoveragePercentage": 10 + }, + { + "Endpoint": "api/ShippingRates/Edit", + "Controller": "ShippingRates", + "Action": "Edit", + "HttpMethods": [ + "POST" + ], + "TestedStates": [], + "UntestedStates": [ + "Authenticated" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [], + "MissingTestTypes": [ + "Unauthorized Access Test", + "Valid Data Test", + "Invalid Data Test" + ], + "CoveragePercentage": 10 + }, + { + "Endpoint": "api/ShippingRates/Delete", + "Controller": "ShippingRates", + "Action": "Delete", + "HttpMethods": [ + "POST" + ], + "TestedStates": [], + "UntestedStates": [ + "Authenticated" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [], + "MissingTestTypes": [ + "Unauthorized Access Test", + "Valid Data Test", + "Invalid Data Test" + ], + "CoveragePercentage": 10 + }, + { + "Endpoint": "api/Users/Index", + "Controller": "Users", + "Action": "Index", + "HttpMethods": [ + "GET" + ], + "TestedStates": [], + "UntestedStates": [ + "Authenticated" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [], + "MissingTestTypes": [ + "Unauthorized Access Test" + ], + "CoveragePercentage": 30.000000000000004 + }, + { + "Endpoint": "api/Users/Create", + "Controller": "Users", + "Action": "Create", + "HttpMethods": [ + "GET" + ], + "TestedStates": [], + "UntestedStates": [ + "Authenticated" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [], + "MissingTestTypes": [ + "Unauthorized Access Test" + ], + "CoveragePercentage": 30.000000000000004 + }, + { + "Endpoint": "api/Users/Create", + "Controller": "Users", + "Action": "Create", + "HttpMethods": [ + "POST" + ], + "TestedStates": [], + "UntestedStates": [ + "Authenticated" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [], + "MissingTestTypes": [ + "Unauthorized Access Test", + "Valid Data Test", + "Invalid Data Test" + ], + "CoveragePercentage": 10 + }, + { + "Endpoint": "api/Users/Edit", + "Controller": "Users", + "Action": "Edit", + "HttpMethods": [ + "GET" + ], + "TestedStates": [], + "UntestedStates": [ + "Authenticated" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [], + "MissingTestTypes": [ + "Unauthorized Access Test", + "Valid Data Test", + "Invalid Data Test" + ], + "CoveragePercentage": 10 + }, + { + "Endpoint": "api/Users/Edit", + "Controller": "Users", + "Action": "Edit", + "HttpMethods": [ + "POST" + ], + "TestedStates": [], + "UntestedStates": [ + "Authenticated" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [], + "MissingTestTypes": [ + "Unauthorized Access Test", + "Valid Data Test", + "Invalid Data Test" + ], + "CoveragePercentage": 10 + }, + { + "Endpoint": "api/Users/Delete", + "Controller": "Users", + "Action": "Delete", + "HttpMethods": [ + "POST" + ], + "TestedStates": [], + "UntestedStates": [ + "Authenticated" + ], + "HasUnauthorizedTest": false, + "HasValidDataTest": false, + "HasInvalidDataTest": false, + "HasRoleBasedTests": false, + "RequiredRoles": [], + "MissingTestTypes": [ + "Unauthorized Access Test", + "Valid Data Test", + "Invalid Data Test" + ], + "CoveragePercentage": 10 + } + ], + "AuthenticationScenarios": [ + { + "ScenarioName": "Login Flow", + "FromState": "Anonymous", + "ToState": "Authenticated", + "RequiredEndpoints": [ + "AuthController/Login" + ], + "IsTested": false, + "TestDescription": "User should be able to transition from Anonymous to Authenticated via login endpoint" + }, + { + "ScenarioName": "Register Flow", + "FromState": "Anonymous", + "ToState": "Authenticated", + "RequiredEndpoints": [ + "BotsController/RegisterBot" + ], + "IsTested": false, + "TestDescription": "User should be able to transition from Anonymous to Authenticated via registration endpoint" + }, + { + "ScenarioName": "Login Flow", + "FromState": "Anonymous", + "ToState": "Authenticated", + "RequiredEndpoints": [ + "BotsController/AuthenticateBot" + ], + "IsTested": false, + "TestDescription": "User should be able to transition from Anonymous to Authenticated via login endpoint" + }, + { + "ScenarioName": "Login Flow", + "FromState": "Anonymous", + "ToState": "Authenticated", + "RequiredEndpoints": [ + "AccountController/Login" + ], + "IsTested": false, + "TestDescription": "User should be able to transition from Anonymous to Authenticated via login endpoint" + }, + { + "ScenarioName": "Login Flow", + "FromState": "Anonymous", + "ToState": "Authenticated", + "RequiredEndpoints": [ + "AccountController/Login" + ], + "IsTested": false, + "TestDescription": "User should be able to transition from Anonymous to Authenticated via login endpoint" + }, + { + "ScenarioName": "Logout Flow", + "FromState": "Authenticated", + "ToState": "Anonymous", + "RequiredEndpoints": [ + "AccountController/Logout" + ], + "IsTested": false, + "TestDescription": "User should be able to transition from Authenticated to Anonymous via logout endpoint" + }, + { + "ScenarioName": "Logout Flow", + "FromState": "Authenticated_Admin", + "ToState": "Anonymous", + "RequiredEndpoints": [ + "AccountController/Logout" + ], + "IsTested": false, + "TestDescription": "User should be able to transition from Authenticated_Admin to Anonymous via logout endpoint" + }, + { + "ScenarioName": "Session Timeout", + "FromState": "Authenticated", + "ToState": "Anonymous", + "RequiredEndpoints": [], + "IsTested": false, + "TestDescription": "Verify that expired sessions are handled correctly and user is redirected to login" + }, + { + "ScenarioName": "Concurrent Sessions", + "FromState": "Authenticated", + "ToState": "Authenticated", + "RequiredEndpoints": [], + "IsTested": false, + "TestDescription": "Test behavior when same user logs in from multiple locations" + }, + { + "ScenarioName": "Role Switching", + "FromState": "Authenticated_User", + "ToState": "Authenticated_Admin", + "RequiredEndpoints": [], + "IsTested": false, + "TestDescription": "Verify that role changes are reflected in endpoint accessibility" + } + ], + "IdentifiedGaps": [ + { + "GapType": "Low Coverage", + "Endpoint": "api/Auth/login", + "Description": "Endpoint has only 20.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Anonymous" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/bot/messages/pending", + "Description": "Endpoint has only 40.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Anonymous" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/bot/messages/{id}/mark-sent", + "Description": "Endpoint has only 20.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Anonymous" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/bot/messages/{id}/mark-failed", + "Description": "Endpoint has only 20.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Anonymous" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/bot/messages/test-create", + "Description": "Endpoint has only 20.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Anonymous" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/bot/messages/customer-create", + "Description": "Endpoint has only 20.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Anonymous" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/bot/messages/customer/{customerId}", + "Description": "Endpoint has only 20.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Anonymous" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/Bots/register", + "Description": "Endpoint has only 20.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Anonymous" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/Bots/authenticate", + "Description": "Endpoint has only 20.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Anonymous" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/Bots/settings", + "Description": "Endpoint has only 40.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Anonymous" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/Bots/settings", + "Description": "Endpoint has only 20.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Anonymous" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/Bots/heartbeat", + "Description": "Endpoint has only 20.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Anonymous" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/Bots/platform-info", + "Description": "Endpoint has only 20.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Anonymous" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/Bots/metrics", + "Description": "Endpoint has only 20.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Anonymous" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/Bots/metrics/batch", + "Description": "Endpoint has only 20.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Anonymous" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/Bots/sessions/start", + "Description": "Endpoint has only 20.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Anonymous" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/Bots/sessions/{sessionId}", + "Description": "Endpoint has only 20.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Anonymous" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/Bots/sessions/{sessionId}/end", + "Description": "Endpoint has only 20.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Anonymous" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/Bots/GetAllBots", + "Description": "Endpoint has only 20.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Authenticated", + "Authenticated_Admin" + ] + }, + { + "GapType": "Missing Authorization Test", + "Endpoint": "api/Bots/GetAllBots", + "Description": "Protected endpoint lacks unauthorized access test", + "Severity": "Critical", + "Recommendation": "Add test to verify 401/403 response for unauthorized access", + "AffectedStates": [ + "Anonymous" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/Bots/{id}", + "Description": "Endpoint has only 0.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Authenticated", + "Authenticated_Admin" + ] + }, + { + "GapType": "Missing Authorization Test", + "Endpoint": "api/Bots/{id}", + "Description": "Protected endpoint lacks unauthorized access test", + "Severity": "Critical", + "Recommendation": "Add test to verify 401/403 response for unauthorized access", + "AffectedStates": [ + "Anonymous" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/Bots/{id}/metrics", + "Description": "Endpoint has only 0.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Authenticated", + "Authenticated_Admin" + ] + }, + { + "GapType": "Missing Authorization Test", + "Endpoint": "api/Bots/{id}/metrics", + "Description": "Protected endpoint lacks unauthorized access test", + "Severity": "Critical", + "Recommendation": "Add test to verify 401/403 response for unauthorized access", + "AffectedStates": [ + "Anonymous" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/Bots/{id}/metrics/summary", + "Description": "Endpoint has only 0.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Authenticated", + "Authenticated_Admin" + ] + }, + { + "GapType": "Missing Authorization Test", + "Endpoint": "api/Bots/{id}/metrics/summary", + "Description": "Protected endpoint lacks unauthorized access test", + "Severity": "Critical", + "Recommendation": "Add test to verify 401/403 response for unauthorized access", + "AffectedStates": [ + "Anonymous" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/Bots/{id}/sessions", + "Description": "Endpoint has only 0.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Authenticated", + "Authenticated_Admin" + ] + }, + { + "GapType": "Missing Authorization Test", + "Endpoint": "api/Bots/{id}/sessions", + "Description": "Protected endpoint lacks unauthorized access test", + "Severity": "Critical", + "Recommendation": "Add test to verify 401/403 response for unauthorized access", + "AffectedStates": [ + "Anonymous" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/Bots/{id}", + "Description": "Endpoint has only 0.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Authenticated", + "Authenticated_Admin" + ] + }, + { + "GapType": "Missing Authorization Test", + "Endpoint": "api/Bots/{id}", + "Description": "Protected endpoint lacks unauthorized access test", + "Severity": "Critical", + "Recommendation": "Add test to verify 401/403 response for unauthorized access", + "AffectedStates": [ + "Anonymous" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/Catalog/categories", + "Description": "Endpoint has only 40.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Anonymous" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/Catalog/categories/{id}", + "Description": "Endpoint has only 20.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Anonymous" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/Catalog/products", + "Description": "Endpoint has only 40.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Anonymous" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/Catalog/products/{id}", + "Description": "Endpoint has only 20.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Anonymous" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/Customers/GetCustomers", + "Description": "Endpoint has only 30.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Authenticated" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/Customers/{id}", + "Description": "Endpoint has only 10.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Authenticated" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/Customers/by-telegram/{telegramUserId}", + "Description": "Endpoint has only 10.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Authenticated" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/Customers/CreateCustomer", + "Description": "Endpoint has only 10.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Authenticated" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/Customers/get-or-create", + "Description": "Endpoint has only 10.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Anonymous" + ] + }, + { + "GapType": "State-Dependent Logic", + "Endpoint": "api/Customers/get-or-create", + "Description": "Endpoint may show different content based on authentication state", + "Severity": "Warning", + "Recommendation": "Test endpoint with different authentication states to verify content differences", + "AffectedStates": [ + "Anonymous", + "Authenticated" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/Customers/{id}", + "Description": "Endpoint has only 10.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Authenticated" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/Customers/{id}/block", + "Description": "Endpoint has only 10.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Authenticated" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/Customers/{id}/unblock", + "Description": "Endpoint has only 10.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Authenticated" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/Customers/{id}", + "Description": "Endpoint has only 10.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Authenticated" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/Home/Index", + "Description": "Endpoint has only 40.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Anonymous" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/Messages/SendMessage", + "Description": "Endpoint has only 10.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Authenticated" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/Messages/{id}", + "Description": "Endpoint has only 10.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Authenticated" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/Messages/customer/{customerId}", + "Description": "Endpoint has only 10.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Authenticated" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/Messages/order/{orderId}", + "Description": "Endpoint has only 10.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Authenticated" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/Messages/pending", + "Description": "Endpoint has only 40.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Anonymous" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/Messages/{id}/mark-sent", + "Description": "Endpoint has only 20.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Anonymous" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/Messages/{id}/mark-delivered", + "Description": "Endpoint has only 10.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Authenticated" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/Messages/{id}/mark-failed", + "Description": "Endpoint has only 20.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Anonymous" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/Orders/GetAllOrders", + "Description": "Endpoint has only 20.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Authenticated", + "Authenticated_Admin" + ] + }, + { + "GapType": "Missing Authorization Test", + "Endpoint": "api/Orders/GetAllOrders", + "Description": "Protected endpoint lacks unauthorized access test", + "Severity": "Critical", + "Recommendation": "Add test to verify 401/403 response for unauthorized access", + "AffectedStates": [ + "Anonymous" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/Orders/{id}", + "Description": "Endpoint has only 0.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Authenticated", + "Authenticated_Admin" + ] + }, + { + "GapType": "Missing Authorization Test", + "Endpoint": "api/Orders/{id}", + "Description": "Protected endpoint lacks unauthorized access test", + "Severity": "Critical", + "Recommendation": "Add test to verify 401/403 response for unauthorized access", + "AffectedStates": [ + "Anonymous" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/Orders/{id}/status", + "Description": "Endpoint has only 0.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Authenticated", + "Authenticated_Admin" + ] + }, + { + "GapType": "Missing Authorization Test", + "Endpoint": "api/Orders/{id}/status", + "Description": "Protected endpoint lacks unauthorized access test", + "Severity": "Critical", + "Recommendation": "Add test to verify 401/403 response for unauthorized access", + "AffectedStates": [ + "Anonymous" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/Orders/by-identity/{identityReference}", + "Description": "Endpoint has only 10.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Anonymous" + ] + }, + { + "GapType": "State-Dependent Logic", + "Endpoint": "api/Orders/by-identity/{identityReference}", + "Description": "Endpoint may show different content based on authentication state", + "Severity": "Warning", + "Recommendation": "Test endpoint with different authentication states to verify content differences", + "AffectedStates": [ + "Anonymous", + "Authenticated" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/Orders/by-customer/{customerId}", + "Description": "Endpoint has only 10.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Anonymous" + ] + }, + { + "GapType": "State-Dependent Logic", + "Endpoint": "api/Orders/by-customer/{customerId}", + "Description": "Endpoint may show different content based on authentication state", + "Severity": "Warning", + "Recommendation": "Test endpoint with different authentication states to verify content differences", + "AffectedStates": [ + "Anonymous", + "Authenticated" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/Orders/by-identity/{identityReference}/{id}", + "Description": "Endpoint has only 10.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Anonymous" + ] + }, + { + "GapType": "State-Dependent Logic", + "Endpoint": "api/Orders/by-identity/{identityReference}/{id}", + "Description": "Endpoint may show different content based on authentication state", + "Severity": "Warning", + "Recommendation": "Test endpoint with different authentication states to verify content differences", + "AffectedStates": [ + "Anonymous", + "Authenticated" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/Orders/CreateOrder", + "Description": "Endpoint has only 10.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Anonymous" + ] + }, + { + "GapType": "State-Dependent Logic", + "Endpoint": "api/Orders/CreateOrder", + "Description": "Endpoint may show different content based on authentication state", + "Severity": "Warning", + "Recommendation": "Test endpoint with different authentication states to verify content differences", + "AffectedStates": [ + "Anonymous", + "Authenticated" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/Orders/{id}/payments", + "Description": "Endpoint has only 10.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Anonymous" + ] + }, + { + "GapType": "State-Dependent Logic", + "Endpoint": "api/Orders/{id}/payments", + "Description": "Endpoint may show different content based on authentication state", + "Severity": "Warning", + "Recommendation": "Test endpoint with different authentication states to verify content differences", + "AffectedStates": [ + "Anonymous", + "Authenticated" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/Orders/{id}/payments", + "Description": "Endpoint has only 10.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Authenticated" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/Orders/payments/{paymentId}/status", + "Description": "Endpoint has only 10.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Authenticated" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/Orders/{id}/cancel", + "Description": "Endpoint has only 10.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Authenticated" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/Orders/payments/webhook", + "Description": "Endpoint has only 10.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Authenticated" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/Test/create-product", + "Description": "Endpoint has only 40.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Anonymous" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/Test/setup-test-data", + "Description": "Endpoint has only 40.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Anonymous" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/Account/Login", + "Description": "Endpoint has only 40.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Anonymous" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/Account/Login", + "Description": "Endpoint has only 20.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Anonymous" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/Account/Logout", + "Description": "Endpoint has only 30.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Authenticated" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/Account/AccessDenied", + "Description": "Endpoint has only 40.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Anonymous" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/Bots/Index", + "Description": "Endpoint has only 30.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Authenticated" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/Bots/Details", + "Description": "Endpoint has only 10.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Authenticated" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/Bots/Create", + "Description": "Endpoint has only 30.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Authenticated" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/Bots/Wizard", + "Description": "Endpoint has only 30.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Authenticated" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/Bots/Wizard", + "Description": "Endpoint has only 10.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Authenticated" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/Bots/CompleteWizard", + "Description": "Endpoint has only 10.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Authenticated" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/Bots/Create", + "Description": "Endpoint has only 10.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Authenticated" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/Bots/Edit", + "Description": "Endpoint has only 10.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Authenticated" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/Bots/Edit", + "Description": "Endpoint has only 10.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Authenticated" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/Bots/Metrics", + "Description": "Endpoint has only 10.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Authenticated" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/Bots/Delete", + "Description": "Endpoint has only 10.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Authenticated" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/Bots/Suspend", + "Description": "Endpoint has only 10.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Authenticated" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/Bots/Activate", + "Description": "Endpoint has only 10.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Authenticated" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/Bots/RegenerateKey", + "Description": "Endpoint has only 10.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Authenticated" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/Categories/Index", + "Description": "Endpoint has only 30.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Authenticated" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/Categories/Create", + "Description": "Endpoint has only 30.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Authenticated" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/Categories/Create", + "Description": "Endpoint has only 10.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Authenticated" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/Categories/Edit", + "Description": "Endpoint has only 10.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Authenticated" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/Categories/Edit", + "Description": "Endpoint has only 10.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Authenticated" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/Categories/Delete", + "Description": "Endpoint has only 10.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Authenticated" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/Dashboard/Index", + "Description": "Endpoint has only 30.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Authenticated" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/Messages/Index", + "Description": "Endpoint has only 30.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Authenticated" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/Messages/Customer", + "Description": "Endpoint has only 10.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Authenticated" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/Messages/Reply", + "Description": "Endpoint has only 10.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Authenticated" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/Orders/Index", + "Description": "Endpoint has only 30.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Authenticated" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/Orders/Details", + "Description": "Endpoint has only 10.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Authenticated" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/Orders/Create", + "Description": "Endpoint has only 30.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Authenticated" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/Orders/Create", + "Description": "Endpoint has only 10.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Authenticated" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/Orders/Edit", + "Description": "Endpoint has only 10.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Authenticated" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/Orders/Edit", + "Description": "Endpoint has only 10.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Authenticated" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/Orders/UpdateStatus", + "Description": "Endpoint has only 10.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Authenticated" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/Products/Index", + "Description": "Endpoint has only 30.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Authenticated" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/Products/Create", + "Description": "Endpoint has only 30.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Authenticated" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/Products/Create", + "Description": "Endpoint has only 10.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Authenticated" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/Products/Edit", + "Description": "Endpoint has only 10.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Authenticated" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/Products/Edit", + "Description": "Endpoint has only 10.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Authenticated" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/Products/UploadPhoto", + "Description": "Endpoint has only 10.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Authenticated" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/Products/DeletePhoto", + "Description": "Endpoint has only 10.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Authenticated" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/Products/Delete", + "Description": "Endpoint has only 10.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Authenticated" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/ShippingRates/Index", + "Description": "Endpoint has only 30.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Authenticated" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/ShippingRates/Create", + "Description": "Endpoint has only 30.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Authenticated" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/ShippingRates/Create", + "Description": "Endpoint has only 10.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Authenticated" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/ShippingRates/Edit", + "Description": "Endpoint has only 10.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Authenticated" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/ShippingRates/Edit", + "Description": "Endpoint has only 10.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Authenticated" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/ShippingRates/Delete", + "Description": "Endpoint has only 10.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Authenticated" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/Users/Index", + "Description": "Endpoint has only 30.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Authenticated" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/Users/Create", + "Description": "Endpoint has only 30.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Authenticated" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/Users/Create", + "Description": "Endpoint has only 10.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Authenticated" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/Users/Edit", + "Description": "Endpoint has only 10.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Authenticated" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/Users/Edit", + "Description": "Endpoint has only 10.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Authenticated" + ] + }, + { + "GapType": "Low Coverage", + "Endpoint": "api/Users/Delete", + "Description": "Endpoint has only 10.0% test coverage", + "Severity": "Critical", + "Recommendation": "Implement comprehensive test suite covering all authentication states and data scenarios", + "AffectedStates": [ + "Authenticated" + ] + }, + { + "GapType": "Data Validation", + "Endpoint": "api/Auth/login", + "Description": "Endpoint with complex parameters lacks comprehensive data validation tests", + "Severity": "Warning", + "Recommendation": "Add tests for both valid and invalid data scenarios, including edge cases", + "AffectedStates": [] + }, + { + "GapType": "Data Validation", + "Endpoint": "api/bot/messages/{id}/mark-sent", + "Description": "Endpoint with complex parameters lacks comprehensive data validation tests", + "Severity": "Warning", + "Recommendation": "Add tests for both valid and invalid data scenarios, including edge cases", + "AffectedStates": [] + }, + { + "GapType": "Data Validation", + "Endpoint": "api/bot/messages/{id}/mark-failed", + "Description": "Endpoint with complex parameters lacks comprehensive data validation tests", + "Severity": "Warning", + "Recommendation": "Add tests for both valid and invalid data scenarios, including edge cases", + "AffectedStates": [] + }, + { + "GapType": "Data Validation", + "Endpoint": "api/bot/messages/test-create", + "Description": "Endpoint with complex parameters lacks comprehensive data validation tests", + "Severity": "Warning", + "Recommendation": "Add tests for both valid and invalid data scenarios, including edge cases", + "AffectedStates": [] + }, + { + "GapType": "Data Validation", + "Endpoint": "api/bot/messages/customer-create", + "Description": "Endpoint with complex parameters lacks comprehensive data validation tests", + "Severity": "Warning", + "Recommendation": "Add tests for both valid and invalid data scenarios, including edge cases", + "AffectedStates": [] + }, + { + "GapType": "Data Validation", + "Endpoint": "api/bot/messages/customer/{customerId}", + "Description": "Endpoint with complex parameters lacks comprehensive data validation tests", + "Severity": "Warning", + "Recommendation": "Add tests for both valid and invalid data scenarios, including edge cases", + "AffectedStates": [] + }, + { + "GapType": "Data Validation", + "Endpoint": "api/Bots/register", + "Description": "Endpoint with complex parameters lacks comprehensive data validation tests", + "Severity": "Warning", + "Recommendation": "Add tests for both valid and invalid data scenarios, including edge cases", + "AffectedStates": [] + }, + { + "GapType": "Data Validation", + "Endpoint": "api/Bots/authenticate", + "Description": "Endpoint with complex parameters lacks comprehensive data validation tests", + "Severity": "Warning", + "Recommendation": "Add tests for both valid and invalid data scenarios, including edge cases", + "AffectedStates": [] + }, + { + "GapType": "Data Validation", + "Endpoint": "api/Bots/settings", + "Description": "Endpoint with complex parameters lacks comprehensive data validation tests", + "Severity": "Warning", + "Recommendation": "Add tests for both valid and invalid data scenarios, including edge cases", + "AffectedStates": [] + }, + { + "GapType": "Data Validation", + "Endpoint": "api/Bots/heartbeat", + "Description": "Endpoint with complex parameters lacks comprehensive data validation tests", + "Severity": "Warning", + "Recommendation": "Add tests for both valid and invalid data scenarios, including edge cases", + "AffectedStates": [] + }, + { + "GapType": "Data Validation", + "Endpoint": "api/Bots/platform-info", + "Description": "Endpoint with complex parameters lacks comprehensive data validation tests", + "Severity": "Warning", + "Recommendation": "Add tests for both valid and invalid data scenarios, including edge cases", + "AffectedStates": [] + }, + { + "GapType": "Data Validation", + "Endpoint": "api/Bots/metrics", + "Description": "Endpoint with complex parameters lacks comprehensive data validation tests", + "Severity": "Warning", + "Recommendation": "Add tests for both valid and invalid data scenarios, including edge cases", + "AffectedStates": [] + }, + { + "GapType": "Data Validation", + "Endpoint": "api/Bots/metrics/batch", + "Description": "Endpoint with complex parameters lacks comprehensive data validation tests", + "Severity": "Warning", + "Recommendation": "Add tests for both valid and invalid data scenarios, including edge cases", + "AffectedStates": [] + }, + { + "GapType": "Data Validation", + "Endpoint": "api/Bots/sessions/start", + "Description": "Endpoint with complex parameters lacks comprehensive data validation tests", + "Severity": "Warning", + "Recommendation": "Add tests for both valid and invalid data scenarios, including edge cases", + "AffectedStates": [] + }, + { + "GapType": "Data Validation", + "Endpoint": "api/Bots/sessions/{sessionId}", + "Description": "Endpoint with complex parameters lacks comprehensive data validation tests", + "Severity": "Warning", + "Recommendation": "Add tests for both valid and invalid data scenarios, including edge cases", + "AffectedStates": [] + }, + { + "GapType": "Data Validation", + "Endpoint": "api/Bots/sessions/{sessionId}/end", + "Description": "Endpoint with complex parameters lacks comprehensive data validation tests", + "Severity": "Warning", + "Recommendation": "Add tests for both valid and invalid data scenarios, including edge cases", + "AffectedStates": [] + }, + { + "GapType": "Data Validation", + "Endpoint": "api/Bots/{id}", + "Description": "Endpoint with complex parameters lacks comprehensive data validation tests", + "Severity": "Warning", + "Recommendation": "Add tests for both valid and invalid data scenarios, including edge cases", + "AffectedStates": [] + }, + { + "GapType": "Data Validation", + "Endpoint": "api/Bots/{id}/metrics", + "Description": "Endpoint with complex parameters lacks comprehensive data validation tests", + "Severity": "Warning", + "Recommendation": "Add tests for both valid and invalid data scenarios, including edge cases", + "AffectedStates": [] + }, + { + "GapType": "Data Validation", + "Endpoint": "api/Bots/{id}/metrics/summary", + "Description": "Endpoint with complex parameters lacks comprehensive data validation tests", + "Severity": "Warning", + "Recommendation": "Add tests for both valid and invalid data scenarios, including edge cases", + "AffectedStates": [] + }, + { + "GapType": "Data Validation", + "Endpoint": "api/Bots/{id}/sessions", + "Description": "Endpoint with complex parameters lacks comprehensive data validation tests", + "Severity": "Warning", + "Recommendation": "Add tests for both valid and invalid data scenarios, including edge cases", + "AffectedStates": [] + }, + { + "GapType": "Data Validation", + "Endpoint": "api/Bots/{id}", + "Description": "Endpoint with complex parameters lacks comprehensive data validation tests", + "Severity": "Warning", + "Recommendation": "Add tests for both valid and invalid data scenarios, including edge cases", + "AffectedStates": [] + }, + { + "GapType": "Data Validation", + "Endpoint": "api/Catalog/categories/{id}", + "Description": "Endpoint with complex parameters lacks comprehensive data validation tests", + "Severity": "Warning", + "Recommendation": "Add tests for both valid and invalid data scenarios, including edge cases", + "AffectedStates": [] + }, + { + "GapType": "Data Validation", + "Endpoint": "api/Catalog/products/{id}", + "Description": "Endpoint with complex parameters lacks comprehensive data validation tests", + "Severity": "Warning", + "Recommendation": "Add tests for both valid and invalid data scenarios, including edge cases", + "AffectedStates": [] + }, + { + "GapType": "Data Validation", + "Endpoint": "api/Customers/{id}", + "Description": "Endpoint with complex parameters lacks comprehensive data validation tests", + "Severity": "Warning", + "Recommendation": "Add tests for both valid and invalid data scenarios, including edge cases", + "AffectedStates": [] + }, + { + "GapType": "Data Validation", + "Endpoint": "api/Customers/by-telegram/{telegramUserId}", + "Description": "Endpoint with complex parameters lacks comprehensive data validation tests", + "Severity": "Warning", + "Recommendation": "Add tests for both valid and invalid data scenarios, including edge cases", + "AffectedStates": [] + }, + { + "GapType": "Data Validation", + "Endpoint": "api/Customers/CreateCustomer", + "Description": "Endpoint with complex parameters lacks comprehensive data validation tests", + "Severity": "Warning", + "Recommendation": "Add tests for both valid and invalid data scenarios, including edge cases", + "AffectedStates": [] + }, + { + "GapType": "Data Validation", + "Endpoint": "api/Customers/get-or-create", + "Description": "Endpoint with complex parameters lacks comprehensive data validation tests", + "Severity": "Warning", + "Recommendation": "Add tests for both valid and invalid data scenarios, including edge cases", + "AffectedStates": [] + }, + { + "GapType": "Data Validation", + "Endpoint": "api/Customers/{id}", + "Description": "Endpoint with complex parameters lacks comprehensive data validation tests", + "Severity": "Warning", + "Recommendation": "Add tests for both valid and invalid data scenarios, including edge cases", + "AffectedStates": [] + }, + { + "GapType": "Data Validation", + "Endpoint": "api/Customers/{id}/block", + "Description": "Endpoint with complex parameters lacks comprehensive data validation tests", + "Severity": "Warning", + "Recommendation": "Add tests for both valid and invalid data scenarios, including edge cases", + "AffectedStates": [] + }, + { + "GapType": "Data Validation", + "Endpoint": "api/Customers/{id}/unblock", + "Description": "Endpoint with complex parameters lacks comprehensive data validation tests", + "Severity": "Warning", + "Recommendation": "Add tests for both valid and invalid data scenarios, including edge cases", + "AffectedStates": [] + }, + { + "GapType": "Data Validation", + "Endpoint": "api/Customers/{id}", + "Description": "Endpoint with complex parameters lacks comprehensive data validation tests", + "Severity": "Warning", + "Recommendation": "Add tests for both valid and invalid data scenarios, including edge cases", + "AffectedStates": [] + }, + { + "GapType": "Data Validation", + "Endpoint": "api/Messages/SendMessage", + "Description": "Endpoint with complex parameters lacks comprehensive data validation tests", + "Severity": "Warning", + "Recommendation": "Add tests for both valid and invalid data scenarios, including edge cases", + "AffectedStates": [] + }, + { + "GapType": "Data Validation", + "Endpoint": "api/Messages/{id}", + "Description": "Endpoint with complex parameters lacks comprehensive data validation tests", + "Severity": "Warning", + "Recommendation": "Add tests for both valid and invalid data scenarios, including edge cases", + "AffectedStates": [] + }, + { + "GapType": "Data Validation", + "Endpoint": "api/Messages/customer/{customerId}", + "Description": "Endpoint with complex parameters lacks comprehensive data validation tests", + "Severity": "Warning", + "Recommendation": "Add tests for both valid and invalid data scenarios, including edge cases", + "AffectedStates": [] + }, + { + "GapType": "Data Validation", + "Endpoint": "api/Messages/order/{orderId}", + "Description": "Endpoint with complex parameters lacks comprehensive data validation tests", + "Severity": "Warning", + "Recommendation": "Add tests for both valid and invalid data scenarios, including edge cases", + "AffectedStates": [] + }, + { + "GapType": "Data Validation", + "Endpoint": "api/Messages/{id}/mark-sent", + "Description": "Endpoint with complex parameters lacks comprehensive data validation tests", + "Severity": "Warning", + "Recommendation": "Add tests for both valid and invalid data scenarios, including edge cases", + "AffectedStates": [] + }, + { + "GapType": "Data Validation", + "Endpoint": "api/Messages/{id}/mark-delivered", + "Description": "Endpoint with complex parameters lacks comprehensive data validation tests", + "Severity": "Warning", + "Recommendation": "Add tests for both valid and invalid data scenarios, including edge cases", + "AffectedStates": [] + }, + { + "GapType": "Data Validation", + "Endpoint": "api/Messages/{id}/mark-failed", + "Description": "Endpoint with complex parameters lacks comprehensive data validation tests", + "Severity": "Warning", + "Recommendation": "Add tests for both valid and invalid data scenarios, including edge cases", + "AffectedStates": [] + }, + { + "GapType": "Data Validation", + "Endpoint": "api/Orders/{id}", + "Description": "Endpoint with complex parameters lacks comprehensive data validation tests", + "Severity": "Warning", + "Recommendation": "Add tests for both valid and invalid data scenarios, including edge cases", + "AffectedStates": [] + }, + { + "GapType": "Data Validation", + "Endpoint": "api/Orders/{id}/status", + "Description": "Endpoint with complex parameters lacks comprehensive data validation tests", + "Severity": "Warning", + "Recommendation": "Add tests for both valid and invalid data scenarios, including edge cases", + "AffectedStates": [] + }, + { + "GapType": "Data Validation", + "Endpoint": "api/Orders/by-identity/{identityReference}", + "Description": "Endpoint with complex parameters lacks comprehensive data validation tests", + "Severity": "Warning", + "Recommendation": "Add tests for both valid and invalid data scenarios, including edge cases", + "AffectedStates": [] + }, + { + "GapType": "Data Validation", + "Endpoint": "api/Orders/by-customer/{customerId}", + "Description": "Endpoint with complex parameters lacks comprehensive data validation tests", + "Severity": "Warning", + "Recommendation": "Add tests for both valid and invalid data scenarios, including edge cases", + "AffectedStates": [] + }, + { + "GapType": "Data Validation", + "Endpoint": "api/Orders/by-identity/{identityReference}/{id}", + "Description": "Endpoint with complex parameters lacks comprehensive data validation tests", + "Severity": "Warning", + "Recommendation": "Add tests for both valid and invalid data scenarios, including edge cases", + "AffectedStates": [] + }, + { + "GapType": "Data Validation", + "Endpoint": "api/Orders/CreateOrder", + "Description": "Endpoint with complex parameters lacks comprehensive data validation tests", + "Severity": "Warning", + "Recommendation": "Add tests for both valid and invalid data scenarios, including edge cases", + "AffectedStates": [] + }, + { + "GapType": "Data Validation", + "Endpoint": "api/Orders/{id}/payments", + "Description": "Endpoint with complex parameters lacks comprehensive data validation tests", + "Severity": "Warning", + "Recommendation": "Add tests for both valid and invalid data scenarios, including edge cases", + "AffectedStates": [] + }, + { + "GapType": "Data Validation", + "Endpoint": "api/Orders/{id}/payments", + "Description": "Endpoint with complex parameters lacks comprehensive data validation tests", + "Severity": "Warning", + "Recommendation": "Add tests for both valid and invalid data scenarios, including edge cases", + "AffectedStates": [] + }, + { + "GapType": "Data Validation", + "Endpoint": "api/Orders/payments/{paymentId}/status", + "Description": "Endpoint with complex parameters lacks comprehensive data validation tests", + "Severity": "Warning", + "Recommendation": "Add tests for both valid and invalid data scenarios, including edge cases", + "AffectedStates": [] + }, + { + "GapType": "Data Validation", + "Endpoint": "api/Orders/{id}/cancel", + "Description": "Endpoint with complex parameters lacks comprehensive data validation tests", + "Severity": "Warning", + "Recommendation": "Add tests for both valid and invalid data scenarios, including edge cases", + "AffectedStates": [] + }, + { + "GapType": "Data Validation", + "Endpoint": "api/Orders/payments/webhook", + "Description": "Endpoint with complex parameters lacks comprehensive data validation tests", + "Severity": "Warning", + "Recommendation": "Add tests for both valid and invalid data scenarios, including edge cases", + "AffectedStates": [] + }, + { + "GapType": "Data Validation", + "Endpoint": "api/Account/Login", + "Description": "Endpoint with complex parameters lacks comprehensive data validation tests", + "Severity": "Warning", + "Recommendation": "Add tests for both valid and invalid data scenarios, including edge cases", + "AffectedStates": [] + }, + { + "GapType": "Data Validation", + "Endpoint": "api/Account/Login", + "Description": "Endpoint with complex parameters lacks comprehensive data validation tests", + "Severity": "Warning", + "Recommendation": "Add tests for both valid and invalid data scenarios, including edge cases", + "AffectedStates": [] + }, + { + "GapType": "Data Validation", + "Endpoint": "api/Bots/Details", + "Description": "Endpoint with complex parameters lacks comprehensive data validation tests", + "Severity": "Warning", + "Recommendation": "Add tests for both valid and invalid data scenarios, including edge cases", + "AffectedStates": [] + }, + { + "GapType": "Data Validation", + "Endpoint": "api/Bots/Create", + "Description": "Endpoint with complex parameters lacks comprehensive data validation tests", + "Severity": "Warning", + "Recommendation": "Add tests for both valid and invalid data scenarios, including edge cases", + "AffectedStates": [] + }, + { + "GapType": "Data Validation", + "Endpoint": "api/Bots/Wizard", + "Description": "Endpoint with complex parameters lacks comprehensive data validation tests", + "Severity": "Warning", + "Recommendation": "Add tests for both valid and invalid data scenarios, including edge cases", + "AffectedStates": [] + }, + { + "GapType": "Data Validation", + "Endpoint": "api/Bots/Wizard", + "Description": "Endpoint with complex parameters lacks comprehensive data validation tests", + "Severity": "Warning", + "Recommendation": "Add tests for both valid and invalid data scenarios, including edge cases", + "AffectedStates": [] + }, + { + "GapType": "Data Validation", + "Endpoint": "api/Bots/CompleteWizard", + "Description": "Endpoint with complex parameters lacks comprehensive data validation tests", + "Severity": "Warning", + "Recommendation": "Add tests for both valid and invalid data scenarios, including edge cases", + "AffectedStates": [] + }, + { + "GapType": "Data Validation", + "Endpoint": "api/Bots/Create", + "Description": "Endpoint with complex parameters lacks comprehensive data validation tests", + "Severity": "Warning", + "Recommendation": "Add tests for both valid and invalid data scenarios, including edge cases", + "AffectedStates": [] + }, + { + "GapType": "Data Validation", + "Endpoint": "api/Bots/Edit", + "Description": "Endpoint with complex parameters lacks comprehensive data validation tests", + "Severity": "Warning", + "Recommendation": "Add tests for both valid and invalid data scenarios, including edge cases", + "AffectedStates": [] + }, + { + "GapType": "Data Validation", + "Endpoint": "api/Bots/Edit", + "Description": "Endpoint with complex parameters lacks comprehensive data validation tests", + "Severity": "Warning", + "Recommendation": "Add tests for both valid and invalid data scenarios, including edge cases", + "AffectedStates": [] + }, + { + "GapType": "Data Validation", + "Endpoint": "api/Bots/Metrics", + "Description": "Endpoint with complex parameters lacks comprehensive data validation tests", + "Severity": "Warning", + "Recommendation": "Add tests for both valid and invalid data scenarios, including edge cases", + "AffectedStates": [] + }, + { + "GapType": "Data Validation", + "Endpoint": "api/Bots/Delete", + "Description": "Endpoint with complex parameters lacks comprehensive data validation tests", + "Severity": "Warning", + "Recommendation": "Add tests for both valid and invalid data scenarios, including edge cases", + "AffectedStates": [] + }, + { + "GapType": "Data Validation", + "Endpoint": "api/Bots/Suspend", + "Description": "Endpoint with complex parameters lacks comprehensive data validation tests", + "Severity": "Warning", + "Recommendation": "Add tests for both valid and invalid data scenarios, including edge cases", + "AffectedStates": [] + }, + { + "GapType": "Data Validation", + "Endpoint": "api/Bots/Activate", + "Description": "Endpoint with complex parameters lacks comprehensive data validation tests", + "Severity": "Warning", + "Recommendation": "Add tests for both valid and invalid data scenarios, including edge cases", + "AffectedStates": [] + }, + { + "GapType": "Data Validation", + "Endpoint": "api/Bots/RegenerateKey", + "Description": "Endpoint with complex parameters lacks comprehensive data validation tests", + "Severity": "Warning", + "Recommendation": "Add tests for both valid and invalid data scenarios, including edge cases", + "AffectedStates": [] + }, + { + "GapType": "Data Validation", + "Endpoint": "api/Categories/Create", + "Description": "Endpoint with complex parameters lacks comprehensive data validation tests", + "Severity": "Warning", + "Recommendation": "Add tests for both valid and invalid data scenarios, including edge cases", + "AffectedStates": [] + }, + { + "GapType": "Data Validation", + "Endpoint": "api/Categories/Create", + "Description": "Endpoint with complex parameters lacks comprehensive data validation tests", + "Severity": "Warning", + "Recommendation": "Add tests for both valid and invalid data scenarios, including edge cases", + "AffectedStates": [] + }, + { + "GapType": "Data Validation", + "Endpoint": "api/Categories/Edit", + "Description": "Endpoint with complex parameters lacks comprehensive data validation tests", + "Severity": "Warning", + "Recommendation": "Add tests for both valid and invalid data scenarios, including edge cases", + "AffectedStates": [] + }, + { + "GapType": "Data Validation", + "Endpoint": "api/Categories/Edit", + "Description": "Endpoint with complex parameters lacks comprehensive data validation tests", + "Severity": "Warning", + "Recommendation": "Add tests for both valid and invalid data scenarios, including edge cases", + "AffectedStates": [] + }, + { + "GapType": "Data Validation", + "Endpoint": "api/Categories/Delete", + "Description": "Endpoint with complex parameters lacks comprehensive data validation tests", + "Severity": "Warning", + "Recommendation": "Add tests for both valid and invalid data scenarios, including edge cases", + "AffectedStates": [] + }, + { + "GapType": "Data Validation", + "Endpoint": "api/Messages/Customer", + "Description": "Endpoint with complex parameters lacks comprehensive data validation tests", + "Severity": "Warning", + "Recommendation": "Add tests for both valid and invalid data scenarios, including edge cases", + "AffectedStates": [] + }, + { + "GapType": "Data Validation", + "Endpoint": "api/Messages/Reply", + "Description": "Endpoint with complex parameters lacks comprehensive data validation tests", + "Severity": "Warning", + "Recommendation": "Add tests for both valid and invalid data scenarios, including edge cases", + "AffectedStates": [] + }, + { + "GapType": "Data Validation", + "Endpoint": "api/Orders/Details", + "Description": "Endpoint with complex parameters lacks comprehensive data validation tests", + "Severity": "Warning", + "Recommendation": "Add tests for both valid and invalid data scenarios, including edge cases", + "AffectedStates": [] + }, + { + "GapType": "Data Validation", + "Endpoint": "api/Orders/Create", + "Description": "Endpoint with complex parameters lacks comprehensive data validation tests", + "Severity": "Warning", + "Recommendation": "Add tests for both valid and invalid data scenarios, including edge cases", + "AffectedStates": [] + }, + { + "GapType": "Data Validation", + "Endpoint": "api/Orders/Create", + "Description": "Endpoint with complex parameters lacks comprehensive data validation tests", + "Severity": "Warning", + "Recommendation": "Add tests for both valid and invalid data scenarios, including edge cases", + "AffectedStates": [] + }, + { + "GapType": "Data Validation", + "Endpoint": "api/Orders/Edit", + "Description": "Endpoint with complex parameters lacks comprehensive data validation tests", + "Severity": "Warning", + "Recommendation": "Add tests for both valid and invalid data scenarios, including edge cases", + "AffectedStates": [] + }, + { + "GapType": "Data Validation", + "Endpoint": "api/Orders/Edit", + "Description": "Endpoint with complex parameters lacks comprehensive data validation tests", + "Severity": "Warning", + "Recommendation": "Add tests for both valid and invalid data scenarios, including edge cases", + "AffectedStates": [] + }, + { + "GapType": "Data Validation", + "Endpoint": "api/Orders/UpdateStatus", + "Description": "Endpoint with complex parameters lacks comprehensive data validation tests", + "Severity": "Warning", + "Recommendation": "Add tests for both valid and invalid data scenarios, including edge cases", + "AffectedStates": [] + }, + { + "GapType": "Data Validation", + "Endpoint": "api/Products/Create", + "Description": "Endpoint with complex parameters lacks comprehensive data validation tests", + "Severity": "Warning", + "Recommendation": "Add tests for both valid and invalid data scenarios, including edge cases", + "AffectedStates": [] + }, + { + "GapType": "Data Validation", + "Endpoint": "api/Products/Create", + "Description": "Endpoint with complex parameters lacks comprehensive data validation tests", + "Severity": "Warning", + "Recommendation": "Add tests for both valid and invalid data scenarios, including edge cases", + "AffectedStates": [] + }, + { + "GapType": "Data Validation", + "Endpoint": "api/Products/Edit", + "Description": "Endpoint with complex parameters lacks comprehensive data validation tests", + "Severity": "Warning", + "Recommendation": "Add tests for both valid and invalid data scenarios, including edge cases", + "AffectedStates": [] + }, + { + "GapType": "Data Validation", + "Endpoint": "api/Products/Edit", + "Description": "Endpoint with complex parameters lacks comprehensive data validation tests", + "Severity": "Warning", + "Recommendation": "Add tests for both valid and invalid data scenarios, including edge cases", + "AffectedStates": [] + }, + { + "GapType": "Data Validation", + "Endpoint": "api/Products/UploadPhoto", + "Description": "Endpoint with complex parameters lacks comprehensive data validation tests", + "Severity": "Warning", + "Recommendation": "Add tests for both valid and invalid data scenarios, including edge cases", + "AffectedStates": [] + }, + { + "GapType": "Data Validation", + "Endpoint": "api/Products/DeletePhoto", + "Description": "Endpoint with complex parameters lacks comprehensive data validation tests", + "Severity": "Warning", + "Recommendation": "Add tests for both valid and invalid data scenarios, including edge cases", + "AffectedStates": [] + }, + { + "GapType": "Data Validation", + "Endpoint": "api/Products/Delete", + "Description": "Endpoint with complex parameters lacks comprehensive data validation tests", + "Severity": "Warning", + "Recommendation": "Add tests for both valid and invalid data scenarios, including edge cases", + "AffectedStates": [] + }, + { + "GapType": "Data Validation", + "Endpoint": "api/ShippingRates/Create", + "Description": "Endpoint with complex parameters lacks comprehensive data validation tests", + "Severity": "Warning", + "Recommendation": "Add tests for both valid and invalid data scenarios, including edge cases", + "AffectedStates": [] + }, + { + "GapType": "Data Validation", + "Endpoint": "api/ShippingRates/Create", + "Description": "Endpoint with complex parameters lacks comprehensive data validation tests", + "Severity": "Warning", + "Recommendation": "Add tests for both valid and invalid data scenarios, including edge cases", + "AffectedStates": [] + }, + { + "GapType": "Data Validation", + "Endpoint": "api/ShippingRates/Edit", + "Description": "Endpoint with complex parameters lacks comprehensive data validation tests", + "Severity": "Warning", + "Recommendation": "Add tests for both valid and invalid data scenarios, including edge cases", + "AffectedStates": [] + }, + { + "GapType": "Data Validation", + "Endpoint": "api/ShippingRates/Edit", + "Description": "Endpoint with complex parameters lacks comprehensive data validation tests", + "Severity": "Warning", + "Recommendation": "Add tests for both valid and invalid data scenarios, including edge cases", + "AffectedStates": [] + }, + { + "GapType": "Data Validation", + "Endpoint": "api/ShippingRates/Delete", + "Description": "Endpoint with complex parameters lacks comprehensive data validation tests", + "Severity": "Warning", + "Recommendation": "Add tests for both valid and invalid data scenarios, including edge cases", + "AffectedStates": [] + }, + { + "GapType": "Data Validation", + "Endpoint": "api/Users/Create", + "Description": "Endpoint with complex parameters lacks comprehensive data validation tests", + "Severity": "Warning", + "Recommendation": "Add tests for both valid and invalid data scenarios, including edge cases", + "AffectedStates": [] + }, + { + "GapType": "Data Validation", + "Endpoint": "api/Users/Create", + "Description": "Endpoint with complex parameters lacks comprehensive data validation tests", + "Severity": "Warning", + "Recommendation": "Add tests for both valid and invalid data scenarios, including edge cases", + "AffectedStates": [] + }, + { + "GapType": "Data Validation", + "Endpoint": "api/Users/Edit", + "Description": "Endpoint with complex parameters lacks comprehensive data validation tests", + "Severity": "Warning", + "Recommendation": "Add tests for both valid and invalid data scenarios, including edge cases", + "AffectedStates": [] + }, + { + "GapType": "Data Validation", + "Endpoint": "api/Users/Edit", + "Description": "Endpoint with complex parameters lacks comprehensive data validation tests", + "Severity": "Warning", + "Recommendation": "Add tests for both valid and invalid data scenarios, including edge cases", + "AffectedStates": [] + }, + { + "GapType": "Data Validation", + "Endpoint": "api/Users/Delete", + "Description": "Endpoint with complex parameters lacks comprehensive data validation tests", + "Severity": "Warning", + "Recommendation": "Add tests for both valid and invalid data scenarios, including edge cases", + "AffectedStates": [] + } + ], + "SuggestedTests": [ + { + "TestName": "Auth_Login_ValidData", + "TestType": "Data Validation", + "Endpoint": "api/Auth/login", + "HttpMethod": "POST", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "200 OK", + "TestCode": "[Fact]\npublic async Task Auth_Login_ShouldReturn200_WithValidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var validData = CreateValidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Auth/login\u0022, validData);\n\n // Assert\n Assert.Equal(HttpStatusCode.OK, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Auth_Login_InvalidData", + "TestType": "Data Validation", + "Endpoint": "api/Auth/login", + "HttpMethod": "POST", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "400 Bad Request", + "TestCode": "[Fact]\npublic async Task Auth_Login_ShouldReturn400_WithInvalidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var invalidData = CreateInvalidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Auth/login\u0022, invalidData);\n\n // Assert\n Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "BotMessages_MarkMessageAsSent_ValidData", + "TestType": "Data Validation", + "Endpoint": "api/bot/messages/{id}/mark-sent", + "HttpMethod": "POST", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "200 OK", + "TestCode": "[Fact]\npublic async Task BotMessages_MarkMessageAsSent_ShouldReturn200_WithValidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var validData = CreateValidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/bot/messages/{id}/mark-sent\u0022, validData);\n\n // Assert\n Assert.Equal(HttpStatusCode.OK, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "BotMessages_MarkMessageAsSent_InvalidData", + "TestType": "Data Validation", + "Endpoint": "api/bot/messages/{id}/mark-sent", + "HttpMethod": "POST", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "400 Bad Request", + "TestCode": "[Fact]\npublic async Task BotMessages_MarkMessageAsSent_ShouldReturn400_WithInvalidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var invalidData = CreateInvalidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/bot/messages/{id}/mark-sent\u0022, invalidData);\n\n // Assert\n Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "BotMessages_MarkMessageAsFailed_ValidData", + "TestType": "Data Validation", + "Endpoint": "api/bot/messages/{id}/mark-failed", + "HttpMethod": "POST", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "200 OK", + "TestCode": "[Fact]\npublic async Task BotMessages_MarkMessageAsFailed_ShouldReturn200_WithValidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var validData = CreateValidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/bot/messages/{id}/mark-failed\u0022, validData);\n\n // Assert\n Assert.Equal(HttpStatusCode.OK, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "BotMessages_MarkMessageAsFailed_InvalidData", + "TestType": "Data Validation", + "Endpoint": "api/bot/messages/{id}/mark-failed", + "HttpMethod": "POST", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "400 Bad Request", + "TestCode": "[Fact]\npublic async Task BotMessages_MarkMessageAsFailed_ShouldReturn400_WithInvalidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var invalidData = CreateInvalidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/bot/messages/{id}/mark-failed\u0022, invalidData);\n\n // Assert\n Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "BotMessages_CreateTestMessage_ValidData", + "TestType": "Data Validation", + "Endpoint": "api/bot/messages/test-create", + "HttpMethod": "POST", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "200 OK", + "TestCode": "[Fact]\npublic async Task BotMessages_CreateTestMessage_ShouldReturn200_WithValidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var validData = CreateValidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/bot/messages/test-create\u0022, validData);\n\n // Assert\n Assert.Equal(HttpStatusCode.OK, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "BotMessages_CreateTestMessage_InvalidData", + "TestType": "Data Validation", + "Endpoint": "api/bot/messages/test-create", + "HttpMethod": "POST", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "400 Bad Request", + "TestCode": "[Fact]\npublic async Task BotMessages_CreateTestMessage_ShouldReturn400_WithInvalidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var invalidData = CreateInvalidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/bot/messages/test-create\u0022, invalidData);\n\n // Assert\n Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "BotMessages_CreateCustomerMessage_ValidData", + "TestType": "Data Validation", + "Endpoint": "api/bot/messages/customer-create", + "HttpMethod": "POST", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "200 OK", + "TestCode": "[Fact]\npublic async Task BotMessages_CreateCustomerMessage_ShouldReturn200_WithValidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var validData = CreateValidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/bot/messages/customer-create\u0022, validData);\n\n // Assert\n Assert.Equal(HttpStatusCode.OK, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "BotMessages_CreateCustomerMessage_InvalidData", + "TestType": "Data Validation", + "Endpoint": "api/bot/messages/customer-create", + "HttpMethod": "POST", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "400 Bad Request", + "TestCode": "[Fact]\npublic async Task BotMessages_CreateCustomerMessage_ShouldReturn400_WithInvalidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var invalidData = CreateInvalidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/bot/messages/customer-create\u0022, invalidData);\n\n // Assert\n Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "BotMessages_GetCustomerMessages_ValidData", + "TestType": "Data Validation", + "Endpoint": "api/bot/messages/customer/{customerId}", + "HttpMethod": "GET", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "200 OK", + "TestCode": "[Fact]\npublic async Task BotMessages_GetCustomerMessages_ShouldReturn200_WithValidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var validData = CreateValidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/bot/messages/customer/{customerId}\u0022, validData);\n\n // Assert\n Assert.Equal(HttpStatusCode.OK, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "BotMessages_GetCustomerMessages_InvalidData", + "TestType": "Data Validation", + "Endpoint": "api/bot/messages/customer/{customerId}", + "HttpMethod": "GET", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "400 Bad Request", + "TestCode": "[Fact]\npublic async Task BotMessages_GetCustomerMessages_ShouldReturn400_WithInvalidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var invalidData = CreateInvalidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/bot/messages/customer/{customerId}\u0022, invalidData);\n\n // Assert\n Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Bots_RegisterBot_ValidData", + "TestType": "Data Validation", + "Endpoint": "api/Bots/register", + "HttpMethod": "POST", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "200 OK", + "TestCode": "[Fact]\npublic async Task Bots_RegisterBot_ShouldReturn200_WithValidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var validData = CreateValidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Bots/register\u0022, validData);\n\n // Assert\n Assert.Equal(HttpStatusCode.OK, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Bots_RegisterBot_InvalidData", + "TestType": "Data Validation", + "Endpoint": "api/Bots/register", + "HttpMethod": "POST", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "400 Bad Request", + "TestCode": "[Fact]\npublic async Task Bots_RegisterBot_ShouldReturn400_WithInvalidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var invalidData = CreateInvalidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Bots/register\u0022, invalidData);\n\n // Assert\n Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Bots_AuthenticateBot_ValidData", + "TestType": "Data Validation", + "Endpoint": "api/Bots/authenticate", + "HttpMethod": "POST", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "200 OK", + "TestCode": "[Fact]\npublic async Task Bots_AuthenticateBot_ShouldReturn200_WithValidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var validData = CreateValidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Bots/authenticate\u0022, validData);\n\n // Assert\n Assert.Equal(HttpStatusCode.OK, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Bots_AuthenticateBot_InvalidData", + "TestType": "Data Validation", + "Endpoint": "api/Bots/authenticate", + "HttpMethod": "POST", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "400 Bad Request", + "TestCode": "[Fact]\npublic async Task Bots_AuthenticateBot_ShouldReturn400_WithInvalidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var invalidData = CreateInvalidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Bots/authenticate\u0022, invalidData);\n\n // Assert\n Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Bots_UpdateBotSettings_ValidData", + "TestType": "Data Validation", + "Endpoint": "api/Bots/settings", + "HttpMethod": "PUT", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "200 OK", + "TestCode": "[Fact]\npublic async Task Bots_UpdateBotSettings_ShouldReturn200_WithValidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var validData = CreateValidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Bots/settings\u0022, validData);\n\n // Assert\n Assert.Equal(HttpStatusCode.OK, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Bots_UpdateBotSettings_InvalidData", + "TestType": "Data Validation", + "Endpoint": "api/Bots/settings", + "HttpMethod": "PUT", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "400 Bad Request", + "TestCode": "[Fact]\npublic async Task Bots_UpdateBotSettings_ShouldReturn400_WithInvalidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var invalidData = CreateInvalidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Bots/settings\u0022, invalidData);\n\n // Assert\n Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Bots_RecordHeartbeat_ValidData", + "TestType": "Data Validation", + "Endpoint": "api/Bots/heartbeat", + "HttpMethod": "POST", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "200 OK", + "TestCode": "[Fact]\npublic async Task Bots_RecordHeartbeat_ShouldReturn200_WithValidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var validData = CreateValidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Bots/heartbeat\u0022, validData);\n\n // Assert\n Assert.Equal(HttpStatusCode.OK, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Bots_RecordHeartbeat_InvalidData", + "TestType": "Data Validation", + "Endpoint": "api/Bots/heartbeat", + "HttpMethod": "POST", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "400 Bad Request", + "TestCode": "[Fact]\npublic async Task Bots_RecordHeartbeat_ShouldReturn400_WithInvalidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var invalidData = CreateInvalidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Bots/heartbeat\u0022, invalidData);\n\n // Assert\n Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Bots_UpdatePlatformInfo_ValidData", + "TestType": "Data Validation", + "Endpoint": "api/Bots/platform-info", + "HttpMethod": "PUT", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "200 OK", + "TestCode": "[Fact]\npublic async Task Bots_UpdatePlatformInfo_ShouldReturn200_WithValidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var validData = CreateValidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Bots/platform-info\u0022, validData);\n\n // Assert\n Assert.Equal(HttpStatusCode.OK, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Bots_UpdatePlatformInfo_InvalidData", + "TestType": "Data Validation", + "Endpoint": "api/Bots/platform-info", + "HttpMethod": "PUT", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "400 Bad Request", + "TestCode": "[Fact]\npublic async Task Bots_UpdatePlatformInfo_ShouldReturn400_WithInvalidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var invalidData = CreateInvalidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Bots/platform-info\u0022, invalidData);\n\n // Assert\n Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Bots_RecordMetric_ValidData", + "TestType": "Data Validation", + "Endpoint": "api/Bots/metrics", + "HttpMethod": "POST", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "200 OK", + "TestCode": "[Fact]\npublic async Task Bots_RecordMetric_ShouldReturn200_WithValidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var validData = CreateValidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Bots/metrics\u0022, validData);\n\n // Assert\n Assert.Equal(HttpStatusCode.OK, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Bots_RecordMetric_InvalidData", + "TestType": "Data Validation", + "Endpoint": "api/Bots/metrics", + "HttpMethod": "POST", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "400 Bad Request", + "TestCode": "[Fact]\npublic async Task Bots_RecordMetric_ShouldReturn400_WithInvalidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var invalidData = CreateInvalidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Bots/metrics\u0022, invalidData);\n\n // Assert\n Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Bots_RecordMetricsBatch_ValidData", + "TestType": "Data Validation", + "Endpoint": "api/Bots/metrics/batch", + "HttpMethod": "POST", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "200 OK", + "TestCode": "[Fact]\npublic async Task Bots_RecordMetricsBatch_ShouldReturn200_WithValidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var validData = CreateValidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Bots/metrics/batch\u0022, validData);\n\n // Assert\n Assert.Equal(HttpStatusCode.OK, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Bots_RecordMetricsBatch_InvalidData", + "TestType": "Data Validation", + "Endpoint": "api/Bots/metrics/batch", + "HttpMethod": "POST", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "400 Bad Request", + "TestCode": "[Fact]\npublic async Task Bots_RecordMetricsBatch_ShouldReturn400_WithInvalidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var invalidData = CreateInvalidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Bots/metrics/batch\u0022, invalidData);\n\n // Assert\n Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Bots_StartSession_ValidData", + "TestType": "Data Validation", + "Endpoint": "api/Bots/sessions/start", + "HttpMethod": "POST", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "200 OK", + "TestCode": "[Fact]\npublic async Task Bots_StartSession_ShouldReturn200_WithValidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var validData = CreateValidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Bots/sessions/start\u0022, validData);\n\n // Assert\n Assert.Equal(HttpStatusCode.OK, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Bots_StartSession_InvalidData", + "TestType": "Data Validation", + "Endpoint": "api/Bots/sessions/start", + "HttpMethod": "POST", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "400 Bad Request", + "TestCode": "[Fact]\npublic async Task Bots_StartSession_ShouldReturn400_WithInvalidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var invalidData = CreateInvalidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Bots/sessions/start\u0022, invalidData);\n\n // Assert\n Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Bots_UpdateSession_ValidData", + "TestType": "Data Validation", + "Endpoint": "api/Bots/sessions/{sessionId}", + "HttpMethod": "PUT", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "200 OK", + "TestCode": "[Fact]\npublic async Task Bots_UpdateSession_ShouldReturn200_WithValidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var validData = CreateValidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Bots/sessions/{sessionId}\u0022, validData);\n\n // Assert\n Assert.Equal(HttpStatusCode.OK, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Bots_UpdateSession_InvalidData", + "TestType": "Data Validation", + "Endpoint": "api/Bots/sessions/{sessionId}", + "HttpMethod": "PUT", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "400 Bad Request", + "TestCode": "[Fact]\npublic async Task Bots_UpdateSession_ShouldReturn400_WithInvalidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var invalidData = CreateInvalidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Bots/sessions/{sessionId}\u0022, invalidData);\n\n // Assert\n Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Bots_EndSession_ValidData", + "TestType": "Data Validation", + "Endpoint": "api/Bots/sessions/{sessionId}/end", + "HttpMethod": "POST", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "200 OK", + "TestCode": "[Fact]\npublic async Task Bots_EndSession_ShouldReturn200_WithValidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var validData = CreateValidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Bots/sessions/{sessionId}/end\u0022, validData);\n\n // Assert\n Assert.Equal(HttpStatusCode.OK, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Bots_EndSession_InvalidData", + "TestType": "Data Validation", + "Endpoint": "api/Bots/sessions/{sessionId}/end", + "HttpMethod": "POST", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "400 Bad Request", + "TestCode": "[Fact]\npublic async Task Bots_EndSession_ShouldReturn400_WithInvalidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var invalidData = CreateInvalidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Bots/sessions/{sessionId}/end\u0022, invalidData);\n\n // Assert\n Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Bots_GetAllBots_UnauthorizedAccess", + "TestType": "Authorization", + "Endpoint": "api/Bots/GetAllBots", + "HttpMethod": "GET", + "AuthenticationState": "Anonymous", + "ExpectedOutcome": "401 Unauthorized", + "TestCode": "[Fact]\npublic async Task Bots_GetAllBots_ShouldReturn401_WhenNotAuthenticated()\n{\n // Arrange\n var client = _factory.CreateClient();\n\n // Act\n var response = await client.GetAsync(\u0022api/Bots/GetAllBots\u0022);\n\n // Assert\n Assert.Equal(HttpStatusCode.Unauthorized, response.StatusCode);\n}", + "TestData": [], + "Priority": "High" + }, + { + "TestName": "Bots_GetAllBots_RequiresRole_Admin", + "TestType": "Authorization", + "Endpoint": "api/Bots/GetAllBots", + "HttpMethod": "GET", + "AuthenticationState": "Authenticated_Admin", + "ExpectedOutcome": "200 OK", + "TestCode": "[Fact]\npublic async Task Bots_GetAllBots_ShouldReturn200_WhenUserAdmin()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client, \u0022Admin\u0022);\n\n // Act\n var response = await client.GetAsync(\u0022api/Bots/GetAllBots\u0022);\n\n // Assert\n Assert.Equal(HttpStatusCode.OK, response.StatusCode);\n}", + "TestData": [], + "Priority": "High" + }, + { + "TestName": "Bots_GetBot_UnauthorizedAccess", + "TestType": "Authorization", + "Endpoint": "api/Bots/{id}", + "HttpMethod": "GET", + "AuthenticationState": "Anonymous", + "ExpectedOutcome": "401 Unauthorized", + "TestCode": "[Fact]\npublic async Task Bots_GetBot_ShouldReturn401_WhenNotAuthenticated()\n{\n // Arrange\n var client = _factory.CreateClient();\n\n // Act\n var response = await client.GetAsync(\u0022api/Bots/{id}\u0022);\n\n // Assert\n Assert.Equal(HttpStatusCode.Unauthorized, response.StatusCode);\n}", + "TestData": [], + "Priority": "High" + }, + { + "TestName": "Bots_GetBot_RequiresRole_Admin", + "TestType": "Authorization", + "Endpoint": "api/Bots/{id}", + "HttpMethod": "GET", + "AuthenticationState": "Authenticated_Admin", + "ExpectedOutcome": "200 OK", + "TestCode": "[Fact]\npublic async Task Bots_GetBot_ShouldReturn200_WhenUserAdmin()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client, \u0022Admin\u0022);\n\n // Act\n var response = await client.GetAsync(\u0022api/Bots/{id}\u0022);\n\n // Assert\n Assert.Equal(HttpStatusCode.OK, response.StatusCode);\n}", + "TestData": [], + "Priority": "High" + }, + { + "TestName": "Bots_GetBot_ValidData", + "TestType": "Data Validation", + "Endpoint": "api/Bots/{id}", + "HttpMethod": "GET", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "200 OK", + "TestCode": "[Fact]\npublic async Task Bots_GetBot_ShouldReturn200_WithValidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var validData = CreateValidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Bots/{id}\u0022, validData);\n\n // Assert\n Assert.Equal(HttpStatusCode.OK, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Bots_GetBot_InvalidData", + "TestType": "Data Validation", + "Endpoint": "api/Bots/{id}", + "HttpMethod": "GET", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "400 Bad Request", + "TestCode": "[Fact]\npublic async Task Bots_GetBot_ShouldReturn400_WithInvalidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var invalidData = CreateInvalidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Bots/{id}\u0022, invalidData);\n\n // Assert\n Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Bots_GetBotMetrics_UnauthorizedAccess", + "TestType": "Authorization", + "Endpoint": "api/Bots/{id}/metrics", + "HttpMethod": "GET", + "AuthenticationState": "Anonymous", + "ExpectedOutcome": "401 Unauthorized", + "TestCode": "[Fact]\npublic async Task Bots_GetBotMetrics_ShouldReturn401_WhenNotAuthenticated()\n{\n // Arrange\n var client = _factory.CreateClient();\n\n // Act\n var response = await client.GetAsync(\u0022api/Bots/{id}/metrics\u0022);\n\n // Assert\n Assert.Equal(HttpStatusCode.Unauthorized, response.StatusCode);\n}", + "TestData": [], + "Priority": "High" + }, + { + "TestName": "Bots_GetBotMetrics_RequiresRole_Admin", + "TestType": "Authorization", + "Endpoint": "api/Bots/{id}/metrics", + "HttpMethod": "GET", + "AuthenticationState": "Authenticated_Admin", + "ExpectedOutcome": "200 OK", + "TestCode": "[Fact]\npublic async Task Bots_GetBotMetrics_ShouldReturn200_WhenUserAdmin()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client, \u0022Admin\u0022);\n\n // Act\n var response = await client.GetAsync(\u0022api/Bots/{id}/metrics\u0022);\n\n // Assert\n Assert.Equal(HttpStatusCode.OK, response.StatusCode);\n}", + "TestData": [], + "Priority": "High" + }, + { + "TestName": "Bots_GetBotMetrics_ValidData", + "TestType": "Data Validation", + "Endpoint": "api/Bots/{id}/metrics", + "HttpMethod": "GET", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "200 OK", + "TestCode": "[Fact]\npublic async Task Bots_GetBotMetrics_ShouldReturn200_WithValidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var validData = CreateValidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Bots/{id}/metrics\u0022, validData);\n\n // Assert\n Assert.Equal(HttpStatusCode.OK, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Bots_GetBotMetrics_InvalidData", + "TestType": "Data Validation", + "Endpoint": "api/Bots/{id}/metrics", + "HttpMethod": "GET", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "400 Bad Request", + "TestCode": "[Fact]\npublic async Task Bots_GetBotMetrics_ShouldReturn400_WithInvalidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var invalidData = CreateInvalidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Bots/{id}/metrics\u0022, invalidData);\n\n // Assert\n Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Bots_GetMetricsSummary_UnauthorizedAccess", + "TestType": "Authorization", + "Endpoint": "api/Bots/{id}/metrics/summary", + "HttpMethod": "GET", + "AuthenticationState": "Anonymous", + "ExpectedOutcome": "401 Unauthorized", + "TestCode": "[Fact]\npublic async Task Bots_GetMetricsSummary_ShouldReturn401_WhenNotAuthenticated()\n{\n // Arrange\n var client = _factory.CreateClient();\n\n // Act\n var response = await client.GetAsync(\u0022api/Bots/{id}/metrics/summary\u0022);\n\n // Assert\n Assert.Equal(HttpStatusCode.Unauthorized, response.StatusCode);\n}", + "TestData": [], + "Priority": "High" + }, + { + "TestName": "Bots_GetMetricsSummary_RequiresRole_Admin", + "TestType": "Authorization", + "Endpoint": "api/Bots/{id}/metrics/summary", + "HttpMethod": "GET", + "AuthenticationState": "Authenticated_Admin", + "ExpectedOutcome": "200 OK", + "TestCode": "[Fact]\npublic async Task Bots_GetMetricsSummary_ShouldReturn200_WhenUserAdmin()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client, \u0022Admin\u0022);\n\n // Act\n var response = await client.GetAsync(\u0022api/Bots/{id}/metrics/summary\u0022);\n\n // Assert\n Assert.Equal(HttpStatusCode.OK, response.StatusCode);\n}", + "TestData": [], + "Priority": "High" + }, + { + "TestName": "Bots_GetMetricsSummary_ValidData", + "TestType": "Data Validation", + "Endpoint": "api/Bots/{id}/metrics/summary", + "HttpMethod": "GET", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "200 OK", + "TestCode": "[Fact]\npublic async Task Bots_GetMetricsSummary_ShouldReturn200_WithValidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var validData = CreateValidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Bots/{id}/metrics/summary\u0022, validData);\n\n // Assert\n Assert.Equal(HttpStatusCode.OK, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Bots_GetMetricsSummary_InvalidData", + "TestType": "Data Validation", + "Endpoint": "api/Bots/{id}/metrics/summary", + "HttpMethod": "GET", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "400 Bad Request", + "TestCode": "[Fact]\npublic async Task Bots_GetMetricsSummary_ShouldReturn400_WithInvalidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var invalidData = CreateInvalidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Bots/{id}/metrics/summary\u0022, invalidData);\n\n // Assert\n Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Bots_GetBotSessions_UnauthorizedAccess", + "TestType": "Authorization", + "Endpoint": "api/Bots/{id}/sessions", + "HttpMethod": "GET", + "AuthenticationState": "Anonymous", + "ExpectedOutcome": "401 Unauthorized", + "TestCode": "[Fact]\npublic async Task Bots_GetBotSessions_ShouldReturn401_WhenNotAuthenticated()\n{\n // Arrange\n var client = _factory.CreateClient();\n\n // Act\n var response = await client.GetAsync(\u0022api/Bots/{id}/sessions\u0022);\n\n // Assert\n Assert.Equal(HttpStatusCode.Unauthorized, response.StatusCode);\n}", + "TestData": [], + "Priority": "High" + }, + { + "TestName": "Bots_GetBotSessions_RequiresRole_Admin", + "TestType": "Authorization", + "Endpoint": "api/Bots/{id}/sessions", + "HttpMethod": "GET", + "AuthenticationState": "Authenticated_Admin", + "ExpectedOutcome": "200 OK", + "TestCode": "[Fact]\npublic async Task Bots_GetBotSessions_ShouldReturn200_WhenUserAdmin()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client, \u0022Admin\u0022);\n\n // Act\n var response = await client.GetAsync(\u0022api/Bots/{id}/sessions\u0022);\n\n // Assert\n Assert.Equal(HttpStatusCode.OK, response.StatusCode);\n}", + "TestData": [], + "Priority": "High" + }, + { + "TestName": "Bots_GetBotSessions_ValidData", + "TestType": "Data Validation", + "Endpoint": "api/Bots/{id}/sessions", + "HttpMethod": "GET", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "200 OK", + "TestCode": "[Fact]\npublic async Task Bots_GetBotSessions_ShouldReturn200_WithValidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var validData = CreateValidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Bots/{id}/sessions\u0022, validData);\n\n // Assert\n Assert.Equal(HttpStatusCode.OK, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Bots_GetBotSessions_InvalidData", + "TestType": "Data Validation", + "Endpoint": "api/Bots/{id}/sessions", + "HttpMethod": "GET", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "400 Bad Request", + "TestCode": "[Fact]\npublic async Task Bots_GetBotSessions_ShouldReturn400_WithInvalidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var invalidData = CreateInvalidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Bots/{id}/sessions\u0022, invalidData);\n\n // Assert\n Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Bots_DeleteBot_UnauthorizedAccess", + "TestType": "Authorization", + "Endpoint": "api/Bots/{id}", + "HttpMethod": "DELETE", + "AuthenticationState": "Anonymous", + "ExpectedOutcome": "401 Unauthorized", + "TestCode": "[Fact]\npublic async Task Bots_DeleteBot_ShouldReturn401_WhenNotAuthenticated()\n{\n // Arrange\n var client = _factory.CreateClient();\n\n // Act\n var response = await client.GetAsync(\u0022api/Bots/{id}\u0022);\n\n // Assert\n Assert.Equal(HttpStatusCode.Unauthorized, response.StatusCode);\n}", + "TestData": [], + "Priority": "High" + }, + { + "TestName": "Bots_DeleteBot_RequiresRole_Admin", + "TestType": "Authorization", + "Endpoint": "api/Bots/{id}", + "HttpMethod": "DELETE", + "AuthenticationState": "Authenticated_Admin", + "ExpectedOutcome": "200 OK", + "TestCode": "[Fact]\npublic async Task Bots_DeleteBot_ShouldReturn200_WhenUserAdmin()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client, \u0022Admin\u0022);\n\n // Act\n var response = await client.GetAsync(\u0022api/Bots/{id}\u0022);\n\n // Assert\n Assert.Equal(HttpStatusCode.OK, response.StatusCode);\n}", + "TestData": [], + "Priority": "High" + }, + { + "TestName": "Bots_DeleteBot_ValidData", + "TestType": "Data Validation", + "Endpoint": "api/Bots/{id}", + "HttpMethod": "DELETE", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "200 OK", + "TestCode": "[Fact]\npublic async Task Bots_DeleteBot_ShouldReturn200_WithValidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var validData = CreateValidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Bots/{id}\u0022, validData);\n\n // Assert\n Assert.Equal(HttpStatusCode.OK, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Bots_DeleteBot_InvalidData", + "TestType": "Data Validation", + "Endpoint": "api/Bots/{id}", + "HttpMethod": "DELETE", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "400 Bad Request", + "TestCode": "[Fact]\npublic async Task Bots_DeleteBot_ShouldReturn400_WithInvalidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var invalidData = CreateInvalidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Bots/{id}\u0022, invalidData);\n\n // Assert\n Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Catalog_GetCategory_ValidData", + "TestType": "Data Validation", + "Endpoint": "api/Catalog/categories/{id}", + "HttpMethod": "GET", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "200 OK", + "TestCode": "[Fact]\npublic async Task Catalog_GetCategory_ShouldReturn200_WithValidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var validData = CreateValidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Catalog/categories/{id}\u0022, validData);\n\n // Assert\n Assert.Equal(HttpStatusCode.OK, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Catalog_GetCategory_InvalidData", + "TestType": "Data Validation", + "Endpoint": "api/Catalog/categories/{id}", + "HttpMethod": "GET", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "400 Bad Request", + "TestCode": "[Fact]\npublic async Task Catalog_GetCategory_ShouldReturn400_WithInvalidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var invalidData = CreateInvalidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Catalog/categories/{id}\u0022, invalidData);\n\n // Assert\n Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Catalog_GetProduct_ValidData", + "TestType": "Data Validation", + "Endpoint": "api/Catalog/products/{id}", + "HttpMethod": "GET", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "200 OK", + "TestCode": "[Fact]\npublic async Task Catalog_GetProduct_ShouldReturn200_WithValidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var validData = CreateValidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Catalog/products/{id}\u0022, validData);\n\n // Assert\n Assert.Equal(HttpStatusCode.OK, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Catalog_GetProduct_InvalidData", + "TestType": "Data Validation", + "Endpoint": "api/Catalog/products/{id}", + "HttpMethod": "GET", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "400 Bad Request", + "TestCode": "[Fact]\npublic async Task Catalog_GetProduct_ShouldReturn400_WithInvalidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var invalidData = CreateInvalidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Catalog/products/{id}\u0022, invalidData);\n\n // Assert\n Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Customers_GetCustomer_ValidData", + "TestType": "Data Validation", + "Endpoint": "api/Customers/{id}", + "HttpMethod": "GET", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "200 OK", + "TestCode": "[Fact]\npublic async Task Customers_GetCustomer_ShouldReturn200_WithValidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var validData = CreateValidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Customers/{id}\u0022, validData);\n\n // Assert\n Assert.Equal(HttpStatusCode.OK, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Customers_GetCustomer_InvalidData", + "TestType": "Data Validation", + "Endpoint": "api/Customers/{id}", + "HttpMethod": "GET", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "400 Bad Request", + "TestCode": "[Fact]\npublic async Task Customers_GetCustomer_ShouldReturn400_WithInvalidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var invalidData = CreateInvalidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Customers/{id}\u0022, invalidData);\n\n // Assert\n Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Customers_GetCustomerByTelegramId_ValidData", + "TestType": "Data Validation", + "Endpoint": "api/Customers/by-telegram/{telegramUserId}", + "HttpMethod": "GET", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "200 OK", + "TestCode": "[Fact]\npublic async Task Customers_GetCustomerByTelegramId_ShouldReturn200_WithValidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var validData = CreateValidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Customers/by-telegram/{telegramUserId}\u0022, validData);\n\n // Assert\n Assert.Equal(HttpStatusCode.OK, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Customers_GetCustomerByTelegramId_InvalidData", + "TestType": "Data Validation", + "Endpoint": "api/Customers/by-telegram/{telegramUserId}", + "HttpMethod": "GET", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "400 Bad Request", + "TestCode": "[Fact]\npublic async Task Customers_GetCustomerByTelegramId_ShouldReturn400_WithInvalidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var invalidData = CreateInvalidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Customers/by-telegram/{telegramUserId}\u0022, invalidData);\n\n // Assert\n Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Customers_CreateCustomer_ValidData", + "TestType": "Data Validation", + "Endpoint": "api/Customers/CreateCustomer", + "HttpMethod": "POST", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "200 OK", + "TestCode": "[Fact]\npublic async Task Customers_CreateCustomer_ShouldReturn200_WithValidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var validData = CreateValidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Customers/CreateCustomer\u0022, validData);\n\n // Assert\n Assert.Equal(HttpStatusCode.OK, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Customers_CreateCustomer_InvalidData", + "TestType": "Data Validation", + "Endpoint": "api/Customers/CreateCustomer", + "HttpMethod": "POST", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "400 Bad Request", + "TestCode": "[Fact]\npublic async Task Customers_CreateCustomer_ShouldReturn400_WithInvalidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var invalidData = CreateInvalidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Customers/CreateCustomer\u0022, invalidData);\n\n // Assert\n Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Customers_GetOrCreateCustomer_ValidData", + "TestType": "Data Validation", + "Endpoint": "api/Customers/get-or-create", + "HttpMethod": "POST", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "200 OK", + "TestCode": "[Fact]\npublic async Task Customers_GetOrCreateCustomer_ShouldReturn200_WithValidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var validData = CreateValidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Customers/get-or-create\u0022, validData);\n\n // Assert\n Assert.Equal(HttpStatusCode.OK, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Customers_GetOrCreateCustomer_InvalidData", + "TestType": "Data Validation", + "Endpoint": "api/Customers/get-or-create", + "HttpMethod": "POST", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "400 Bad Request", + "TestCode": "[Fact]\npublic async Task Customers_GetOrCreateCustomer_ShouldReturn400_WithInvalidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var invalidData = CreateInvalidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Customers/get-or-create\u0022, invalidData);\n\n // Assert\n Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Customers_GetOrCreateCustomer_StateDependent", + "TestType": "State Dependent", + "Endpoint": "api/Customers/get-or-create", + "HttpMethod": "POST", + "AuthenticationState": "Multiple", + "ExpectedOutcome": "Different Content Based on State", + "TestCode": "[Theory]\n[InlineData(\u0022Anonymous\u0022)]\n[InlineData(\u0022Authenticated\u0022)]\npublic async Task Customers_GetOrCreateCustomer_ShouldShowDifferentContent_BasedOnAuthState(string authState)\n{\n // Arrange\n var client = _factory.CreateClient();\n if (authState == \u0022Authenticated\u0022)\n await AuthenticateAsync(client);\n\n // Act\n var response = await client.GetAsync(\u0022api/Customers/get-or-create\u0022);\n var content = await response.Content.ReadAsStringAsync();\n\n // Assert\n Assert.Equal(HttpStatusCode.OK, response.StatusCode);\n // Add specific content assertions based on authentication state\n if (authState == \u0022Authenticated\u0022)\n {\n Assert.Contains(\u0022authenticated-content\u0022, content);\n }\n else\n {\n Assert.Contains(\u0022anonymous-content\u0022, content);\n }\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Customers_UpdateCustomer_ValidData", + "TestType": "Data Validation", + "Endpoint": "api/Customers/{id}", + "HttpMethod": "PUT", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "200 OK", + "TestCode": "[Fact]\npublic async Task Customers_UpdateCustomer_ShouldReturn200_WithValidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var validData = CreateValidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Customers/{id}\u0022, validData);\n\n // Assert\n Assert.Equal(HttpStatusCode.OK, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Customers_UpdateCustomer_InvalidData", + "TestType": "Data Validation", + "Endpoint": "api/Customers/{id}", + "HttpMethod": "PUT", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "400 Bad Request", + "TestCode": "[Fact]\npublic async Task Customers_UpdateCustomer_ShouldReturn400_WithInvalidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var invalidData = CreateInvalidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Customers/{id}\u0022, invalidData);\n\n // Assert\n Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Customers_BlockCustomer_ValidData", + "TestType": "Data Validation", + "Endpoint": "api/Customers/{id}/block", + "HttpMethod": "POST", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "200 OK", + "TestCode": "[Fact]\npublic async Task Customers_BlockCustomer_ShouldReturn200_WithValidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var validData = CreateValidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Customers/{id}/block\u0022, validData);\n\n // Assert\n Assert.Equal(HttpStatusCode.OK, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Customers_BlockCustomer_InvalidData", + "TestType": "Data Validation", + "Endpoint": "api/Customers/{id}/block", + "HttpMethod": "POST", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "400 Bad Request", + "TestCode": "[Fact]\npublic async Task Customers_BlockCustomer_ShouldReturn400_WithInvalidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var invalidData = CreateInvalidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Customers/{id}/block\u0022, invalidData);\n\n // Assert\n Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Customers_UnblockCustomer_ValidData", + "TestType": "Data Validation", + "Endpoint": "api/Customers/{id}/unblock", + "HttpMethod": "POST", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "200 OK", + "TestCode": "[Fact]\npublic async Task Customers_UnblockCustomer_ShouldReturn200_WithValidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var validData = CreateValidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Customers/{id}/unblock\u0022, validData);\n\n // Assert\n Assert.Equal(HttpStatusCode.OK, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Customers_UnblockCustomer_InvalidData", + "TestType": "Data Validation", + "Endpoint": "api/Customers/{id}/unblock", + "HttpMethod": "POST", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "400 Bad Request", + "TestCode": "[Fact]\npublic async Task Customers_UnblockCustomer_ShouldReturn400_WithInvalidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var invalidData = CreateInvalidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Customers/{id}/unblock\u0022, invalidData);\n\n // Assert\n Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Customers_DeleteCustomer_ValidData", + "TestType": "Data Validation", + "Endpoint": "api/Customers/{id}", + "HttpMethod": "DELETE", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "200 OK", + "TestCode": "[Fact]\npublic async Task Customers_DeleteCustomer_ShouldReturn200_WithValidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var validData = CreateValidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Customers/{id}\u0022, validData);\n\n // Assert\n Assert.Equal(HttpStatusCode.OK, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Customers_DeleteCustomer_InvalidData", + "TestType": "Data Validation", + "Endpoint": "api/Customers/{id}", + "HttpMethod": "DELETE", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "400 Bad Request", + "TestCode": "[Fact]\npublic async Task Customers_DeleteCustomer_ShouldReturn400_WithInvalidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var invalidData = CreateInvalidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Customers/{id}\u0022, invalidData);\n\n // Assert\n Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Messages_SendMessage_ValidData", + "TestType": "Data Validation", + "Endpoint": "api/Messages/SendMessage", + "HttpMethod": "POST", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "200 OK", + "TestCode": "[Fact]\npublic async Task Messages_SendMessage_ShouldReturn200_WithValidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var validData = CreateValidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Messages/SendMessage\u0022, validData);\n\n // Assert\n Assert.Equal(HttpStatusCode.OK, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Messages_SendMessage_InvalidData", + "TestType": "Data Validation", + "Endpoint": "api/Messages/SendMessage", + "HttpMethod": "POST", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "400 Bad Request", + "TestCode": "[Fact]\npublic async Task Messages_SendMessage_ShouldReturn400_WithInvalidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var invalidData = CreateInvalidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Messages/SendMessage\u0022, invalidData);\n\n // Assert\n Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Messages_GetMessage_ValidData", + "TestType": "Data Validation", + "Endpoint": "api/Messages/{id}", + "HttpMethod": "GET", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "200 OK", + "TestCode": "[Fact]\npublic async Task Messages_GetMessage_ShouldReturn200_WithValidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var validData = CreateValidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Messages/{id}\u0022, validData);\n\n // Assert\n Assert.Equal(HttpStatusCode.OK, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Messages_GetMessage_InvalidData", + "TestType": "Data Validation", + "Endpoint": "api/Messages/{id}", + "HttpMethod": "GET", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "400 Bad Request", + "TestCode": "[Fact]\npublic async Task Messages_GetMessage_ShouldReturn400_WithInvalidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var invalidData = CreateInvalidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Messages/{id}\u0022, invalidData);\n\n // Assert\n Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Messages_GetCustomerMessages_ValidData", + "TestType": "Data Validation", + "Endpoint": "api/Messages/customer/{customerId}", + "HttpMethod": "GET", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "200 OK", + "TestCode": "[Fact]\npublic async Task Messages_GetCustomerMessages_ShouldReturn200_WithValidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var validData = CreateValidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Messages/customer/{customerId}\u0022, validData);\n\n // Assert\n Assert.Equal(HttpStatusCode.OK, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Messages_GetCustomerMessages_InvalidData", + "TestType": "Data Validation", + "Endpoint": "api/Messages/customer/{customerId}", + "HttpMethod": "GET", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "400 Bad Request", + "TestCode": "[Fact]\npublic async Task Messages_GetCustomerMessages_ShouldReturn400_WithInvalidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var invalidData = CreateInvalidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Messages/customer/{customerId}\u0022, invalidData);\n\n // Assert\n Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Messages_GetOrderMessages_ValidData", + "TestType": "Data Validation", + "Endpoint": "api/Messages/order/{orderId}", + "HttpMethod": "GET", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "200 OK", + "TestCode": "[Fact]\npublic async Task Messages_GetOrderMessages_ShouldReturn200_WithValidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var validData = CreateValidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Messages/order/{orderId}\u0022, validData);\n\n // Assert\n Assert.Equal(HttpStatusCode.OK, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Messages_GetOrderMessages_InvalidData", + "TestType": "Data Validation", + "Endpoint": "api/Messages/order/{orderId}", + "HttpMethod": "GET", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "400 Bad Request", + "TestCode": "[Fact]\npublic async Task Messages_GetOrderMessages_ShouldReturn400_WithInvalidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var invalidData = CreateInvalidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Messages/order/{orderId}\u0022, invalidData);\n\n // Assert\n Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Messages_MarkMessageAsSent_ValidData", + "TestType": "Data Validation", + "Endpoint": "api/Messages/{id}/mark-sent", + "HttpMethod": "POST", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "200 OK", + "TestCode": "[Fact]\npublic async Task Messages_MarkMessageAsSent_ShouldReturn200_WithValidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var validData = CreateValidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Messages/{id}/mark-sent\u0022, validData);\n\n // Assert\n Assert.Equal(HttpStatusCode.OK, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Messages_MarkMessageAsSent_InvalidData", + "TestType": "Data Validation", + "Endpoint": "api/Messages/{id}/mark-sent", + "HttpMethod": "POST", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "400 Bad Request", + "TestCode": "[Fact]\npublic async Task Messages_MarkMessageAsSent_ShouldReturn400_WithInvalidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var invalidData = CreateInvalidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Messages/{id}/mark-sent\u0022, invalidData);\n\n // Assert\n Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Messages_MarkMessageAsDelivered_ValidData", + "TestType": "Data Validation", + "Endpoint": "api/Messages/{id}/mark-delivered", + "HttpMethod": "POST", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "200 OK", + "TestCode": "[Fact]\npublic async Task Messages_MarkMessageAsDelivered_ShouldReturn200_WithValidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var validData = CreateValidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Messages/{id}/mark-delivered\u0022, validData);\n\n // Assert\n Assert.Equal(HttpStatusCode.OK, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Messages_MarkMessageAsDelivered_InvalidData", + "TestType": "Data Validation", + "Endpoint": "api/Messages/{id}/mark-delivered", + "HttpMethod": "POST", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "400 Bad Request", + "TestCode": "[Fact]\npublic async Task Messages_MarkMessageAsDelivered_ShouldReturn400_WithInvalidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var invalidData = CreateInvalidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Messages/{id}/mark-delivered\u0022, invalidData);\n\n // Assert\n Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Messages_MarkMessageAsFailed_ValidData", + "TestType": "Data Validation", + "Endpoint": "api/Messages/{id}/mark-failed", + "HttpMethod": "POST", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "200 OK", + "TestCode": "[Fact]\npublic async Task Messages_MarkMessageAsFailed_ShouldReturn200_WithValidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var validData = CreateValidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Messages/{id}/mark-failed\u0022, validData);\n\n // Assert\n Assert.Equal(HttpStatusCode.OK, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Messages_MarkMessageAsFailed_InvalidData", + "TestType": "Data Validation", + "Endpoint": "api/Messages/{id}/mark-failed", + "HttpMethod": "POST", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "400 Bad Request", + "TestCode": "[Fact]\npublic async Task Messages_MarkMessageAsFailed_ShouldReturn400_WithInvalidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var invalidData = CreateInvalidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Messages/{id}/mark-failed\u0022, invalidData);\n\n // Assert\n Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Orders_GetAllOrders_UnauthorizedAccess", + "TestType": "Authorization", + "Endpoint": "api/Orders/GetAllOrders", + "HttpMethod": "GET", + "AuthenticationState": "Anonymous", + "ExpectedOutcome": "401 Unauthorized", + "TestCode": "[Fact]\npublic async Task Orders_GetAllOrders_ShouldReturn401_WhenNotAuthenticated()\n{\n // Arrange\n var client = _factory.CreateClient();\n\n // Act\n var response = await client.GetAsync(\u0022api/Orders/GetAllOrders\u0022);\n\n // Assert\n Assert.Equal(HttpStatusCode.Unauthorized, response.StatusCode);\n}", + "TestData": [], + "Priority": "High" + }, + { + "TestName": "Orders_GetAllOrders_RequiresRole_Admin", + "TestType": "Authorization", + "Endpoint": "api/Orders/GetAllOrders", + "HttpMethod": "GET", + "AuthenticationState": "Authenticated_Admin", + "ExpectedOutcome": "200 OK", + "TestCode": "[Fact]\npublic async Task Orders_GetAllOrders_ShouldReturn200_WhenUserAdmin()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client, \u0022Admin\u0022);\n\n // Act\n var response = await client.GetAsync(\u0022api/Orders/GetAllOrders\u0022);\n\n // Assert\n Assert.Equal(HttpStatusCode.OK, response.StatusCode);\n}", + "TestData": [], + "Priority": "High" + }, + { + "TestName": "Orders_GetOrder_UnauthorizedAccess", + "TestType": "Authorization", + "Endpoint": "api/Orders/{id}", + "HttpMethod": "GET", + "AuthenticationState": "Anonymous", + "ExpectedOutcome": "401 Unauthorized", + "TestCode": "[Fact]\npublic async Task Orders_GetOrder_ShouldReturn401_WhenNotAuthenticated()\n{\n // Arrange\n var client = _factory.CreateClient();\n\n // Act\n var response = await client.GetAsync(\u0022api/Orders/{id}\u0022);\n\n // Assert\n Assert.Equal(HttpStatusCode.Unauthorized, response.StatusCode);\n}", + "TestData": [], + "Priority": "High" + }, + { + "TestName": "Orders_GetOrder_RequiresRole_Admin", + "TestType": "Authorization", + "Endpoint": "api/Orders/{id}", + "HttpMethod": "GET", + "AuthenticationState": "Authenticated_Admin", + "ExpectedOutcome": "200 OK", + "TestCode": "[Fact]\npublic async Task Orders_GetOrder_ShouldReturn200_WhenUserAdmin()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client, \u0022Admin\u0022);\n\n // Act\n var response = await client.GetAsync(\u0022api/Orders/{id}\u0022);\n\n // Assert\n Assert.Equal(HttpStatusCode.OK, response.StatusCode);\n}", + "TestData": [], + "Priority": "High" + }, + { + "TestName": "Orders_GetOrder_ValidData", + "TestType": "Data Validation", + "Endpoint": "api/Orders/{id}", + "HttpMethod": "GET", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "200 OK", + "TestCode": "[Fact]\npublic async Task Orders_GetOrder_ShouldReturn200_WithValidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var validData = CreateValidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Orders/{id}\u0022, validData);\n\n // Assert\n Assert.Equal(HttpStatusCode.OK, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Orders_GetOrder_InvalidData", + "TestType": "Data Validation", + "Endpoint": "api/Orders/{id}", + "HttpMethod": "GET", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "400 Bad Request", + "TestCode": "[Fact]\npublic async Task Orders_GetOrder_ShouldReturn400_WithInvalidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var invalidData = CreateInvalidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Orders/{id}\u0022, invalidData);\n\n // Assert\n Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Orders_UpdateOrderStatus_UnauthorizedAccess", + "TestType": "Authorization", + "Endpoint": "api/Orders/{id}/status", + "HttpMethod": "PUT", + "AuthenticationState": "Anonymous", + "ExpectedOutcome": "401 Unauthorized", + "TestCode": "[Fact]\npublic async Task Orders_UpdateOrderStatus_ShouldReturn401_WhenNotAuthenticated()\n{\n // Arrange\n var client = _factory.CreateClient();\n\n // Act\n var response = await client.GetAsync(\u0022api/Orders/{id}/status\u0022);\n\n // Assert\n Assert.Equal(HttpStatusCode.Unauthorized, response.StatusCode);\n}", + "TestData": [], + "Priority": "High" + }, + { + "TestName": "Orders_UpdateOrderStatus_RequiresRole_Admin", + "TestType": "Authorization", + "Endpoint": "api/Orders/{id}/status", + "HttpMethod": "PUT", + "AuthenticationState": "Authenticated_Admin", + "ExpectedOutcome": "200 OK", + "TestCode": "[Fact]\npublic async Task Orders_UpdateOrderStatus_ShouldReturn200_WhenUserAdmin()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client, \u0022Admin\u0022);\n\n // Act\n var response = await client.GetAsync(\u0022api/Orders/{id}/status\u0022);\n\n // Assert\n Assert.Equal(HttpStatusCode.OK, response.StatusCode);\n}", + "TestData": [], + "Priority": "High" + }, + { + "TestName": "Orders_UpdateOrderStatus_ValidData", + "TestType": "Data Validation", + "Endpoint": "api/Orders/{id}/status", + "HttpMethod": "PUT", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "200 OK", + "TestCode": "[Fact]\npublic async Task Orders_UpdateOrderStatus_ShouldReturn200_WithValidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var validData = CreateValidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Orders/{id}/status\u0022, validData);\n\n // Assert\n Assert.Equal(HttpStatusCode.OK, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Orders_UpdateOrderStatus_InvalidData", + "TestType": "Data Validation", + "Endpoint": "api/Orders/{id}/status", + "HttpMethod": "PUT", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "400 Bad Request", + "TestCode": "[Fact]\npublic async Task Orders_UpdateOrderStatus_ShouldReturn400_WithInvalidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var invalidData = CreateInvalidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Orders/{id}/status\u0022, invalidData);\n\n // Assert\n Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Orders_GetOrdersByIdentity_ValidData", + "TestType": "Data Validation", + "Endpoint": "api/Orders/by-identity/{identityReference}", + "HttpMethod": "GET", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "200 OK", + "TestCode": "[Fact]\npublic async Task Orders_GetOrdersByIdentity_ShouldReturn200_WithValidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var validData = CreateValidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Orders/by-identity/{identityReference}\u0022, validData);\n\n // Assert\n Assert.Equal(HttpStatusCode.OK, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Orders_GetOrdersByIdentity_InvalidData", + "TestType": "Data Validation", + "Endpoint": "api/Orders/by-identity/{identityReference}", + "HttpMethod": "GET", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "400 Bad Request", + "TestCode": "[Fact]\npublic async Task Orders_GetOrdersByIdentity_ShouldReturn400_WithInvalidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var invalidData = CreateInvalidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Orders/by-identity/{identityReference}\u0022, invalidData);\n\n // Assert\n Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Orders_GetOrdersByIdentity_StateDependent", + "TestType": "State Dependent", + "Endpoint": "api/Orders/by-identity/{identityReference}", + "HttpMethod": "GET", + "AuthenticationState": "Multiple", + "ExpectedOutcome": "Different Content Based on State", + "TestCode": "[Theory]\n[InlineData(\u0022Anonymous\u0022)]\n[InlineData(\u0022Authenticated\u0022)]\npublic async Task Orders_GetOrdersByIdentity_ShouldShowDifferentContent_BasedOnAuthState(string authState)\n{\n // Arrange\n var client = _factory.CreateClient();\n if (authState == \u0022Authenticated\u0022)\n await AuthenticateAsync(client);\n\n // Act\n var response = await client.GetAsync(\u0022api/Orders/by-identity/{identityReference}\u0022);\n var content = await response.Content.ReadAsStringAsync();\n\n // Assert\n Assert.Equal(HttpStatusCode.OK, response.StatusCode);\n // Add specific content assertions based on authentication state\n if (authState == \u0022Authenticated\u0022)\n {\n Assert.Contains(\u0022authenticated-content\u0022, content);\n }\n else\n {\n Assert.Contains(\u0022anonymous-content\u0022, content);\n }\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Orders_GetOrdersByCustomerId_ValidData", + "TestType": "Data Validation", + "Endpoint": "api/Orders/by-customer/{customerId}", + "HttpMethod": "GET", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "200 OK", + "TestCode": "[Fact]\npublic async Task Orders_GetOrdersByCustomerId_ShouldReturn200_WithValidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var validData = CreateValidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Orders/by-customer/{customerId}\u0022, validData);\n\n // Assert\n Assert.Equal(HttpStatusCode.OK, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Orders_GetOrdersByCustomerId_InvalidData", + "TestType": "Data Validation", + "Endpoint": "api/Orders/by-customer/{customerId}", + "HttpMethod": "GET", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "400 Bad Request", + "TestCode": "[Fact]\npublic async Task Orders_GetOrdersByCustomerId_ShouldReturn400_WithInvalidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var invalidData = CreateInvalidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Orders/by-customer/{customerId}\u0022, invalidData);\n\n // Assert\n Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Orders_GetOrdersByCustomerId_StateDependent", + "TestType": "State Dependent", + "Endpoint": "api/Orders/by-customer/{customerId}", + "HttpMethod": "GET", + "AuthenticationState": "Multiple", + "ExpectedOutcome": "Different Content Based on State", + "TestCode": "[Theory]\n[InlineData(\u0022Anonymous\u0022)]\n[InlineData(\u0022Authenticated\u0022)]\npublic async Task Orders_GetOrdersByCustomerId_ShouldShowDifferentContent_BasedOnAuthState(string authState)\n{\n // Arrange\n var client = _factory.CreateClient();\n if (authState == \u0022Authenticated\u0022)\n await AuthenticateAsync(client);\n\n // Act\n var response = await client.GetAsync(\u0022api/Orders/by-customer/{customerId}\u0022);\n var content = await response.Content.ReadAsStringAsync();\n\n // Assert\n Assert.Equal(HttpStatusCode.OK, response.StatusCode);\n // Add specific content assertions based on authentication state\n if (authState == \u0022Authenticated\u0022)\n {\n Assert.Contains(\u0022authenticated-content\u0022, content);\n }\n else\n {\n Assert.Contains(\u0022anonymous-content\u0022, content);\n }\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Orders_GetOrderByIdentity_ValidData", + "TestType": "Data Validation", + "Endpoint": "api/Orders/by-identity/{identityReference}/{id}", + "HttpMethod": "GET", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "200 OK", + "TestCode": "[Fact]\npublic async Task Orders_GetOrderByIdentity_ShouldReturn200_WithValidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var validData = CreateValidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Orders/by-identity/{identityReference}/{id}\u0022, validData);\n\n // Assert\n Assert.Equal(HttpStatusCode.OK, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Orders_GetOrderByIdentity_InvalidData", + "TestType": "Data Validation", + "Endpoint": "api/Orders/by-identity/{identityReference}/{id}", + "HttpMethod": "GET", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "400 Bad Request", + "TestCode": "[Fact]\npublic async Task Orders_GetOrderByIdentity_ShouldReturn400_WithInvalidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var invalidData = CreateInvalidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Orders/by-identity/{identityReference}/{id}\u0022, invalidData);\n\n // Assert\n Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Orders_GetOrderByIdentity_StateDependent", + "TestType": "State Dependent", + "Endpoint": "api/Orders/by-identity/{identityReference}/{id}", + "HttpMethod": "GET", + "AuthenticationState": "Multiple", + "ExpectedOutcome": "Different Content Based on State", + "TestCode": "[Theory]\n[InlineData(\u0022Anonymous\u0022)]\n[InlineData(\u0022Authenticated\u0022)]\npublic async Task Orders_GetOrderByIdentity_ShouldShowDifferentContent_BasedOnAuthState(string authState)\n{\n // Arrange\n var client = _factory.CreateClient();\n if (authState == \u0022Authenticated\u0022)\n await AuthenticateAsync(client);\n\n // Act\n var response = await client.GetAsync(\u0022api/Orders/by-identity/{identityReference}/{id}\u0022);\n var content = await response.Content.ReadAsStringAsync();\n\n // Assert\n Assert.Equal(HttpStatusCode.OK, response.StatusCode);\n // Add specific content assertions based on authentication state\n if (authState == \u0022Authenticated\u0022)\n {\n Assert.Contains(\u0022authenticated-content\u0022, content);\n }\n else\n {\n Assert.Contains(\u0022anonymous-content\u0022, content);\n }\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Orders_CreateOrder_ValidData", + "TestType": "Data Validation", + "Endpoint": "api/Orders/CreateOrder", + "HttpMethod": "POST", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "200 OK", + "TestCode": "[Fact]\npublic async Task Orders_CreateOrder_ShouldReturn200_WithValidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var validData = CreateValidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Orders/CreateOrder\u0022, validData);\n\n // Assert\n Assert.Equal(HttpStatusCode.OK, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Orders_CreateOrder_InvalidData", + "TestType": "Data Validation", + "Endpoint": "api/Orders/CreateOrder", + "HttpMethod": "POST", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "400 Bad Request", + "TestCode": "[Fact]\npublic async Task Orders_CreateOrder_ShouldReturn400_WithInvalidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var invalidData = CreateInvalidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Orders/CreateOrder\u0022, invalidData);\n\n // Assert\n Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Orders_CreateOrder_StateDependent", + "TestType": "State Dependent", + "Endpoint": "api/Orders/CreateOrder", + "HttpMethod": "POST", + "AuthenticationState": "Multiple", + "ExpectedOutcome": "Different Content Based on State", + "TestCode": "[Theory]\n[InlineData(\u0022Anonymous\u0022)]\n[InlineData(\u0022Authenticated\u0022)]\npublic async Task Orders_CreateOrder_ShouldShowDifferentContent_BasedOnAuthState(string authState)\n{\n // Arrange\n var client = _factory.CreateClient();\n if (authState == \u0022Authenticated\u0022)\n await AuthenticateAsync(client);\n\n // Act\n var response = await client.GetAsync(\u0022api/Orders/CreateOrder\u0022);\n var content = await response.Content.ReadAsStringAsync();\n\n // Assert\n Assert.Equal(HttpStatusCode.OK, response.StatusCode);\n // Add specific content assertions based on authentication state\n if (authState == \u0022Authenticated\u0022)\n {\n Assert.Contains(\u0022authenticated-content\u0022, content);\n }\n else\n {\n Assert.Contains(\u0022anonymous-content\u0022, content);\n }\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Orders_CreatePayment_ValidData", + "TestType": "Data Validation", + "Endpoint": "api/Orders/{id}/payments", + "HttpMethod": "POST", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "200 OK", + "TestCode": "[Fact]\npublic async Task Orders_CreatePayment_ShouldReturn200_WithValidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var validData = CreateValidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Orders/{id}/payments\u0022, validData);\n\n // Assert\n Assert.Equal(HttpStatusCode.OK, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Orders_CreatePayment_InvalidData", + "TestType": "Data Validation", + "Endpoint": "api/Orders/{id}/payments", + "HttpMethod": "POST", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "400 Bad Request", + "TestCode": "[Fact]\npublic async Task Orders_CreatePayment_ShouldReturn400_WithInvalidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var invalidData = CreateInvalidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Orders/{id}/payments\u0022, invalidData);\n\n // Assert\n Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Orders_CreatePayment_StateDependent", + "TestType": "State Dependent", + "Endpoint": "api/Orders/{id}/payments", + "HttpMethod": "POST", + "AuthenticationState": "Multiple", + "ExpectedOutcome": "Different Content Based on State", + "TestCode": "[Theory]\n[InlineData(\u0022Anonymous\u0022)]\n[InlineData(\u0022Authenticated\u0022)]\npublic async Task Orders_CreatePayment_ShouldShowDifferentContent_BasedOnAuthState(string authState)\n{\n // Arrange\n var client = _factory.CreateClient();\n if (authState == \u0022Authenticated\u0022)\n await AuthenticateAsync(client);\n\n // Act\n var response = await client.GetAsync(\u0022api/Orders/{id}/payments\u0022);\n var content = await response.Content.ReadAsStringAsync();\n\n // Assert\n Assert.Equal(HttpStatusCode.OK, response.StatusCode);\n // Add specific content assertions based on authentication state\n if (authState == \u0022Authenticated\u0022)\n {\n Assert.Contains(\u0022authenticated-content\u0022, content);\n }\n else\n {\n Assert.Contains(\u0022anonymous-content\u0022, content);\n }\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Orders_GetOrderPayments_ValidData", + "TestType": "Data Validation", + "Endpoint": "api/Orders/{id}/payments", + "HttpMethod": "GET", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "200 OK", + "TestCode": "[Fact]\npublic async Task Orders_GetOrderPayments_ShouldReturn200_WithValidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var validData = CreateValidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Orders/{id}/payments\u0022, validData);\n\n // Assert\n Assert.Equal(HttpStatusCode.OK, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Orders_GetOrderPayments_InvalidData", + "TestType": "Data Validation", + "Endpoint": "api/Orders/{id}/payments", + "HttpMethod": "GET", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "400 Bad Request", + "TestCode": "[Fact]\npublic async Task Orders_GetOrderPayments_ShouldReturn400_WithInvalidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var invalidData = CreateInvalidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Orders/{id}/payments\u0022, invalidData);\n\n // Assert\n Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Orders_GetPaymentStatus_ValidData", + "TestType": "Data Validation", + "Endpoint": "api/Orders/payments/{paymentId}/status", + "HttpMethod": "GET", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "200 OK", + "TestCode": "[Fact]\npublic async Task Orders_GetPaymentStatus_ShouldReturn200_WithValidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var validData = CreateValidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Orders/payments/{paymentId}/status\u0022, validData);\n\n // Assert\n Assert.Equal(HttpStatusCode.OK, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Orders_GetPaymentStatus_InvalidData", + "TestType": "Data Validation", + "Endpoint": "api/Orders/payments/{paymentId}/status", + "HttpMethod": "GET", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "400 Bad Request", + "TestCode": "[Fact]\npublic async Task Orders_GetPaymentStatus_ShouldReturn400_WithInvalidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var invalidData = CreateInvalidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Orders/payments/{paymentId}/status\u0022, invalidData);\n\n // Assert\n Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Orders_CancelOrder_ValidData", + "TestType": "Data Validation", + "Endpoint": "api/Orders/{id}/cancel", + "HttpMethod": "POST", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "200 OK", + "TestCode": "[Fact]\npublic async Task Orders_CancelOrder_ShouldReturn200_WithValidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var validData = CreateValidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Orders/{id}/cancel\u0022, validData);\n\n // Assert\n Assert.Equal(HttpStatusCode.OK, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Orders_CancelOrder_InvalidData", + "TestType": "Data Validation", + "Endpoint": "api/Orders/{id}/cancel", + "HttpMethod": "POST", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "400 Bad Request", + "TestCode": "[Fact]\npublic async Task Orders_CancelOrder_ShouldReturn400_WithInvalidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var invalidData = CreateInvalidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Orders/{id}/cancel\u0022, invalidData);\n\n // Assert\n Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Orders_PaymentWebhook_ValidData", + "TestType": "Data Validation", + "Endpoint": "api/Orders/payments/webhook", + "HttpMethod": "POST", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "200 OK", + "TestCode": "[Fact]\npublic async Task Orders_PaymentWebhook_ShouldReturn200_WithValidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var validData = CreateValidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Orders/payments/webhook\u0022, validData);\n\n // Assert\n Assert.Equal(HttpStatusCode.OK, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Orders_PaymentWebhook_InvalidData", + "TestType": "Data Validation", + "Endpoint": "api/Orders/payments/webhook", + "HttpMethod": "POST", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "400 Bad Request", + "TestCode": "[Fact]\npublic async Task Orders_PaymentWebhook_ShouldReturn400_WithInvalidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var invalidData = CreateInvalidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Orders/payments/webhook\u0022, invalidData);\n\n // Assert\n Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Bots_Details_ValidData", + "TestType": "Data Validation", + "Endpoint": "api/Bots/Details", + "HttpMethod": "GET", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "200 OK", + "TestCode": "[Fact]\npublic async Task Bots_Details_ShouldReturn200_WithValidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var validData = CreateValidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Bots/Details\u0022, validData);\n\n // Assert\n Assert.Equal(HttpStatusCode.OK, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Bots_Details_InvalidData", + "TestType": "Data Validation", + "Endpoint": "api/Bots/Details", + "HttpMethod": "GET", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "400 Bad Request", + "TestCode": "[Fact]\npublic async Task Bots_Details_ShouldReturn400_WithInvalidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var invalidData = CreateInvalidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Bots/Details\u0022, invalidData);\n\n // Assert\n Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Bots_CompleteWizard_ValidData", + "TestType": "Data Validation", + "Endpoint": "api/Bots/CompleteWizard", + "HttpMethod": "POST", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "200 OK", + "TestCode": "[Fact]\npublic async Task Bots_CompleteWizard_ShouldReturn200_WithValidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var validData = CreateValidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Bots/CompleteWizard\u0022, validData);\n\n // Assert\n Assert.Equal(HttpStatusCode.OK, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Bots_CompleteWizard_InvalidData", + "TestType": "Data Validation", + "Endpoint": "api/Bots/CompleteWizard", + "HttpMethod": "POST", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "400 Bad Request", + "TestCode": "[Fact]\npublic async Task Bots_CompleteWizard_ShouldReturn400_WithInvalidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var invalidData = CreateInvalidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Bots/CompleteWizard\u0022, invalidData);\n\n // Assert\n Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Bots_Edit_ValidData", + "TestType": "Data Validation", + "Endpoint": "api/Bots/Edit", + "HttpMethod": "GET", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "200 OK", + "TestCode": "[Fact]\npublic async Task Bots_Edit_ShouldReturn200_WithValidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var validData = CreateValidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Bots/Edit\u0022, validData);\n\n // Assert\n Assert.Equal(HttpStatusCode.OK, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Bots_Edit_InvalidData", + "TestType": "Data Validation", + "Endpoint": "api/Bots/Edit", + "HttpMethod": "GET", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "400 Bad Request", + "TestCode": "[Fact]\npublic async Task Bots_Edit_ShouldReturn400_WithInvalidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var invalidData = CreateInvalidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Bots/Edit\u0022, invalidData);\n\n // Assert\n Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Bots_Edit_ValidData", + "TestType": "Data Validation", + "Endpoint": "api/Bots/Edit", + "HttpMethod": "POST", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "200 OK", + "TestCode": "[Fact]\npublic async Task Bots_Edit_ShouldReturn200_WithValidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var validData = CreateValidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Bots/Edit\u0022, validData);\n\n // Assert\n Assert.Equal(HttpStatusCode.OK, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Bots_Edit_InvalidData", + "TestType": "Data Validation", + "Endpoint": "api/Bots/Edit", + "HttpMethod": "POST", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "400 Bad Request", + "TestCode": "[Fact]\npublic async Task Bots_Edit_ShouldReturn400_WithInvalidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var invalidData = CreateInvalidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Bots/Edit\u0022, invalidData);\n\n // Assert\n Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Bots_Metrics_ValidData", + "TestType": "Data Validation", + "Endpoint": "api/Bots/Metrics", + "HttpMethod": "GET", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "200 OK", + "TestCode": "[Fact]\npublic async Task Bots_Metrics_ShouldReturn200_WithValidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var validData = CreateValidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Bots/Metrics\u0022, validData);\n\n // Assert\n Assert.Equal(HttpStatusCode.OK, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Bots_Metrics_InvalidData", + "TestType": "Data Validation", + "Endpoint": "api/Bots/Metrics", + "HttpMethod": "GET", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "400 Bad Request", + "TestCode": "[Fact]\npublic async Task Bots_Metrics_ShouldReturn400_WithInvalidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var invalidData = CreateInvalidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Bots/Metrics\u0022, invalidData);\n\n // Assert\n Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Bots_Delete_ValidData", + "TestType": "Data Validation", + "Endpoint": "api/Bots/Delete", + "HttpMethod": "POST", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "200 OK", + "TestCode": "[Fact]\npublic async Task Bots_Delete_ShouldReturn200_WithValidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var validData = CreateValidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Bots/Delete\u0022, validData);\n\n // Assert\n Assert.Equal(HttpStatusCode.OK, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Bots_Delete_InvalidData", + "TestType": "Data Validation", + "Endpoint": "api/Bots/Delete", + "HttpMethod": "POST", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "400 Bad Request", + "TestCode": "[Fact]\npublic async Task Bots_Delete_ShouldReturn400_WithInvalidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var invalidData = CreateInvalidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Bots/Delete\u0022, invalidData);\n\n // Assert\n Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Bots_Suspend_ValidData", + "TestType": "Data Validation", + "Endpoint": "api/Bots/Suspend", + "HttpMethod": "POST", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "200 OK", + "TestCode": "[Fact]\npublic async Task Bots_Suspend_ShouldReturn200_WithValidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var validData = CreateValidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Bots/Suspend\u0022, validData);\n\n // Assert\n Assert.Equal(HttpStatusCode.OK, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Bots_Suspend_InvalidData", + "TestType": "Data Validation", + "Endpoint": "api/Bots/Suspend", + "HttpMethod": "POST", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "400 Bad Request", + "TestCode": "[Fact]\npublic async Task Bots_Suspend_ShouldReturn400_WithInvalidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var invalidData = CreateInvalidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Bots/Suspend\u0022, invalidData);\n\n // Assert\n Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Bots_Activate_ValidData", + "TestType": "Data Validation", + "Endpoint": "api/Bots/Activate", + "HttpMethod": "POST", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "200 OK", + "TestCode": "[Fact]\npublic async Task Bots_Activate_ShouldReturn200_WithValidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var validData = CreateValidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Bots/Activate\u0022, validData);\n\n // Assert\n Assert.Equal(HttpStatusCode.OK, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Bots_Activate_InvalidData", + "TestType": "Data Validation", + "Endpoint": "api/Bots/Activate", + "HttpMethod": "POST", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "400 Bad Request", + "TestCode": "[Fact]\npublic async Task Bots_Activate_ShouldReturn400_WithInvalidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var invalidData = CreateInvalidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Bots/Activate\u0022, invalidData);\n\n // Assert\n Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Bots_RegenerateKey_ValidData", + "TestType": "Data Validation", + "Endpoint": "api/Bots/RegenerateKey", + "HttpMethod": "GET", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "200 OK", + "TestCode": "[Fact]\npublic async Task Bots_RegenerateKey_ShouldReturn200_WithValidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var validData = CreateValidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Bots/RegenerateKey\u0022, validData);\n\n // Assert\n Assert.Equal(HttpStatusCode.OK, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Bots_RegenerateKey_InvalidData", + "TestType": "Data Validation", + "Endpoint": "api/Bots/RegenerateKey", + "HttpMethod": "GET", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "400 Bad Request", + "TestCode": "[Fact]\npublic async Task Bots_RegenerateKey_ShouldReturn400_WithInvalidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var invalidData = CreateInvalidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Bots/RegenerateKey\u0022, invalidData);\n\n // Assert\n Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Categories_Edit_ValidData", + "TestType": "Data Validation", + "Endpoint": "api/Categories/Edit", + "HttpMethod": "GET", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "200 OK", + "TestCode": "[Fact]\npublic async Task Categories_Edit_ShouldReturn200_WithValidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var validData = CreateValidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Categories/Edit\u0022, validData);\n\n // Assert\n Assert.Equal(HttpStatusCode.OK, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Categories_Edit_InvalidData", + "TestType": "Data Validation", + "Endpoint": "api/Categories/Edit", + "HttpMethod": "GET", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "400 Bad Request", + "TestCode": "[Fact]\npublic async Task Categories_Edit_ShouldReturn400_WithInvalidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var invalidData = CreateInvalidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Categories/Edit\u0022, invalidData);\n\n // Assert\n Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Categories_Edit_ValidData", + "TestType": "Data Validation", + "Endpoint": "api/Categories/Edit", + "HttpMethod": "POST", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "200 OK", + "TestCode": "[Fact]\npublic async Task Categories_Edit_ShouldReturn200_WithValidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var validData = CreateValidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Categories/Edit\u0022, validData);\n\n // Assert\n Assert.Equal(HttpStatusCode.OK, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Categories_Edit_InvalidData", + "TestType": "Data Validation", + "Endpoint": "api/Categories/Edit", + "HttpMethod": "POST", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "400 Bad Request", + "TestCode": "[Fact]\npublic async Task Categories_Edit_ShouldReturn400_WithInvalidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var invalidData = CreateInvalidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Categories/Edit\u0022, invalidData);\n\n // Assert\n Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Categories_Delete_ValidData", + "TestType": "Data Validation", + "Endpoint": "api/Categories/Delete", + "HttpMethod": "POST", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "200 OK", + "TestCode": "[Fact]\npublic async Task Categories_Delete_ShouldReturn200_WithValidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var validData = CreateValidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Categories/Delete\u0022, validData);\n\n // Assert\n Assert.Equal(HttpStatusCode.OK, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Categories_Delete_InvalidData", + "TestType": "Data Validation", + "Endpoint": "api/Categories/Delete", + "HttpMethod": "POST", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "400 Bad Request", + "TestCode": "[Fact]\npublic async Task Categories_Delete_ShouldReturn400_WithInvalidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var invalidData = CreateInvalidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Categories/Delete\u0022, invalidData);\n\n // Assert\n Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Messages_Customer_ValidData", + "TestType": "Data Validation", + "Endpoint": "api/Messages/Customer", + "HttpMethod": "GET", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "200 OK", + "TestCode": "[Fact]\npublic async Task Messages_Customer_ShouldReturn200_WithValidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var validData = CreateValidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Messages/Customer\u0022, validData);\n\n // Assert\n Assert.Equal(HttpStatusCode.OK, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Messages_Customer_InvalidData", + "TestType": "Data Validation", + "Endpoint": "api/Messages/Customer", + "HttpMethod": "GET", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "400 Bad Request", + "TestCode": "[Fact]\npublic async Task Messages_Customer_ShouldReturn400_WithInvalidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var invalidData = CreateInvalidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Messages/Customer\u0022, invalidData);\n\n // Assert\n Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Messages_Reply_ValidData", + "TestType": "Data Validation", + "Endpoint": "api/Messages/Reply", + "HttpMethod": "POST", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "200 OK", + "TestCode": "[Fact]\npublic async Task Messages_Reply_ShouldReturn200_WithValidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var validData = CreateValidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Messages/Reply\u0022, validData);\n\n // Assert\n Assert.Equal(HttpStatusCode.OK, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Messages_Reply_InvalidData", + "TestType": "Data Validation", + "Endpoint": "api/Messages/Reply", + "HttpMethod": "POST", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "400 Bad Request", + "TestCode": "[Fact]\npublic async Task Messages_Reply_ShouldReturn400_WithInvalidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var invalidData = CreateInvalidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Messages/Reply\u0022, invalidData);\n\n // Assert\n Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Orders_Details_ValidData", + "TestType": "Data Validation", + "Endpoint": "api/Orders/Details", + "HttpMethod": "GET", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "200 OK", + "TestCode": "[Fact]\npublic async Task Orders_Details_ShouldReturn200_WithValidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var validData = CreateValidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Orders/Details\u0022, validData);\n\n // Assert\n Assert.Equal(HttpStatusCode.OK, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Orders_Details_InvalidData", + "TestType": "Data Validation", + "Endpoint": "api/Orders/Details", + "HttpMethod": "GET", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "400 Bad Request", + "TestCode": "[Fact]\npublic async Task Orders_Details_ShouldReturn400_WithInvalidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var invalidData = CreateInvalidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Orders/Details\u0022, invalidData);\n\n // Assert\n Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Orders_Edit_ValidData", + "TestType": "Data Validation", + "Endpoint": "api/Orders/Edit", + "HttpMethod": "GET", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "200 OK", + "TestCode": "[Fact]\npublic async Task Orders_Edit_ShouldReturn200_WithValidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var validData = CreateValidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Orders/Edit\u0022, validData);\n\n // Assert\n Assert.Equal(HttpStatusCode.OK, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Orders_Edit_InvalidData", + "TestType": "Data Validation", + "Endpoint": "api/Orders/Edit", + "HttpMethod": "GET", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "400 Bad Request", + "TestCode": "[Fact]\npublic async Task Orders_Edit_ShouldReturn400_WithInvalidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var invalidData = CreateInvalidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Orders/Edit\u0022, invalidData);\n\n // Assert\n Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Orders_Edit_ValidData", + "TestType": "Data Validation", + "Endpoint": "api/Orders/Edit", + "HttpMethod": "POST", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "200 OK", + "TestCode": "[Fact]\npublic async Task Orders_Edit_ShouldReturn200_WithValidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var validData = CreateValidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Orders/Edit\u0022, validData);\n\n // Assert\n Assert.Equal(HttpStatusCode.OK, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Orders_Edit_InvalidData", + "TestType": "Data Validation", + "Endpoint": "api/Orders/Edit", + "HttpMethod": "POST", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "400 Bad Request", + "TestCode": "[Fact]\npublic async Task Orders_Edit_ShouldReturn400_WithInvalidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var invalidData = CreateInvalidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Orders/Edit\u0022, invalidData);\n\n // Assert\n Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Orders_UpdateStatus_ValidData", + "TestType": "Data Validation", + "Endpoint": "api/Orders/UpdateStatus", + "HttpMethod": "POST", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "200 OK", + "TestCode": "[Fact]\npublic async Task Orders_UpdateStatus_ShouldReturn200_WithValidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var validData = CreateValidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Orders/UpdateStatus\u0022, validData);\n\n // Assert\n Assert.Equal(HttpStatusCode.OK, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Orders_UpdateStatus_InvalidData", + "TestType": "Data Validation", + "Endpoint": "api/Orders/UpdateStatus", + "HttpMethod": "POST", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "400 Bad Request", + "TestCode": "[Fact]\npublic async Task Orders_UpdateStatus_ShouldReturn400_WithInvalidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var invalidData = CreateInvalidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Orders/UpdateStatus\u0022, invalidData);\n\n // Assert\n Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Products_Edit_ValidData", + "TestType": "Data Validation", + "Endpoint": "api/Products/Edit", + "HttpMethod": "GET", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "200 OK", + "TestCode": "[Fact]\npublic async Task Products_Edit_ShouldReturn200_WithValidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var validData = CreateValidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Products/Edit\u0022, validData);\n\n // Assert\n Assert.Equal(HttpStatusCode.OK, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Products_Edit_InvalidData", + "TestType": "Data Validation", + "Endpoint": "api/Products/Edit", + "HttpMethod": "GET", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "400 Bad Request", + "TestCode": "[Fact]\npublic async Task Products_Edit_ShouldReturn400_WithInvalidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var invalidData = CreateInvalidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Products/Edit\u0022, invalidData);\n\n // Assert\n Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Products_Edit_ValidData", + "TestType": "Data Validation", + "Endpoint": "api/Products/Edit", + "HttpMethod": "POST", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "200 OK", + "TestCode": "[Fact]\npublic async Task Products_Edit_ShouldReturn200_WithValidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var validData = CreateValidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Products/Edit\u0022, validData);\n\n // Assert\n Assert.Equal(HttpStatusCode.OK, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Products_Edit_InvalidData", + "TestType": "Data Validation", + "Endpoint": "api/Products/Edit", + "HttpMethod": "POST", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "400 Bad Request", + "TestCode": "[Fact]\npublic async Task Products_Edit_ShouldReturn400_WithInvalidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var invalidData = CreateInvalidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Products/Edit\u0022, invalidData);\n\n // Assert\n Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Products_UploadPhoto_ValidData", + "TestType": "Data Validation", + "Endpoint": "api/Products/UploadPhoto", + "HttpMethod": "POST", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "200 OK", + "TestCode": "[Fact]\npublic async Task Products_UploadPhoto_ShouldReturn200_WithValidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var validData = CreateValidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Products/UploadPhoto\u0022, validData);\n\n // Assert\n Assert.Equal(HttpStatusCode.OK, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Products_UploadPhoto_InvalidData", + "TestType": "Data Validation", + "Endpoint": "api/Products/UploadPhoto", + "HttpMethod": "POST", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "400 Bad Request", + "TestCode": "[Fact]\npublic async Task Products_UploadPhoto_ShouldReturn400_WithInvalidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var invalidData = CreateInvalidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Products/UploadPhoto\u0022, invalidData);\n\n // Assert\n Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Products_DeletePhoto_ValidData", + "TestType": "Data Validation", + "Endpoint": "api/Products/DeletePhoto", + "HttpMethod": "POST", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "200 OK", + "TestCode": "[Fact]\npublic async Task Products_DeletePhoto_ShouldReturn200_WithValidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var validData = CreateValidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Products/DeletePhoto\u0022, validData);\n\n // Assert\n Assert.Equal(HttpStatusCode.OK, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Products_DeletePhoto_InvalidData", + "TestType": "Data Validation", + "Endpoint": "api/Products/DeletePhoto", + "HttpMethod": "POST", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "400 Bad Request", + "TestCode": "[Fact]\npublic async Task Products_DeletePhoto_ShouldReturn400_WithInvalidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var invalidData = CreateInvalidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Products/DeletePhoto\u0022, invalidData);\n\n // Assert\n Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Products_Delete_ValidData", + "TestType": "Data Validation", + "Endpoint": "api/Products/Delete", + "HttpMethod": "POST", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "200 OK", + "TestCode": "[Fact]\npublic async Task Products_Delete_ShouldReturn200_WithValidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var validData = CreateValidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Products/Delete\u0022, validData);\n\n // Assert\n Assert.Equal(HttpStatusCode.OK, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Products_Delete_InvalidData", + "TestType": "Data Validation", + "Endpoint": "api/Products/Delete", + "HttpMethod": "POST", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "400 Bad Request", + "TestCode": "[Fact]\npublic async Task Products_Delete_ShouldReturn400_WithInvalidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var invalidData = CreateInvalidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Products/Delete\u0022, invalidData);\n\n // Assert\n Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "ShippingRates_Edit_ValidData", + "TestType": "Data Validation", + "Endpoint": "api/ShippingRates/Edit", + "HttpMethod": "GET", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "200 OK", + "TestCode": "[Fact]\npublic async Task ShippingRates_Edit_ShouldReturn200_WithValidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var validData = CreateValidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/ShippingRates/Edit\u0022, validData);\n\n // Assert\n Assert.Equal(HttpStatusCode.OK, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "ShippingRates_Edit_InvalidData", + "TestType": "Data Validation", + "Endpoint": "api/ShippingRates/Edit", + "HttpMethod": "GET", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "400 Bad Request", + "TestCode": "[Fact]\npublic async Task ShippingRates_Edit_ShouldReturn400_WithInvalidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var invalidData = CreateInvalidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/ShippingRates/Edit\u0022, invalidData);\n\n // Assert\n Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "ShippingRates_Edit_ValidData", + "TestType": "Data Validation", + "Endpoint": "api/ShippingRates/Edit", + "HttpMethod": "POST", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "200 OK", + "TestCode": "[Fact]\npublic async Task ShippingRates_Edit_ShouldReturn200_WithValidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var validData = CreateValidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/ShippingRates/Edit\u0022, validData);\n\n // Assert\n Assert.Equal(HttpStatusCode.OK, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "ShippingRates_Edit_InvalidData", + "TestType": "Data Validation", + "Endpoint": "api/ShippingRates/Edit", + "HttpMethod": "POST", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "400 Bad Request", + "TestCode": "[Fact]\npublic async Task ShippingRates_Edit_ShouldReturn400_WithInvalidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var invalidData = CreateInvalidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/ShippingRates/Edit\u0022, invalidData);\n\n // Assert\n Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "ShippingRates_Delete_ValidData", + "TestType": "Data Validation", + "Endpoint": "api/ShippingRates/Delete", + "HttpMethod": "POST", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "200 OK", + "TestCode": "[Fact]\npublic async Task ShippingRates_Delete_ShouldReturn200_WithValidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var validData = CreateValidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/ShippingRates/Delete\u0022, validData);\n\n // Assert\n Assert.Equal(HttpStatusCode.OK, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "ShippingRates_Delete_InvalidData", + "TestType": "Data Validation", + "Endpoint": "api/ShippingRates/Delete", + "HttpMethod": "POST", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "400 Bad Request", + "TestCode": "[Fact]\npublic async Task ShippingRates_Delete_ShouldReturn400_WithInvalidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var invalidData = CreateInvalidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/ShippingRates/Delete\u0022, invalidData);\n\n // Assert\n Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Users_Edit_ValidData", + "TestType": "Data Validation", + "Endpoint": "api/Users/Edit", + "HttpMethod": "GET", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "200 OK", + "TestCode": "[Fact]\npublic async Task Users_Edit_ShouldReturn200_WithValidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var validData = CreateValidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Users/Edit\u0022, validData);\n\n // Assert\n Assert.Equal(HttpStatusCode.OK, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Users_Edit_InvalidData", + "TestType": "Data Validation", + "Endpoint": "api/Users/Edit", + "HttpMethod": "GET", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "400 Bad Request", + "TestCode": "[Fact]\npublic async Task Users_Edit_ShouldReturn400_WithInvalidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var invalidData = CreateInvalidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Users/Edit\u0022, invalidData);\n\n // Assert\n Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Users_Edit_ValidData", + "TestType": "Data Validation", + "Endpoint": "api/Users/Edit", + "HttpMethod": "POST", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "200 OK", + "TestCode": "[Fact]\npublic async Task Users_Edit_ShouldReturn200_WithValidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var validData = CreateValidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Users/Edit\u0022, validData);\n\n // Assert\n Assert.Equal(HttpStatusCode.OK, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Users_Edit_InvalidData", + "TestType": "Data Validation", + "Endpoint": "api/Users/Edit", + "HttpMethod": "POST", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "400 Bad Request", + "TestCode": "[Fact]\npublic async Task Users_Edit_ShouldReturn400_WithInvalidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var invalidData = CreateInvalidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Users/Edit\u0022, invalidData);\n\n // Assert\n Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Users_Delete_ValidData", + "TestType": "Data Validation", + "Endpoint": "api/Users/Delete", + "HttpMethod": "POST", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "200 OK", + "TestCode": "[Fact]\npublic async Task Users_Delete_ShouldReturn200_WithValidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var validData = CreateValidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Users/Delete\u0022, validData);\n\n // Assert\n Assert.Equal(HttpStatusCode.OK, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "Users_Delete_InvalidData", + "TestType": "Data Validation", + "Endpoint": "api/Users/Delete", + "HttpMethod": "POST", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "400 Bad Request", + "TestCode": "[Fact]\npublic async Task Users_Delete_ShouldReturn400_WithInvalidData()\n{\n // Arrange\n var client = _factory.CreateClient();\n await AuthenticateAsync(client);\n var invalidData = CreateInvalidTestData();\n\n // Act\n var response = await client.PostAsJsonAsync(\u0022api/Users/Delete\u0022, invalidData);\n\n // Assert\n Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);\n}", + "TestData": [], + "Priority": "Medium" + }, + { + "TestName": "AuthFlow_Login_Flow", + "TestType": "Authentication Flow", + "Endpoint": "Multiple", + "HttpMethod": "POST", + "AuthenticationState": "Anonymous", + "ExpectedOutcome": "Transition to Authenticated", + "TestCode": "[Fact]\npublic async Task Login_Flow_ShouldWork()\n{\n // Arrange\n var client = _factory.CreateClient();\n\n // Act \u0026 Assert\n // User should be able to transition from Anonymous to Authenticated via login endpoint\n // TODO: Implement specific flow testing based on scenario\n}", + "TestData": [], + "Priority": "High" + }, + { + "TestName": "AuthFlow_Register_Flow", + "TestType": "Authentication Flow", + "Endpoint": "Multiple", + "HttpMethod": "POST", + "AuthenticationState": "Anonymous", + "ExpectedOutcome": "Transition to Authenticated", + "TestCode": "[Fact]\npublic async Task Register_Flow_ShouldWork()\n{\n // Arrange\n var client = _factory.CreateClient();\n\n // Act \u0026 Assert\n // User should be able to transition from Anonymous to Authenticated via registration endpoint\n // TODO: Implement specific flow testing based on scenario\n}", + "TestData": [], + "Priority": "High" + }, + { + "TestName": "AuthFlow_Login_Flow", + "TestType": "Authentication Flow", + "Endpoint": "Multiple", + "HttpMethod": "POST", + "AuthenticationState": "Anonymous", + "ExpectedOutcome": "Transition to Authenticated", + "TestCode": "[Fact]\npublic async Task Login_Flow_ShouldWork()\n{\n // Arrange\n var client = _factory.CreateClient();\n\n // Act \u0026 Assert\n // User should be able to transition from Anonymous to Authenticated via login endpoint\n // TODO: Implement specific flow testing based on scenario\n}", + "TestData": [], + "Priority": "High" + }, + { + "TestName": "AuthFlow_Login_Flow", + "TestType": "Authentication Flow", + "Endpoint": "Multiple", + "HttpMethod": "POST", + "AuthenticationState": "Anonymous", + "ExpectedOutcome": "Transition to Authenticated", + "TestCode": "[Fact]\npublic async Task Login_Flow_ShouldWork()\n{\n // Arrange\n var client = _factory.CreateClient();\n\n // Act \u0026 Assert\n // User should be able to transition from Anonymous to Authenticated via login endpoint\n // TODO: Implement specific flow testing based on scenario\n}", + "TestData": [], + "Priority": "High" + }, + { + "TestName": "AuthFlow_Login_Flow", + "TestType": "Authentication Flow", + "Endpoint": "Multiple", + "HttpMethod": "POST", + "AuthenticationState": "Anonymous", + "ExpectedOutcome": "Transition to Authenticated", + "TestCode": "[Fact]\npublic async Task Login_Flow_ShouldWork()\n{\n // Arrange\n var client = _factory.CreateClient();\n\n // Act \u0026 Assert\n // User should be able to transition from Anonymous to Authenticated via login endpoint\n // TODO: Implement specific flow testing based on scenario\n}", + "TestData": [], + "Priority": "High" + }, + { + "TestName": "AuthFlow_Logout_Flow", + "TestType": "Authentication Flow", + "Endpoint": "Multiple", + "HttpMethod": "POST", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "Transition to Anonymous", + "TestCode": "[Fact]\npublic async Task Logout_Flow_ShouldWork()\n{\n // Arrange\n var client = _factory.CreateClient();\n\n // Act \u0026 Assert\n // User should be able to transition from Authenticated to Anonymous via logout endpoint\n // TODO: Implement specific flow testing based on scenario\n}", + "TestData": [], + "Priority": "High" + }, + { + "TestName": "AuthFlow_Logout_Flow", + "TestType": "Authentication Flow", + "Endpoint": "Multiple", + "HttpMethod": "POST", + "AuthenticationState": "Authenticated_Admin", + "ExpectedOutcome": "Transition to Anonymous", + "TestCode": "[Fact]\npublic async Task Logout_Flow_ShouldWork()\n{\n // Arrange\n var client = _factory.CreateClient();\n\n // Act \u0026 Assert\n // User should be able to transition from Authenticated_Admin to Anonymous via logout endpoint\n // TODO: Implement specific flow testing based on scenario\n}", + "TestData": [], + "Priority": "High" + }, + { + "TestName": "AuthFlow_Session_Timeout", + "TestType": "Authentication Flow", + "Endpoint": "Multiple", + "HttpMethod": "POST", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "Transition to Anonymous", + "TestCode": "[Fact]\npublic async Task Session_Timeout_ShouldWork()\n{\n // Arrange\n var client = _factory.CreateClient();\n\n // Act \u0026 Assert\n // Verify that expired sessions are handled correctly and user is redirected to login\n // TODO: Implement specific flow testing based on scenario\n}", + "TestData": [], + "Priority": "High" + }, + { + "TestName": "AuthFlow_Concurrent_Sessions", + "TestType": "Authentication Flow", + "Endpoint": "Multiple", + "HttpMethod": "POST", + "AuthenticationState": "Authenticated", + "ExpectedOutcome": "Transition to Authenticated", + "TestCode": "[Fact]\npublic async Task Concurrent_Sessions_ShouldWork()\n{\n // Arrange\n var client = _factory.CreateClient();\n\n // Act \u0026 Assert\n // Test behavior when same user logs in from multiple locations\n // TODO: Implement specific flow testing based on scenario\n}", + "TestData": [], + "Priority": "High" + }, + { + "TestName": "AuthFlow_Role_Switching", + "TestType": "Authentication Flow", + "Endpoint": "Multiple", + "HttpMethod": "POST", + "AuthenticationState": "Authenticated_User", + "ExpectedOutcome": "Transition to Authenticated_Admin", + "TestCode": "[Fact]\npublic async Task Role_Switching_ShouldWork()\n{\n // Arrange\n var client = _factory.CreateClient();\n\n // Act \u0026 Assert\n // Verify that role changes are reflected in endpoint accessibility\n // TODO: Implement specific flow testing based on scenario\n}", + "TestData": [], + "Priority": "High" + } + ], + "Summary": { + "TotalEndpoints": 115, + "FullyCoveredEndpoints": 0, + "PartiallyCoveredEndpoints": 27, + "UncoveredEndpoints": 88, + "OverallCoveragePercentage": 16.956521739130434, + "CriticalGaps": 124, + "WarningGaps": 100, + "InfoGaps": 0, + "SuggestedTests": 190, + "TopPriorities": [ + "Bots_GetAllBots_UnauthorizedAccess", + "Bots_GetAllBots_RequiresRole_Admin", + "Bots_GetBot_UnauthorizedAccess", + "Bots_GetBot_RequiresRole_Admin", + "Bots_GetBotMetrics_UnauthorizedAccess" + ] + } +} \ No newline at end of file diff --git a/LittleShop/TestAgent_Results/endpoint_discovery.json b/LittleShop/TestAgent_Results/endpoint_discovery.json new file mode 100644 index 0000000..d1f1f96 --- /dev/null +++ b/LittleShop/TestAgent_Results/endpoint_discovery.json @@ -0,0 +1,2940 @@ +{ + "Summary": { + "TotalEndpoints": 115, + "TotalControllers": 18, + "AuthenticatedEndpoints": 78, + "AnonymousEndpoints": 37, + "DetectedRoutes": 96 + }, + "Controllers": [ + "Auth", + "BotMessages", + "Bots", + "Catalog", + "Customers", + "Home", + "Messages", + "Orders", + "Test", + "Account", + "Bots", + "Categories", + "Dashboard", + "Messages", + "Orders", + "Products", + "ShippingRates", + "Users" + ], + "Endpoints": [ + { + "Controller": "Auth", + "Action": "Login", + "Template": "api/Auth/login", + "HttpMethods": [ + "POST" + ], + "Parameters": [ + { + "Name": "loginDto", + "Type": "LoginDto", + "IsRequired": true, + "Binding": "Body" + } + ], + "Authentication": { + "RequiresAuthentication": false, + "AllowsAnonymous": false, + "RequiredRoles": [] + }, + "ReturnType": "Task\u00601", + "IsApiController": true, + "Area": "" + }, + { + "Controller": "BotMessages", + "Action": "GetPendingMessages", + "Template": "api/bot/messages/pending", + "HttpMethods": [ + "GET" + ], + "Parameters": [ + { + "Name": "platform", + "Type": "String", + "IsRequired": false, + "Binding": "Query" + } + ], + "Authentication": { + "RequiresAuthentication": false, + "AllowsAnonymous": false, + "RequiredRoles": [] + }, + "ReturnType": "Task\u00601", + "IsApiController": true, + "Area": "" + }, + { + "Controller": "BotMessages", + "Action": "MarkMessageAsSent", + "Template": "api/bot/messages/{id}/mark-sent", + "HttpMethods": [ + "POST" + ], + "Parameters": [ + { + "Name": "id", + "Type": "Guid", + "IsRequired": true, + "Binding": "Query" + }, + { + "Name": "platformMessageId", + "Type": "String", + "IsRequired": false, + "Binding": "Query" + } + ], + "Authentication": { + "RequiresAuthentication": false, + "AllowsAnonymous": false, + "RequiredRoles": [] + }, + "ReturnType": "Task\u00601", + "IsApiController": true, + "Area": "" + }, + { + "Controller": "BotMessages", + "Action": "MarkMessageAsFailed", + "Template": "api/bot/messages/{id}/mark-failed", + "HttpMethods": [ + "POST" + ], + "Parameters": [ + { + "Name": "id", + "Type": "Guid", + "IsRequired": true, + "Binding": "Query" + }, + { + "Name": "reason", + "Type": "String", + "IsRequired": true, + "Binding": "Body" + } + ], + "Authentication": { + "RequiresAuthentication": false, + "AllowsAnonymous": false, + "RequiredRoles": [] + }, + "ReturnType": "Task\u00601", + "IsApiController": true, + "Area": "" + }, + { + "Controller": "BotMessages", + "Action": "CreateTestMessage", + "Template": "api/bot/messages/test-create", + "HttpMethods": [ + "POST" + ], + "Parameters": [ + { + "Name": "dto", + "Type": "CreateTestMessageDto", + "IsRequired": true, + "Binding": "Body" + } + ], + "Authentication": { + "RequiresAuthentication": false, + "AllowsAnonymous": false, + "RequiredRoles": [] + }, + "ReturnType": "Task\u00601", + "IsApiController": true, + "Area": "" + }, + { + "Controller": "BotMessages", + "Action": "CreateCustomerMessage", + "Template": "api/bot/messages/customer-create", + "HttpMethods": [ + "POST" + ], + "Parameters": [ + { + "Name": "dto", + "Type": "CreateCustomerMessageFromTelegramDto", + "IsRequired": true, + "Binding": "Body" + } + ], + "Authentication": { + "RequiresAuthentication": false, + "AllowsAnonymous": false, + "RequiredRoles": [] + }, + "ReturnType": "Task\u00601", + "IsApiController": true, + "Area": "" + }, + { + "Controller": "BotMessages", + "Action": "GetCustomerMessages", + "Template": "api/bot/messages/customer/{customerId}", + "HttpMethods": [ + "GET" + ], + "Parameters": [ + { + "Name": "customerId", + "Type": "Guid", + "IsRequired": true, + "Binding": "Query" + } + ], + "Authentication": { + "RequiresAuthentication": false, + "AllowsAnonymous": false, + "RequiredRoles": [] + }, + "ReturnType": "Task\u00601", + "IsApiController": true, + "Area": "" + }, + { + "Controller": "Bots", + "Action": "RegisterBot", + "Template": "api/Bots/register", + "HttpMethods": [ + "POST" + ], + "Parameters": [ + { + "Name": "dto", + "Type": "BotRegistrationDto", + "IsRequired": true, + "Binding": "Body" + } + ], + "Authentication": { + "RequiresAuthentication": false, + "AllowsAnonymous": true, + "RequiredRoles": [] + }, + "ReturnType": "Task\u00601", + "IsApiController": true, + "Area": "" + }, + { + "Controller": "Bots", + "Action": "AuthenticateBot", + "Template": "api/Bots/authenticate", + "HttpMethods": [ + "POST" + ], + "Parameters": [ + { + "Name": "dto", + "Type": "BotAuthenticateDto", + "IsRequired": true, + "Binding": "Body" + } + ], + "Authentication": { + "RequiresAuthentication": false, + "AllowsAnonymous": true, + "RequiredRoles": [] + }, + "ReturnType": "Task\u00601", + "IsApiController": true, + "Area": "" + }, + { + "Controller": "Bots", + "Action": "GetBotSettings", + "Template": "api/Bots/settings", + "HttpMethods": [ + "GET" + ], + "Parameters": [], + "Authentication": { + "RequiresAuthentication": false, + "AllowsAnonymous": false, + "RequiredRoles": [] + }, + "ReturnType": "Task\u00601", + "IsApiController": true, + "Area": "" + }, + { + "Controller": "Bots", + "Action": "UpdateBotSettings", + "Template": "api/Bots/settings", + "HttpMethods": [ + "PUT" + ], + "Parameters": [ + { + "Name": "dto", + "Type": "UpdateBotSettingsDto", + "IsRequired": true, + "Binding": "Body" + } + ], + "Authentication": { + "RequiresAuthentication": false, + "AllowsAnonymous": false, + "RequiredRoles": [] + }, + "ReturnType": "Task\u00601", + "IsApiController": true, + "Area": "" + }, + { + "Controller": "Bots", + "Action": "RecordHeartbeat", + "Template": "api/Bots/heartbeat", + "HttpMethods": [ + "POST" + ], + "Parameters": [ + { + "Name": "dto", + "Type": "BotHeartbeatDto", + "IsRequired": true, + "Binding": "Body" + } + ], + "Authentication": { + "RequiresAuthentication": false, + "AllowsAnonymous": false, + "RequiredRoles": [] + }, + "ReturnType": "Task\u00601", + "IsApiController": true, + "Area": "" + }, + { + "Controller": "Bots", + "Action": "UpdatePlatformInfo", + "Template": "api/Bots/platform-info", + "HttpMethods": [ + "PUT" + ], + "Parameters": [ + { + "Name": "dto", + "Type": "UpdatePlatformInfoDto", + "IsRequired": true, + "Binding": "Body" + } + ], + "Authentication": { + "RequiresAuthentication": false, + "AllowsAnonymous": false, + "RequiredRoles": [] + }, + "ReturnType": "Task\u00601", + "IsApiController": true, + "Area": "" + }, + { + "Controller": "Bots", + "Action": "RecordMetric", + "Template": "api/Bots/metrics", + "HttpMethods": [ + "POST" + ], + "Parameters": [ + { + "Name": "dto", + "Type": "CreateBotMetricDto", + "IsRequired": true, + "Binding": "Body" + } + ], + "Authentication": { + "RequiresAuthentication": false, + "AllowsAnonymous": false, + "RequiredRoles": [] + }, + "ReturnType": "Task\u00601", + "IsApiController": true, + "Area": "" + }, + { + "Controller": "Bots", + "Action": "RecordMetricsBatch", + "Template": "api/Bots/metrics/batch", + "HttpMethods": [ + "POST" + ], + "Parameters": [ + { + "Name": "dto", + "Type": "BotMetricsBatchDto", + "IsRequired": true, + "Binding": "Body" + } + ], + "Authentication": { + "RequiresAuthentication": false, + "AllowsAnonymous": false, + "RequiredRoles": [] + }, + "ReturnType": "Task\u00601", + "IsApiController": true, + "Area": "" + }, + { + "Controller": "Bots", + "Action": "StartSession", + "Template": "api/Bots/sessions/start", + "HttpMethods": [ + "POST" + ], + "Parameters": [ + { + "Name": "dto", + "Type": "CreateBotSessionDto", + "IsRequired": true, + "Binding": "Body" + } + ], + "Authentication": { + "RequiresAuthentication": false, + "AllowsAnonymous": false, + "RequiredRoles": [] + }, + "ReturnType": "Task\u00601", + "IsApiController": true, + "Area": "" + }, + { + "Controller": "Bots", + "Action": "UpdateSession", + "Template": "api/Bots/sessions/{sessionId}", + "HttpMethods": [ + "PUT" + ], + "Parameters": [ + { + "Name": "sessionId", + "Type": "Guid", + "IsRequired": true, + "Binding": "Query" + }, + { + "Name": "dto", + "Type": "UpdateBotSessionDto", + "IsRequired": true, + "Binding": "Body" + } + ], + "Authentication": { + "RequiresAuthentication": false, + "AllowsAnonymous": false, + "RequiredRoles": [] + }, + "ReturnType": "Task\u00601", + "IsApiController": true, + "Area": "" + }, + { + "Controller": "Bots", + "Action": "EndSession", + "Template": "api/Bots/sessions/{sessionId}/end", + "HttpMethods": [ + "POST" + ], + "Parameters": [ + { + "Name": "sessionId", + "Type": "Guid", + "IsRequired": true, + "Binding": "Query" + } + ], + "Authentication": { + "RequiresAuthentication": false, + "AllowsAnonymous": false, + "RequiredRoles": [] + }, + "ReturnType": "Task\u00601", + "IsApiController": true, + "Area": "" + }, + { + "Controller": "Bots", + "Action": "GetAllBots", + "Template": "api/Bots/GetAllBots", + "HttpMethods": [ + "GET" + ], + "Parameters": [], + "Authentication": { + "RequiresAuthentication": true, + "AllowsAnonymous": false, + "RequiredRoles": [ + "Admin" + ] + }, + "ReturnType": "Task\u00601", + "IsApiController": true, + "Area": "" + }, + { + "Controller": "Bots", + "Action": "GetBot", + "Template": "api/Bots/{id}", + "HttpMethods": [ + "GET" + ], + "Parameters": [ + { + "Name": "id", + "Type": "Guid", + "IsRequired": true, + "Binding": "Query" + } + ], + "Authentication": { + "RequiresAuthentication": true, + "AllowsAnonymous": false, + "RequiredRoles": [ + "Admin" + ] + }, + "ReturnType": "Task\u00601", + "IsApiController": true, + "Area": "" + }, + { + "Controller": "Bots", + "Action": "GetBotMetrics", + "Template": "api/Bots/{id}/metrics", + "HttpMethods": [ + "GET" + ], + "Parameters": [ + { + "Name": "id", + "Type": "Guid", + "IsRequired": true, + "Binding": "Query" + }, + { + "Name": "startDate", + "Type": "Nullable\u00601", + "IsRequired": false, + "Binding": "Query" + }, + { + "Name": "endDate", + "Type": "Nullable\u00601", + "IsRequired": false, + "Binding": "Query" + } + ], + "Authentication": { + "RequiresAuthentication": true, + "AllowsAnonymous": false, + "RequiredRoles": [ + "Admin" + ] + }, + "ReturnType": "Task\u00601", + "IsApiController": true, + "Area": "" + }, + { + "Controller": "Bots", + "Action": "GetMetricsSummary", + "Template": "api/Bots/{id}/metrics/summary", + "HttpMethods": [ + "GET" + ], + "Parameters": [ + { + "Name": "id", + "Type": "Guid", + "IsRequired": true, + "Binding": "Query" + }, + { + "Name": "startDate", + "Type": "Nullable\u00601", + "IsRequired": false, + "Binding": "Query" + }, + { + "Name": "endDate", + "Type": "Nullable\u00601", + "IsRequired": false, + "Binding": "Query" + } + ], + "Authentication": { + "RequiresAuthentication": true, + "AllowsAnonymous": false, + "RequiredRoles": [ + "Admin" + ] + }, + "ReturnType": "Task\u00601", + "IsApiController": true, + "Area": "" + }, + { + "Controller": "Bots", + "Action": "GetBotSessions", + "Template": "api/Bots/{id}/sessions", + "HttpMethods": [ + "GET" + ], + "Parameters": [ + { + "Name": "id", + "Type": "Guid", + "IsRequired": true, + "Binding": "Query" + }, + { + "Name": "activeOnly", + "Type": "Boolean", + "IsRequired": false, + "Binding": "Query" + } + ], + "Authentication": { + "RequiresAuthentication": true, + "AllowsAnonymous": false, + "RequiredRoles": [ + "Admin" + ] + }, + "ReturnType": "Task\u00601", + "IsApiController": true, + "Area": "" + }, + { + "Controller": "Bots", + "Action": "DeleteBot", + "Template": "api/Bots/{id}", + "HttpMethods": [ + "DELETE" + ], + "Parameters": [ + { + "Name": "id", + "Type": "Guid", + "IsRequired": true, + "Binding": "Query" + } + ], + "Authentication": { + "RequiresAuthentication": true, + "AllowsAnonymous": false, + "RequiredRoles": [ + "Admin" + ] + }, + "ReturnType": "Task\u00601", + "IsApiController": true, + "Area": "" + }, + { + "Controller": "Catalog", + "Action": "GetCategories", + "Template": "api/Catalog/categories", + "HttpMethods": [ + "GET" + ], + "Parameters": [], + "Authentication": { + "RequiresAuthentication": false, + "AllowsAnonymous": false, + "RequiredRoles": [] + }, + "ReturnType": "Task\u00601", + "IsApiController": true, + "Area": "" + }, + { + "Controller": "Catalog", + "Action": "GetCategory", + "Template": "api/Catalog/categories/{id}", + "HttpMethods": [ + "GET" + ], + "Parameters": [ + { + "Name": "id", + "Type": "Guid", + "IsRequired": true, + "Binding": "Query" + } + ], + "Authentication": { + "RequiresAuthentication": false, + "AllowsAnonymous": false, + "RequiredRoles": [] + }, + "ReturnType": "Task\u00601", + "IsApiController": true, + "Area": "" + }, + { + "Controller": "Catalog", + "Action": "GetProducts", + "Template": "api/Catalog/products", + "HttpMethods": [ + "GET" + ], + "Parameters": [ + { + "Name": "pageNumber", + "Type": "Int32", + "IsRequired": false, + "Binding": "Query" + }, + { + "Name": "pageSize", + "Type": "Int32", + "IsRequired": false, + "Binding": "Query" + }, + { + "Name": "categoryId", + "Type": "Nullable\u00601", + "IsRequired": false, + "Binding": "Query" + } + ], + "Authentication": { + "RequiresAuthentication": false, + "AllowsAnonymous": false, + "RequiredRoles": [] + }, + "ReturnType": "Task\u00601", + "IsApiController": true, + "Area": "" + }, + { + "Controller": "Catalog", + "Action": "GetProduct", + "Template": "api/Catalog/products/{id}", + "HttpMethods": [ + "GET" + ], + "Parameters": [ + { + "Name": "id", + "Type": "Guid", + "IsRequired": true, + "Binding": "Query" + } + ], + "Authentication": { + "RequiresAuthentication": false, + "AllowsAnonymous": false, + "RequiredRoles": [] + }, + "ReturnType": "Task\u00601", + "IsApiController": true, + "Area": "" + }, + { + "Controller": "Customers", + "Action": "GetCustomers", + "Template": "api/Customers/GetCustomers", + "HttpMethods": [ + "GET" + ], + "Parameters": [ + { + "Name": "search", + "Type": "String", + "IsRequired": false, + "Binding": "Query" + } + ], + "Authentication": { + "RequiresAuthentication": true, + "AllowsAnonymous": false, + "RequiredRoles": [] + }, + "ReturnType": "Task\u00601", + "IsApiController": true, + "Area": "" + }, + { + "Controller": "Customers", + "Action": "GetCustomer", + "Template": "api/Customers/{id}", + "HttpMethods": [ + "GET" + ], + "Parameters": [ + { + "Name": "id", + "Type": "Guid", + "IsRequired": true, + "Binding": "Query" + } + ], + "Authentication": { + "RequiresAuthentication": true, + "AllowsAnonymous": false, + "RequiredRoles": [] + }, + "ReturnType": "Task\u00601", + "IsApiController": true, + "Area": "" + }, + { + "Controller": "Customers", + "Action": "GetCustomerByTelegramId", + "Template": "api/Customers/by-telegram/{telegramUserId}", + "HttpMethods": [ + "GET" + ], + "Parameters": [ + { + "Name": "telegramUserId", + "Type": "Int64", + "IsRequired": true, + "Binding": "Query" + } + ], + "Authentication": { + "RequiresAuthentication": true, + "AllowsAnonymous": false, + "RequiredRoles": [] + }, + "ReturnType": "Task\u00601", + "IsApiController": true, + "Area": "" + }, + { + "Controller": "Customers", + "Action": "CreateCustomer", + "Template": "api/Customers/CreateCustomer", + "HttpMethods": [ + "POST" + ], + "Parameters": [ + { + "Name": "createCustomerDto", + "Type": "CreateCustomerDto", + "IsRequired": true, + "Binding": "Body" + } + ], + "Authentication": { + "RequiresAuthentication": true, + "AllowsAnonymous": false, + "RequiredRoles": [] + }, + "ReturnType": "Task\u00601", + "IsApiController": true, + "Area": "" + }, + { + "Controller": "Customers", + "Action": "GetOrCreateCustomer", + "Template": "api/Customers/get-or-create", + "HttpMethods": [ + "POST" + ], + "Parameters": [ + { + "Name": "createCustomerDto", + "Type": "CreateCustomerDto", + "IsRequired": true, + "Binding": "Body" + } + ], + "Authentication": { + "RequiresAuthentication": false, + "AllowsAnonymous": true, + "RequiredRoles": [] + }, + "ReturnType": "Task\u00601", + "IsApiController": true, + "Area": "" + }, + { + "Controller": "Customers", + "Action": "UpdateCustomer", + "Template": "api/Customers/{id}", + "HttpMethods": [ + "PUT" + ], + "Parameters": [ + { + "Name": "id", + "Type": "Guid", + "IsRequired": true, + "Binding": "Query" + }, + { + "Name": "updateCustomerDto", + "Type": "UpdateCustomerDto", + "IsRequired": true, + "Binding": "Body" + } + ], + "Authentication": { + "RequiresAuthentication": true, + "AllowsAnonymous": false, + "RequiredRoles": [] + }, + "ReturnType": "Task\u00601", + "IsApiController": true, + "Area": "" + }, + { + "Controller": "Customers", + "Action": "BlockCustomer", + "Template": "api/Customers/{id}/block", + "HttpMethods": [ + "POST" + ], + "Parameters": [ + { + "Name": "id", + "Type": "Guid", + "IsRequired": true, + "Binding": "Query" + }, + { + "Name": "reason", + "Type": "String", + "IsRequired": true, + "Binding": "Body" + } + ], + "Authentication": { + "RequiresAuthentication": true, + "AllowsAnonymous": false, + "RequiredRoles": [] + }, + "ReturnType": "Task\u00601", + "IsApiController": true, + "Area": "" + }, + { + "Controller": "Customers", + "Action": "UnblockCustomer", + "Template": "api/Customers/{id}/unblock", + "HttpMethods": [ + "POST" + ], + "Parameters": [ + { + "Name": "id", + "Type": "Guid", + "IsRequired": true, + "Binding": "Query" + } + ], + "Authentication": { + "RequiresAuthentication": true, + "AllowsAnonymous": false, + "RequiredRoles": [] + }, + "ReturnType": "Task\u00601", + "IsApiController": true, + "Area": "" + }, + { + "Controller": "Customers", + "Action": "DeleteCustomer", + "Template": "api/Customers/{id}", + "HttpMethods": [ + "DELETE" + ], + "Parameters": [ + { + "Name": "id", + "Type": "Guid", + "IsRequired": true, + "Binding": "Query" + } + ], + "Authentication": { + "RequiresAuthentication": true, + "AllowsAnonymous": false, + "RequiredRoles": [] + }, + "ReturnType": "Task\u00601", + "IsApiController": true, + "Area": "" + }, + { + "Controller": "Home", + "Action": "Index", + "Template": "api/Home/Index", + "HttpMethods": [ + "GET" + ], + "Parameters": [], + "Authentication": { + "RequiresAuthentication": false, + "AllowsAnonymous": false, + "RequiredRoles": [] + }, + "ReturnType": "IActionResult", + "IsApiController": false, + "Area": "" + }, + { + "Controller": "Messages", + "Action": "SendMessage", + "Template": "api/Messages/SendMessage", + "HttpMethods": [ + "POST" + ], + "Parameters": [ + { + "Name": "createMessageDto", + "Type": "CreateCustomerMessageDto", + "IsRequired": true, + "Binding": "Body" + } + ], + "Authentication": { + "RequiresAuthentication": true, + "AllowsAnonymous": false, + "RequiredRoles": [] + }, + "ReturnType": "Task\u00601", + "IsApiController": true, + "Area": "" + }, + { + "Controller": "Messages", + "Action": "GetMessage", + "Template": "api/Messages/{id}", + "HttpMethods": [ + "GET" + ], + "Parameters": [ + { + "Name": "id", + "Type": "Guid", + "IsRequired": true, + "Binding": "Query" + } + ], + "Authentication": { + "RequiresAuthentication": true, + "AllowsAnonymous": false, + "RequiredRoles": [] + }, + "ReturnType": "Task\u00601", + "IsApiController": true, + "Area": "" + }, + { + "Controller": "Messages", + "Action": "GetCustomerMessages", + "Template": "api/Messages/customer/{customerId}", + "HttpMethods": [ + "GET" + ], + "Parameters": [ + { + "Name": "customerId", + "Type": "Guid", + "IsRequired": true, + "Binding": "Query" + } + ], + "Authentication": { + "RequiresAuthentication": true, + "AllowsAnonymous": false, + "RequiredRoles": [] + }, + "ReturnType": "Task\u00601", + "IsApiController": true, + "Area": "" + }, + { + "Controller": "Messages", + "Action": "GetOrderMessages", + "Template": "api/Messages/order/{orderId}", + "HttpMethods": [ + "GET" + ], + "Parameters": [ + { + "Name": "orderId", + "Type": "Guid", + "IsRequired": true, + "Binding": "Query" + } + ], + "Authentication": { + "RequiresAuthentication": true, + "AllowsAnonymous": false, + "RequiredRoles": [] + }, + "ReturnType": "Task\u00601", + "IsApiController": true, + "Area": "" + }, + { + "Controller": "Messages", + "Action": "GetPendingMessages", + "Template": "api/Messages/pending", + "HttpMethods": [ + "GET" + ], + "Parameters": [ + { + "Name": "platform", + "Type": "String", + "IsRequired": false, + "Binding": "Query" + } + ], + "Authentication": { + "RequiresAuthentication": false, + "AllowsAnonymous": true, + "RequiredRoles": [] + }, + "ReturnType": "Task\u00601", + "IsApiController": true, + "Area": "" + }, + { + "Controller": "Messages", + "Action": "MarkMessageAsSent", + "Template": "api/Messages/{id}/mark-sent", + "HttpMethods": [ + "POST" + ], + "Parameters": [ + { + "Name": "id", + "Type": "Guid", + "IsRequired": true, + "Binding": "Query" + }, + { + "Name": "platformMessageId", + "Type": "String", + "IsRequired": false, + "Binding": "Query" + } + ], + "Authentication": { + "RequiresAuthentication": false, + "AllowsAnonymous": true, + "RequiredRoles": [] + }, + "ReturnType": "Task\u00601", + "IsApiController": true, + "Area": "" + }, + { + "Controller": "Messages", + "Action": "MarkMessageAsDelivered", + "Template": "api/Messages/{id}/mark-delivered", + "HttpMethods": [ + "POST" + ], + "Parameters": [ + { + "Name": "id", + "Type": "Guid", + "IsRequired": true, + "Binding": "Query" + } + ], + "Authentication": { + "RequiresAuthentication": true, + "AllowsAnonymous": false, + "RequiredRoles": [] + }, + "ReturnType": "Task\u00601", + "IsApiController": true, + "Area": "" + }, + { + "Controller": "Messages", + "Action": "MarkMessageAsFailed", + "Template": "api/Messages/{id}/mark-failed", + "HttpMethods": [ + "POST" + ], + "Parameters": [ + { + "Name": "id", + "Type": "Guid", + "IsRequired": true, + "Binding": "Query" + }, + { + "Name": "reason", + "Type": "String", + "IsRequired": true, + "Binding": "Body" + } + ], + "Authentication": { + "RequiresAuthentication": false, + "AllowsAnonymous": true, + "RequiredRoles": [] + }, + "ReturnType": "Task\u00601", + "IsApiController": true, + "Area": "" + }, + { + "Controller": "Orders", + "Action": "GetAllOrders", + "Template": "api/Orders/GetAllOrders", + "HttpMethods": [ + "GET" + ], + "Parameters": [], + "Authentication": { + "RequiresAuthentication": true, + "AllowsAnonymous": false, + "RequiredRoles": [ + "Admin" + ] + }, + "ReturnType": "Task\u00601", + "IsApiController": true, + "Area": "" + }, + { + "Controller": "Orders", + "Action": "GetOrder", + "Template": "api/Orders/{id}", + "HttpMethods": [ + "GET" + ], + "Parameters": [ + { + "Name": "id", + "Type": "Guid", + "IsRequired": true, + "Binding": "Query" + } + ], + "Authentication": { + "RequiresAuthentication": true, + "AllowsAnonymous": false, + "RequiredRoles": [ + "Admin" + ] + }, + "ReturnType": "Task\u00601", + "IsApiController": true, + "Area": "" + }, + { + "Controller": "Orders", + "Action": "UpdateOrderStatus", + "Template": "api/Orders/{id}/status", + "HttpMethods": [ + "PUT" + ], + "Parameters": [ + { + "Name": "id", + "Type": "Guid", + "IsRequired": true, + "Binding": "Query" + }, + { + "Name": "updateOrderStatusDto", + "Type": "UpdateOrderStatusDto", + "IsRequired": true, + "Binding": "Body" + } + ], + "Authentication": { + "RequiresAuthentication": true, + "AllowsAnonymous": false, + "RequiredRoles": [ + "Admin" + ] + }, + "ReturnType": "Task\u00601", + "IsApiController": true, + "Area": "" + }, + { + "Controller": "Orders", + "Action": "GetOrdersByIdentity", + "Template": "api/Orders/by-identity/{identityReference}", + "HttpMethods": [ + "GET" + ], + "Parameters": [ + { + "Name": "identityReference", + "Type": "String", + "IsRequired": true, + "Binding": "Query" + } + ], + "Authentication": { + "RequiresAuthentication": false, + "AllowsAnonymous": true, + "RequiredRoles": [] + }, + "ReturnType": "Task\u00601", + "IsApiController": true, + "Area": "" + }, + { + "Controller": "Orders", + "Action": "GetOrdersByCustomerId", + "Template": "api/Orders/by-customer/{customerId}", + "HttpMethods": [ + "GET" + ], + "Parameters": [ + { + "Name": "customerId", + "Type": "Guid", + "IsRequired": true, + "Binding": "Query" + } + ], + "Authentication": { + "RequiresAuthentication": false, + "AllowsAnonymous": true, + "RequiredRoles": [] + }, + "ReturnType": "Task\u00601", + "IsApiController": true, + "Area": "" + }, + { + "Controller": "Orders", + "Action": "GetOrderByIdentity", + "Template": "api/Orders/by-identity/{identityReference}/{id}", + "HttpMethods": [ + "GET" + ], + "Parameters": [ + { + "Name": "identityReference", + "Type": "String", + "IsRequired": true, + "Binding": "Query" + }, + { + "Name": "id", + "Type": "Guid", + "IsRequired": true, + "Binding": "Query" + } + ], + "Authentication": { + "RequiresAuthentication": false, + "AllowsAnonymous": true, + "RequiredRoles": [] + }, + "ReturnType": "Task\u00601", + "IsApiController": true, + "Area": "" + }, + { + "Controller": "Orders", + "Action": "CreateOrder", + "Template": "api/Orders/CreateOrder", + "HttpMethods": [ + "POST" + ], + "Parameters": [ + { + "Name": "createOrderDto", + "Type": "CreateOrderDto", + "IsRequired": true, + "Binding": "Body" + } + ], + "Authentication": { + "RequiresAuthentication": false, + "AllowsAnonymous": true, + "RequiredRoles": [] + }, + "ReturnType": "Task\u00601", + "IsApiController": true, + "Area": "" + }, + { + "Controller": "Orders", + "Action": "CreatePayment", + "Template": "api/Orders/{id}/payments", + "HttpMethods": [ + "POST" + ], + "Parameters": [ + { + "Name": "id", + "Type": "Guid", + "IsRequired": true, + "Binding": "Query" + }, + { + "Name": "createPaymentDto", + "Type": "CreatePaymentDto", + "IsRequired": true, + "Binding": "Body" + } + ], + "Authentication": { + "RequiresAuthentication": false, + "AllowsAnonymous": true, + "RequiredRoles": [] + }, + "ReturnType": "Task\u00601", + "IsApiController": true, + "Area": "" + }, + { + "Controller": "Orders", + "Action": "GetOrderPayments", + "Template": "api/Orders/{id}/payments", + "HttpMethods": [ + "GET" + ], + "Parameters": [ + { + "Name": "id", + "Type": "Guid", + "IsRequired": true, + "Binding": "Query" + } + ], + "Authentication": { + "RequiresAuthentication": true, + "AllowsAnonymous": false, + "RequiredRoles": [] + }, + "ReturnType": "Task\u00601", + "IsApiController": true, + "Area": "" + }, + { + "Controller": "Orders", + "Action": "GetPaymentStatus", + "Template": "api/Orders/payments/{paymentId}/status", + "HttpMethods": [ + "GET" + ], + "Parameters": [ + { + "Name": "paymentId", + "Type": "Guid", + "IsRequired": true, + "Binding": "Query" + } + ], + "Authentication": { + "RequiresAuthentication": true, + "AllowsAnonymous": false, + "RequiredRoles": [] + }, + "ReturnType": "Task\u00601", + "IsApiController": true, + "Area": "" + }, + { + "Controller": "Orders", + "Action": "CancelOrder", + "Template": "api/Orders/{id}/cancel", + "HttpMethods": [ + "POST" + ], + "Parameters": [ + { + "Name": "id", + "Type": "Guid", + "IsRequired": true, + "Binding": "Query" + }, + { + "Name": "cancelOrderDto", + "Type": "CancelOrderDto", + "IsRequired": true, + "Binding": "Body" + } + ], + "Authentication": { + "RequiresAuthentication": true, + "AllowsAnonymous": false, + "RequiredRoles": [] + }, + "ReturnType": "Task\u00601", + "IsApiController": true, + "Area": "" + }, + { + "Controller": "Orders", + "Action": "PaymentWebhook", + "Template": "api/Orders/payments/webhook", + "HttpMethods": [ + "POST" + ], + "Parameters": [ + { + "Name": "webhookDto", + "Type": "PaymentWebhookDto", + "IsRequired": true, + "Binding": "Body" + } + ], + "Authentication": { + "RequiresAuthentication": true, + "AllowsAnonymous": false, + "RequiredRoles": [] + }, + "ReturnType": "Task\u00601", + "IsApiController": true, + "Area": "" + }, + { + "Controller": "Test", + "Action": "CreateTestProduct", + "Template": "api/Test/create-product", + "HttpMethods": [ + "POST" + ], + "Parameters": [], + "Authentication": { + "RequiresAuthentication": false, + "AllowsAnonymous": false, + "RequiredRoles": [] + }, + "ReturnType": "Task\u00601", + "IsApiController": true, + "Area": "" + }, + { + "Controller": "Test", + "Action": "SetupTestData", + "Template": "api/Test/setup-test-data", + "HttpMethods": [ + "POST" + ], + "Parameters": [], + "Authentication": { + "RequiresAuthentication": false, + "AllowsAnonymous": false, + "RequiredRoles": [] + }, + "ReturnType": "Task\u00601", + "IsApiController": true, + "Area": "" + }, + { + "Controller": "Account", + "Action": "Login", + "Template": "api/Account/Login", + "HttpMethods": [ + "GET" + ], + "Parameters": [], + "Authentication": { + "RequiresAuthentication": false, + "AllowsAnonymous": false, + "RequiredRoles": [] + }, + "ReturnType": "IActionResult", + "IsApiController": false, + "Area": "Admin" + }, + { + "Controller": "Account", + "Action": "Login", + "Template": "api/Account/Login", + "HttpMethods": [ + "POST" + ], + "Parameters": [ + { + "Name": "username", + "Type": "String", + "IsRequired": true, + "Binding": "Query" + }, + { + "Name": "password", + "Type": "String", + "IsRequired": true, + "Binding": "Query" + } + ], + "Authentication": { + "RequiresAuthentication": false, + "AllowsAnonymous": false, + "RequiredRoles": [] + }, + "ReturnType": "Task\u00601", + "IsApiController": false, + "Area": "Admin" + }, + { + "Controller": "Account", + "Action": "Logout", + "Template": "api/Account/Logout", + "HttpMethods": [ + "POST" + ], + "Parameters": [], + "Authentication": { + "RequiresAuthentication": true, + "AllowsAnonymous": false, + "RequiredRoles": [] + }, + "ReturnType": "Task\u00601", + "IsApiController": false, + "Area": "Admin" + }, + { + "Controller": "Account", + "Action": "AccessDenied", + "Template": "api/Account/AccessDenied", + "HttpMethods": [ + "GET" + ], + "Parameters": [], + "Authentication": { + "RequiresAuthentication": false, + "AllowsAnonymous": false, + "RequiredRoles": [] + }, + "ReturnType": "IActionResult", + "IsApiController": false, + "Area": "Admin" + }, + { + "Controller": "Bots", + "Action": "Index", + "Template": "api/Bots/Index", + "HttpMethods": [ + "GET" + ], + "Parameters": [], + "Authentication": { + "RequiresAuthentication": true, + "AllowsAnonymous": false, + "RequiredRoles": [] + }, + "ReturnType": "Task\u00601", + "IsApiController": false, + "Area": "Admin" + }, + { + "Controller": "Bots", + "Action": "Details", + "Template": "api/Bots/Details", + "HttpMethods": [ + "GET" + ], + "Parameters": [ + { + "Name": "id", + "Type": "Guid", + "IsRequired": true, + "Binding": "Query" + } + ], + "Authentication": { + "RequiresAuthentication": true, + "AllowsAnonymous": false, + "RequiredRoles": [] + }, + "ReturnType": "Task\u00601", + "IsApiController": false, + "Area": "Admin" + }, + { + "Controller": "Bots", + "Action": "Create", + "Template": "api/Bots/Create", + "HttpMethods": [ + "GET" + ], + "Parameters": [], + "Authentication": { + "RequiresAuthentication": true, + "AllowsAnonymous": false, + "RequiredRoles": [] + }, + "ReturnType": "IActionResult", + "IsApiController": false, + "Area": "Admin" + }, + { + "Controller": "Bots", + "Action": "Wizard", + "Template": "api/Bots/Wizard", + "HttpMethods": [ + "GET" + ], + "Parameters": [], + "Authentication": { + "RequiresAuthentication": true, + "AllowsAnonymous": false, + "RequiredRoles": [] + }, + "ReturnType": "IActionResult", + "IsApiController": false, + "Area": "Admin" + }, + { + "Controller": "Bots", + "Action": "Wizard", + "Template": "api/Bots/Wizard", + "HttpMethods": [ + "POST" + ], + "Parameters": [ + { + "Name": "dto", + "Type": "BotWizardDto", + "IsRequired": true, + "Binding": "Body" + } + ], + "Authentication": { + "RequiresAuthentication": true, + "AllowsAnonymous": false, + "RequiredRoles": [] + }, + "ReturnType": "Task\u00601", + "IsApiController": false, + "Area": "Admin" + }, + { + "Controller": "Bots", + "Action": "CompleteWizard", + "Template": "api/Bots/CompleteWizard", + "HttpMethods": [ + "POST" + ], + "Parameters": [ + { + "Name": "dto", + "Type": "BotWizardDto", + "IsRequired": true, + "Binding": "Body" + } + ], + "Authentication": { + "RequiresAuthentication": true, + "AllowsAnonymous": false, + "RequiredRoles": [] + }, + "ReturnType": "Task\u00601", + "IsApiController": false, + "Area": "Admin" + }, + { + "Controller": "Bots", + "Action": "Create", + "Template": "api/Bots/Create", + "HttpMethods": [ + "POST" + ], + "Parameters": [ + { + "Name": "dto", + "Type": "BotRegistrationDto", + "IsRequired": true, + "Binding": "Body" + } + ], + "Authentication": { + "RequiresAuthentication": true, + "AllowsAnonymous": false, + "RequiredRoles": [] + }, + "ReturnType": "Task\u00601", + "IsApiController": false, + "Area": "Admin" + }, + { + "Controller": "Bots", + "Action": "Edit", + "Template": "api/Bots/Edit", + "HttpMethods": [ + "GET" + ], + "Parameters": [ + { + "Name": "id", + "Type": "Guid", + "IsRequired": true, + "Binding": "Query" + } + ], + "Authentication": { + "RequiresAuthentication": true, + "AllowsAnonymous": false, + "RequiredRoles": [] + }, + "ReturnType": "Task\u00601", + "IsApiController": false, + "Area": "Admin" + }, + { + "Controller": "Bots", + "Action": "Edit", + "Template": "api/Bots/Edit", + "HttpMethods": [ + "POST" + ], + "Parameters": [ + { + "Name": "id", + "Type": "Guid", + "IsRequired": true, + "Binding": "Query" + }, + { + "Name": "settingsJson", + "Type": "String", + "IsRequired": true, + "Binding": "Query" + }, + { + "Name": "status", + "Type": "BotStatus", + "IsRequired": true, + "Binding": "Query" + } + ], + "Authentication": { + "RequiresAuthentication": true, + "AllowsAnonymous": false, + "RequiredRoles": [] + }, + "ReturnType": "Task\u00601", + "IsApiController": false, + "Area": "Admin" + }, + { + "Controller": "Bots", + "Action": "Metrics", + "Template": "api/Bots/Metrics", + "HttpMethods": [ + "GET" + ], + "Parameters": [ + { + "Name": "id", + "Type": "Guid", + "IsRequired": true, + "Binding": "Query" + }, + { + "Name": "startDate", + "Type": "Nullable\u00601", + "IsRequired": false, + "Binding": "Body" + }, + { + "Name": "endDate", + "Type": "Nullable\u00601", + "IsRequired": false, + "Binding": "Body" + } + ], + "Authentication": { + "RequiresAuthentication": true, + "AllowsAnonymous": false, + "RequiredRoles": [] + }, + "ReturnType": "Task\u00601", + "IsApiController": false, + "Area": "Admin" + }, + { + "Controller": "Bots", + "Action": "Delete", + "Template": "api/Bots/Delete", + "HttpMethods": [ + "POST" + ], + "Parameters": [ + { + "Name": "id", + "Type": "Guid", + "IsRequired": true, + "Binding": "Query" + } + ], + "Authentication": { + "RequiresAuthentication": true, + "AllowsAnonymous": false, + "RequiredRoles": [] + }, + "ReturnType": "Task\u00601", + "IsApiController": false, + "Area": "Admin" + }, + { + "Controller": "Bots", + "Action": "Suspend", + "Template": "api/Bots/Suspend", + "HttpMethods": [ + "POST" + ], + "Parameters": [ + { + "Name": "id", + "Type": "Guid", + "IsRequired": true, + "Binding": "Query" + } + ], + "Authentication": { + "RequiresAuthentication": true, + "AllowsAnonymous": false, + "RequiredRoles": [] + }, + "ReturnType": "Task\u00601", + "IsApiController": false, + "Area": "Admin" + }, + { + "Controller": "Bots", + "Action": "Activate", + "Template": "api/Bots/Activate", + "HttpMethods": [ + "POST" + ], + "Parameters": [ + { + "Name": "id", + "Type": "Guid", + "IsRequired": true, + "Binding": "Query" + } + ], + "Authentication": { + "RequiresAuthentication": true, + "AllowsAnonymous": false, + "RequiredRoles": [] + }, + "ReturnType": "Task\u00601", + "IsApiController": false, + "Area": "Admin" + }, + { + "Controller": "Bots", + "Action": "RegenerateKey", + "Template": "api/Bots/RegenerateKey", + "HttpMethods": [ + "GET" + ], + "Parameters": [ + { + "Name": "id", + "Type": "Guid", + "IsRequired": true, + "Binding": "Query" + } + ], + "Authentication": { + "RequiresAuthentication": true, + "AllowsAnonymous": false, + "RequiredRoles": [] + }, + "ReturnType": "Task\u00601", + "IsApiController": false, + "Area": "Admin" + }, + { + "Controller": "Categories", + "Action": "Index", + "Template": "api/Categories/Index", + "HttpMethods": [ + "GET" + ], + "Parameters": [], + "Authentication": { + "RequiresAuthentication": true, + "AllowsAnonymous": false, + "RequiredRoles": [] + }, + "ReturnType": "Task\u00601", + "IsApiController": false, + "Area": "Admin" + }, + { + "Controller": "Categories", + "Action": "Create", + "Template": "api/Categories/Create", + "HttpMethods": [ + "GET" + ], + "Parameters": [], + "Authentication": { + "RequiresAuthentication": true, + "AllowsAnonymous": false, + "RequiredRoles": [] + }, + "ReturnType": "IActionResult", + "IsApiController": false, + "Area": "Admin" + }, + { + "Controller": "Categories", + "Action": "Create", + "Template": "api/Categories/Create", + "HttpMethods": [ + "POST" + ], + "Parameters": [ + { + "Name": "model", + "Type": "CreateCategoryDto", + "IsRequired": true, + "Binding": "Body" + } + ], + "Authentication": { + "RequiresAuthentication": true, + "AllowsAnonymous": false, + "RequiredRoles": [] + }, + "ReturnType": "Task\u00601", + "IsApiController": false, + "Area": "Admin" + }, + { + "Controller": "Categories", + "Action": "Edit", + "Template": "api/Categories/Edit", + "HttpMethods": [ + "GET" + ], + "Parameters": [ + { + "Name": "id", + "Type": "Guid", + "IsRequired": true, + "Binding": "Query" + } + ], + "Authentication": { + "RequiresAuthentication": true, + "AllowsAnonymous": false, + "RequiredRoles": [] + }, + "ReturnType": "Task\u00601", + "IsApiController": false, + "Area": "Admin" + }, + { + "Controller": "Categories", + "Action": "Edit", + "Template": "api/Categories/Edit", + "HttpMethods": [ + "POST" + ], + "Parameters": [ + { + "Name": "id", + "Type": "Guid", + "IsRequired": true, + "Binding": "Query" + }, + { + "Name": "model", + "Type": "UpdateCategoryDto", + "IsRequired": true, + "Binding": "Body" + } + ], + "Authentication": { + "RequiresAuthentication": true, + "AllowsAnonymous": false, + "RequiredRoles": [] + }, + "ReturnType": "Task\u00601", + "IsApiController": false, + "Area": "Admin" + }, + { + "Controller": "Categories", + "Action": "Delete", + "Template": "api/Categories/Delete", + "HttpMethods": [ + "POST" + ], + "Parameters": [ + { + "Name": "id", + "Type": "Guid", + "IsRequired": true, + "Binding": "Query" + } + ], + "Authentication": { + "RequiresAuthentication": true, + "AllowsAnonymous": false, + "RequiredRoles": [] + }, + "ReturnType": "Task\u00601", + "IsApiController": false, + "Area": "Admin" + }, + { + "Controller": "Dashboard", + "Action": "Index", + "Template": "api/Dashboard/Index", + "HttpMethods": [ + "GET" + ], + "Parameters": [], + "Authentication": { + "RequiresAuthentication": true, + "AllowsAnonymous": false, + "RequiredRoles": [] + }, + "ReturnType": "Task\u00601", + "IsApiController": false, + "Area": "Admin" + }, + { + "Controller": "Messages", + "Action": "Index", + "Template": "api/Messages/Index", + "HttpMethods": [ + "GET" + ], + "Parameters": [], + "Authentication": { + "RequiresAuthentication": true, + "AllowsAnonymous": false, + "RequiredRoles": [] + }, + "ReturnType": "Task\u00601", + "IsApiController": false, + "Area": "Admin" + }, + { + "Controller": "Messages", + "Action": "Customer", + "Template": "api/Messages/Customer", + "HttpMethods": [ + "GET" + ], + "Parameters": [ + { + "Name": "id", + "Type": "Guid", + "IsRequired": true, + "Binding": "Query" + } + ], + "Authentication": { + "RequiresAuthentication": true, + "AllowsAnonymous": false, + "RequiredRoles": [] + }, + "ReturnType": "Task\u00601", + "IsApiController": false, + "Area": "Admin" + }, + { + "Controller": "Messages", + "Action": "Reply", + "Template": "api/Messages/Reply", + "HttpMethods": [ + "POST" + ], + "Parameters": [ + { + "Name": "customerId", + "Type": "Guid", + "IsRequired": true, + "Binding": "Query" + }, + { + "Name": "content", + "Type": "String", + "IsRequired": true, + "Binding": "Query" + }, + { + "Name": "isUrgent", + "Type": "Boolean", + "IsRequired": false, + "Binding": "Query" + } + ], + "Authentication": { + "RequiresAuthentication": true, + "AllowsAnonymous": false, + "RequiredRoles": [] + }, + "ReturnType": "Task\u00601", + "IsApiController": false, + "Area": "Admin" + }, + { + "Controller": "Orders", + "Action": "Index", + "Template": "api/Orders/Index", + "HttpMethods": [ + "GET" + ], + "Parameters": [], + "Authentication": { + "RequiresAuthentication": true, + "AllowsAnonymous": false, + "RequiredRoles": [] + }, + "ReturnType": "Task\u00601", + "IsApiController": false, + "Area": "Admin" + }, + { + "Controller": "Orders", + "Action": "Details", + "Template": "api/Orders/Details", + "HttpMethods": [ + "GET" + ], + "Parameters": [ + { + "Name": "id", + "Type": "Guid", + "IsRequired": true, + "Binding": "Query" + } + ], + "Authentication": { + "RequiresAuthentication": true, + "AllowsAnonymous": false, + "RequiredRoles": [] + }, + "ReturnType": "Task\u00601", + "IsApiController": false, + "Area": "Admin" + }, + { + "Controller": "Orders", + "Action": "Create", + "Template": "api/Orders/Create", + "HttpMethods": [ + "GET" + ], + "Parameters": [], + "Authentication": { + "RequiresAuthentication": true, + "AllowsAnonymous": false, + "RequiredRoles": [] + }, + "ReturnType": "IActionResult", + "IsApiController": false, + "Area": "Admin" + }, + { + "Controller": "Orders", + "Action": "Create", + "Template": "api/Orders/Create", + "HttpMethods": [ + "POST" + ], + "Parameters": [ + { + "Name": "model", + "Type": "CreateOrderDto", + "IsRequired": true, + "Binding": "Body" + } + ], + "Authentication": { + "RequiresAuthentication": true, + "AllowsAnonymous": false, + "RequiredRoles": [] + }, + "ReturnType": "Task\u00601", + "IsApiController": false, + "Area": "Admin" + }, + { + "Controller": "Orders", + "Action": "Edit", + "Template": "api/Orders/Edit", + "HttpMethods": [ + "GET" + ], + "Parameters": [ + { + "Name": "id", + "Type": "Guid", + "IsRequired": true, + "Binding": "Query" + } + ], + "Authentication": { + "RequiresAuthentication": true, + "AllowsAnonymous": false, + "RequiredRoles": [] + }, + "ReturnType": "Task\u00601", + "IsApiController": false, + "Area": "Admin" + }, + { + "Controller": "Orders", + "Action": "Edit", + "Template": "api/Orders/Edit", + "HttpMethods": [ + "POST" + ], + "Parameters": [ + { + "Name": "id", + "Type": "Guid", + "IsRequired": true, + "Binding": "Query" + }, + { + "Name": "model", + "Type": "OrderDto", + "IsRequired": true, + "Binding": "Body" + } + ], + "Authentication": { + "RequiresAuthentication": true, + "AllowsAnonymous": false, + "RequiredRoles": [] + }, + "ReturnType": "Task\u00601", + "IsApiController": false, + "Area": "Admin" + }, + { + "Controller": "Orders", + "Action": "UpdateStatus", + "Template": "api/Orders/UpdateStatus", + "HttpMethods": [ + "POST" + ], + "Parameters": [ + { + "Name": "id", + "Type": "Guid", + "IsRequired": true, + "Binding": "Query" + }, + { + "Name": "model", + "Type": "UpdateOrderStatusDto", + "IsRequired": true, + "Binding": "Body" + } + ], + "Authentication": { + "RequiresAuthentication": true, + "AllowsAnonymous": false, + "RequiredRoles": [] + }, + "ReturnType": "Task\u00601", + "IsApiController": false, + "Area": "Admin" + }, + { + "Controller": "Products", + "Action": "Index", + "Template": "api/Products/Index", + "HttpMethods": [ + "GET" + ], + "Parameters": [], + "Authentication": { + "RequiresAuthentication": true, + "AllowsAnonymous": false, + "RequiredRoles": [] + }, + "ReturnType": "Task\u00601", + "IsApiController": false, + "Area": "Admin" + }, + { + "Controller": "Products", + "Action": "Create", + "Template": "api/Products/Create", + "HttpMethods": [ + "GET" + ], + "Parameters": [], + "Authentication": { + "RequiresAuthentication": true, + "AllowsAnonymous": false, + "RequiredRoles": [] + }, + "ReturnType": "Task\u00601", + "IsApiController": false, + "Area": "Admin" + }, + { + "Controller": "Products", + "Action": "Create", + "Template": "api/Products/Create", + "HttpMethods": [ + "POST" + ], + "Parameters": [ + { + "Name": "model", + "Type": "CreateProductDto", + "IsRequired": true, + "Binding": "Body" + } + ], + "Authentication": { + "RequiresAuthentication": true, + "AllowsAnonymous": false, + "RequiredRoles": [] + }, + "ReturnType": "Task\u00601", + "IsApiController": false, + "Area": "Admin" + }, + { + "Controller": "Products", + "Action": "Edit", + "Template": "api/Products/Edit", + "HttpMethods": [ + "GET" + ], + "Parameters": [ + { + "Name": "id", + "Type": "Guid", + "IsRequired": true, + "Binding": "Query" + } + ], + "Authentication": { + "RequiresAuthentication": true, + "AllowsAnonymous": false, + "RequiredRoles": [] + }, + "ReturnType": "Task\u00601", + "IsApiController": false, + "Area": "Admin" + }, + { + "Controller": "Products", + "Action": "Edit", + "Template": "api/Products/Edit", + "HttpMethods": [ + "POST" + ], + "Parameters": [ + { + "Name": "id", + "Type": "Guid", + "IsRequired": true, + "Binding": "Query" + }, + { + "Name": "model", + "Type": "UpdateProductDto", + "IsRequired": true, + "Binding": "Body" + } + ], + "Authentication": { + "RequiresAuthentication": true, + "AllowsAnonymous": false, + "RequiredRoles": [] + }, + "ReturnType": "Task\u00601", + "IsApiController": false, + "Area": "Admin" + }, + { + "Controller": "Products", + "Action": "UploadPhoto", + "Template": "api/Products/UploadPhoto", + "HttpMethods": [ + "POST" + ], + "Parameters": [ + { + "Name": "id", + "Type": "Guid", + "IsRequired": true, + "Binding": "Query" + }, + { + "Name": "file", + "Type": "IFormFile", + "IsRequired": true, + "Binding": "Body" + }, + { + "Name": "altText", + "Type": "String", + "IsRequired": true, + "Binding": "Query" + } + ], + "Authentication": { + "RequiresAuthentication": true, + "AllowsAnonymous": false, + "RequiredRoles": [] + }, + "ReturnType": "Task\u00601", + "IsApiController": false, + "Area": "Admin" + }, + { + "Controller": "Products", + "Action": "DeletePhoto", + "Template": "api/Products/DeletePhoto", + "HttpMethods": [ + "POST" + ], + "Parameters": [ + { + "Name": "id", + "Type": "Guid", + "IsRequired": true, + "Binding": "Query" + }, + { + "Name": "photoId", + "Type": "Guid", + "IsRequired": true, + "Binding": "Query" + } + ], + "Authentication": { + "RequiresAuthentication": true, + "AllowsAnonymous": false, + "RequiredRoles": [] + }, + "ReturnType": "Task\u00601", + "IsApiController": false, + "Area": "Admin" + }, + { + "Controller": "Products", + "Action": "Delete", + "Template": "api/Products/Delete", + "HttpMethods": [ + "POST" + ], + "Parameters": [ + { + "Name": "id", + "Type": "Guid", + "IsRequired": true, + "Binding": "Query" + } + ], + "Authentication": { + "RequiresAuthentication": true, + "AllowsAnonymous": false, + "RequiredRoles": [] + }, + "ReturnType": "Task\u00601", + "IsApiController": false, + "Area": "Admin" + }, + { + "Controller": "ShippingRates", + "Action": "Index", + "Template": "api/ShippingRates/Index", + "HttpMethods": [ + "GET" + ], + "Parameters": [], + "Authentication": { + "RequiresAuthentication": true, + "AllowsAnonymous": false, + "RequiredRoles": [] + }, + "ReturnType": "Task\u00601", + "IsApiController": false, + "Area": "Admin" + }, + { + "Controller": "ShippingRates", + "Action": "Create", + "Template": "api/ShippingRates/Create", + "HttpMethods": [ + "GET" + ], + "Parameters": [], + "Authentication": { + "RequiresAuthentication": true, + "AllowsAnonymous": false, + "RequiredRoles": [] + }, + "ReturnType": "IActionResult", + "IsApiController": false, + "Area": "Admin" + }, + { + "Controller": "ShippingRates", + "Action": "Create", + "Template": "api/ShippingRates/Create", + "HttpMethods": [ + "POST" + ], + "Parameters": [ + { + "Name": "model", + "Type": "CreateShippingRateDto", + "IsRequired": true, + "Binding": "Body" + } + ], + "Authentication": { + "RequiresAuthentication": true, + "AllowsAnonymous": false, + "RequiredRoles": [] + }, + "ReturnType": "Task\u00601", + "IsApiController": false, + "Area": "Admin" + }, + { + "Controller": "ShippingRates", + "Action": "Edit", + "Template": "api/ShippingRates/Edit", + "HttpMethods": [ + "GET" + ], + "Parameters": [ + { + "Name": "id", + "Type": "Guid", + "IsRequired": true, + "Binding": "Query" + } + ], + "Authentication": { + "RequiresAuthentication": true, + "AllowsAnonymous": false, + "RequiredRoles": [] + }, + "ReturnType": "Task\u00601", + "IsApiController": false, + "Area": "Admin" + }, + { + "Controller": "ShippingRates", + "Action": "Edit", + "Template": "api/ShippingRates/Edit", + "HttpMethods": [ + "POST" + ], + "Parameters": [ + { + "Name": "id", + "Type": "Guid", + "IsRequired": true, + "Binding": "Query" + }, + { + "Name": "model", + "Type": "UpdateShippingRateDto", + "IsRequired": true, + "Binding": "Body" + } + ], + "Authentication": { + "RequiresAuthentication": true, + "AllowsAnonymous": false, + "RequiredRoles": [] + }, + "ReturnType": "Task\u00601", + "IsApiController": false, + "Area": "Admin" + }, + { + "Controller": "ShippingRates", + "Action": "Delete", + "Template": "api/ShippingRates/Delete", + "HttpMethods": [ + "POST" + ], + "Parameters": [ + { + "Name": "id", + "Type": "Guid", + "IsRequired": true, + "Binding": "Query" + } + ], + "Authentication": { + "RequiresAuthentication": true, + "AllowsAnonymous": false, + "RequiredRoles": [] + }, + "ReturnType": "Task\u00601", + "IsApiController": false, + "Area": "Admin" + }, + { + "Controller": "Users", + "Action": "Index", + "Template": "api/Users/Index", + "HttpMethods": [ + "GET" + ], + "Parameters": [], + "Authentication": { + "RequiresAuthentication": true, + "AllowsAnonymous": false, + "RequiredRoles": [] + }, + "ReturnType": "Task\u00601", + "IsApiController": false, + "Area": "Admin" + }, + { + "Controller": "Users", + "Action": "Create", + "Template": "api/Users/Create", + "HttpMethods": [ + "GET" + ], + "Parameters": [], + "Authentication": { + "RequiresAuthentication": true, + "AllowsAnonymous": false, + "RequiredRoles": [] + }, + "ReturnType": "IActionResult", + "IsApiController": false, + "Area": "Admin" + }, + { + "Controller": "Users", + "Action": "Create", + "Template": "api/Users/Create", + "HttpMethods": [ + "POST" + ], + "Parameters": [ + { + "Name": "model", + "Type": "CreateUserDto", + "IsRequired": true, + "Binding": "Body" + } + ], + "Authentication": { + "RequiresAuthentication": true, + "AllowsAnonymous": false, + "RequiredRoles": [] + }, + "ReturnType": "Task\u00601", + "IsApiController": false, + "Area": "Admin" + }, + { + "Controller": "Users", + "Action": "Edit", + "Template": "api/Users/Edit", + "HttpMethods": [ + "GET" + ], + "Parameters": [ + { + "Name": "id", + "Type": "Guid", + "IsRequired": true, + "Binding": "Query" + } + ], + "Authentication": { + "RequiresAuthentication": true, + "AllowsAnonymous": false, + "RequiredRoles": [] + }, + "ReturnType": "Task\u00601", + "IsApiController": false, + "Area": "Admin" + }, + { + "Controller": "Users", + "Action": "Edit", + "Template": "api/Users/Edit", + "HttpMethods": [ + "POST" + ], + "Parameters": [ + { + "Name": "id", + "Type": "Guid", + "IsRequired": true, + "Binding": "Query" + }, + { + "Name": "model", + "Type": "UpdateUserDto", + "IsRequired": true, + "Binding": "Body" + } + ], + "Authentication": { + "RequiresAuthentication": true, + "AllowsAnonymous": false, + "RequiredRoles": [] + }, + "ReturnType": "Task\u00601", + "IsApiController": false, + "Area": "Admin" + }, + { + "Controller": "Users", + "Action": "Delete", + "Template": "api/Users/Delete", + "HttpMethods": [ + "POST" + ], + "Parameters": [ + { + "Name": "id", + "Type": "Guid", + "IsRequired": true, + "Binding": "Query" + } + ], + "Authentication": { + "RequiresAuthentication": true, + "AllowsAnonymous": false, + "RequiredRoles": [] + }, + "ReturnType": "Task\u00601", + "IsApiController": false, + "Area": "Admin" + } + ], + "Routes": [ + "api/Auth/login", + "api/bot/messages/pending", + "api/bot/messages/{id}/mark-sent", + "api/bot/messages/{id}/mark-failed", + "api/bot/messages/test-create", + "api/bot/messages/customer-create", + "api/bot/messages/customer/{customerId}", + "api/Bots/register", + "api/Bots/authenticate", + "api/Bots/settings", + "api/Bots/heartbeat", + "api/Bots/platform-info", + "api/Bots/metrics", + "api/Bots/metrics/batch", + "api/Bots/sessions/start", + "api/Bots/sessions/{sessionId}", + "api/Bots/sessions/{sessionId}/end", + "api/Bots/GetAllBots", + "api/Bots/{id}", + "api/Bots/{id}/metrics", + "api/Bots/{id}/metrics/summary", + "api/Bots/{id}/sessions", + "api/Catalog/categories", + "api/Catalog/categories/{id}", + "api/Catalog/products", + "api/Catalog/products/{id}", + "api/Customers/GetCustomers", + "api/Customers/{id}", + "api/Customers/by-telegram/{telegramUserId}", + "api/Customers/CreateCustomer", + "api/Customers/get-or-create", + "api/Customers/{id}/block", + "api/Customers/{id}/unblock", + "api/Home/Index", + "api/Messages/SendMessage", + "api/Messages/{id}", + "api/Messages/customer/{customerId}", + "api/Messages/order/{orderId}", + "api/Messages/pending", + "api/Messages/{id}/mark-sent", + "api/Messages/{id}/mark-delivered", + "api/Messages/{id}/mark-failed", + "api/Orders/GetAllOrders", + "api/Orders/{id}", + "api/Orders/{id}/status", + "api/Orders/by-identity/{identityReference}", + "api/Orders/by-customer/{customerId}", + "api/Orders/by-identity/{identityReference}/{id}", + "api/Orders/CreateOrder", + "api/Orders/{id}/payments", + "api/Orders/payments/{paymentId}/status", + "api/Orders/{id}/cancel", + "api/Orders/payments/webhook", + "api/Test/create-product", + "api/Test/setup-test-data", + "api/Account/Login", + "api/Account/Logout", + "api/Account/AccessDenied", + "api/Bots/Index", + "api/Bots/Details", + "api/Bots/Create", + "api/Bots/Wizard", + "api/Bots/CompleteWizard", + "api/Bots/Edit", + "api/Bots/Metrics", + "api/Bots/Delete", + "api/Bots/Suspend", + "api/Bots/Activate", + "api/Bots/RegenerateKey", + "api/Categories/Index", + "api/Categories/Create", + "api/Categories/Edit", + "api/Categories/Delete", + "api/Dashboard/Index", + "api/Messages/Index", + "api/Messages/Customer", + "api/Messages/Reply", + "api/Orders/Index", + "api/Orders/Details", + "api/Orders/Create", + "api/Orders/Edit", + "api/Orders/UpdateStatus", + "api/Products/Index", + "api/Products/Create", + "api/Products/Edit", + "api/Products/UploadPhoto", + "api/Products/DeletePhoto", + "api/Products/Delete", + "api/ShippingRates/Index", + "api/ShippingRates/Create", + "api/ShippingRates/Edit", + "api/ShippingRates/Delete", + "api/Users/Index", + "api/Users/Create", + "api/Users/Edit", + "api/Users/Delete" + ], + "Recommendations": [ + "Generate comprehensive integration tests for all discovered endpoints", + "Implement automated testing for each authentication state combination" + ] +} \ No newline at end of file diff --git a/LittleShop/TestAgent_Results/error_detection.json b/LittleShop/TestAgent_Results/error_detection.json new file mode 100644 index 0000000..4cb0436 --- /dev/null +++ b/LittleShop/TestAgent_Results/error_detection.json @@ -0,0 +1,1386 @@ +{ + "DeadLinks": [], + "HttpErrors": [ + { + "Url": "https://localhost:5001", + "StatusCode": 503, + "Method": "GET", + "ErrorMessage": "No connection could be made because the target machine actively refused it. (localhost:5001)", + "ResponseContent": "", + "RequestHeaders": {}, + "ResponseHeaders": {}, + "AuthenticationState": "Anonymous", + "DetectedAt": "2025-08-27T21:01:28.4136605Z", + "IsFormSubmission": false, + "FormData": null + }, + { + "Url": "https://localhost:5001/api/Auth/login", + "StatusCode": 503, + "Method": "GET", + "ErrorMessage": "No connection could be made because the target machine actively refused it. (localhost:5001)", + "ResponseContent": "", + "RequestHeaders": {}, + "ResponseHeaders": {}, + "AuthenticationState": "Anonymous", + "DetectedAt": "2025-08-27T21:01:32.5436482Z", + "IsFormSubmission": false, + "FormData": null + }, + { + "Url": "https://localhost:5001/api/bot/messages/pending", + "StatusCode": 503, + "Method": "GET", + "ErrorMessage": "No connection could be made because the target machine actively refused it. (localhost:5001)", + "ResponseContent": "", + "RequestHeaders": {}, + "ResponseHeaders": {}, + "AuthenticationState": "Anonymous", + "DetectedAt": "2025-08-27T21:01:36.6469969Z", + "IsFormSubmission": false, + "FormData": null + }, + { + "Url": "https://localhost:5001/api/bot/messages/{id}/mark-sent", + "StatusCode": 503, + "Method": "GET", + "ErrorMessage": "No connection could be made because the target machine actively refused it. (localhost:5001)", + "ResponseContent": "", + "RequestHeaders": {}, + "ResponseHeaders": {}, + "AuthenticationState": "Anonymous", + "DetectedAt": "2025-08-27T21:01:40.7476995Z", + "IsFormSubmission": false, + "FormData": null + }, + { + "Url": "https://localhost:5001/api/bot/messages/{id}/mark-failed", + "StatusCode": 503, + "Method": "GET", + "ErrorMessage": "No connection could be made because the target machine actively refused it. (localhost:5001)", + "ResponseContent": "", + "RequestHeaders": {}, + "ResponseHeaders": {}, + "AuthenticationState": "Anonymous", + "DetectedAt": "2025-08-27T21:01:44.8542098Z", + "IsFormSubmission": false, + "FormData": null + }, + { + "Url": "https://localhost:5001/api/bot/messages/test-create", + "StatusCode": 503, + "Method": "GET", + "ErrorMessage": "No connection could be made because the target machine actively refused it. (localhost:5001)", + "ResponseContent": "", + "RequestHeaders": {}, + "ResponseHeaders": {}, + "AuthenticationState": "Anonymous", + "DetectedAt": "2025-08-27T21:01:48.9511168Z", + "IsFormSubmission": false, + "FormData": null + }, + { + "Url": "https://localhost:5001/api/bot/messages/customer-create", + "StatusCode": 503, + "Method": "GET", + "ErrorMessage": "No connection could be made because the target machine actively refused it. (localhost:5001)", + "ResponseContent": "", + "RequestHeaders": {}, + "ResponseHeaders": {}, + "AuthenticationState": "Anonymous", + "DetectedAt": "2025-08-27T21:01:53.0454505Z", + "IsFormSubmission": false, + "FormData": null + }, + { + "Url": "https://localhost:5001/api/bot/messages/customer/{customerId}", + "StatusCode": 503, + "Method": "GET", + "ErrorMessage": "No connection could be made because the target machine actively refused it. (localhost:5001)", + "ResponseContent": "", + "RequestHeaders": {}, + "ResponseHeaders": {}, + "AuthenticationState": "Anonymous", + "DetectedAt": "2025-08-27T21:01:57.1338792Z", + "IsFormSubmission": false, + "FormData": null + }, + { + "Url": "https://localhost:5001/api/Bots/register", + "StatusCode": 503, + "Method": "GET", + "ErrorMessage": "No connection could be made because the target machine actively refused it. (localhost:5001)", + "ResponseContent": "", + "RequestHeaders": {}, + "ResponseHeaders": {}, + "AuthenticationState": "Anonymous", + "DetectedAt": "2025-08-27T21:02:01.232331Z", + "IsFormSubmission": false, + "FormData": null + }, + { + "Url": "https://localhost:5001/api/Bots/authenticate", + "StatusCode": 503, + "Method": "GET", + "ErrorMessage": "No connection could be made because the target machine actively refused it. (localhost:5001)", + "ResponseContent": "", + "RequestHeaders": {}, + "ResponseHeaders": {}, + "AuthenticationState": "Anonymous", + "DetectedAt": "2025-08-27T21:02:05.3330182Z", + "IsFormSubmission": false, + "FormData": null + }, + { + "Url": "https://localhost:5001/api/Bots/settings", + "StatusCode": 503, + "Method": "GET", + "ErrorMessage": "No connection could be made because the target machine actively refused it. (localhost:5001)", + "ResponseContent": "", + "RequestHeaders": {}, + "ResponseHeaders": {}, + "AuthenticationState": "Anonymous", + "DetectedAt": "2025-08-27T21:02:09.4484546Z", + "IsFormSubmission": false, + "FormData": null + }, + { + "Url": "https://localhost:5001/api/Bots/heartbeat", + "StatusCode": 503, + "Method": "GET", + "ErrorMessage": "No connection could be made because the target machine actively refused it. (localhost:5001)", + "ResponseContent": "", + "RequestHeaders": {}, + "ResponseHeaders": {}, + "AuthenticationState": "Anonymous", + "DetectedAt": "2025-08-27T21:02:13.5371766Z", + "IsFormSubmission": false, + "FormData": null + }, + { + "Url": "https://localhost:5001/api/Bots/platform-info", + "StatusCode": 503, + "Method": "GET", + "ErrorMessage": "No connection could be made because the target machine actively refused it. (localhost:5001)", + "ResponseContent": "", + "RequestHeaders": {}, + "ResponseHeaders": {}, + "AuthenticationState": "Anonymous", + "DetectedAt": "2025-08-27T21:02:17.62977Z", + "IsFormSubmission": false, + "FormData": null + }, + { + "Url": "https://localhost:5001/api/Bots/metrics", + "StatusCode": 503, + "Method": "GET", + "ErrorMessage": "No connection could be made because the target machine actively refused it. (localhost:5001)", + "ResponseContent": "", + "RequestHeaders": {}, + "ResponseHeaders": {}, + "AuthenticationState": "Anonymous", + "DetectedAt": "2025-08-27T21:02:21.7406881Z", + "IsFormSubmission": false, + "FormData": null + }, + { + "Url": "https://localhost:5001/api/Bots/metrics/batch", + "StatusCode": 503, + "Method": "GET", + "ErrorMessage": "No connection could be made because the target machine actively refused it. (localhost:5001)", + "ResponseContent": "", + "RequestHeaders": {}, + "ResponseHeaders": {}, + "AuthenticationState": "Anonymous", + "DetectedAt": "2025-08-27T21:02:25.8460004Z", + "IsFormSubmission": false, + "FormData": null + }, + { + "Url": "https://localhost:5001/api/Bots/sessions/start", + "StatusCode": 503, + "Method": "GET", + "ErrorMessage": "No connection could be made because the target machine actively refused it. (localhost:5001)", + "ResponseContent": "", + "RequestHeaders": {}, + "ResponseHeaders": {}, + "AuthenticationState": "Anonymous", + "DetectedAt": "2025-08-27T21:02:29.9369627Z", + "IsFormSubmission": false, + "FormData": null + }, + { + "Url": "https://localhost:5001/api/Bots/sessions/{sessionId}", + "StatusCode": 503, + "Method": "GET", + "ErrorMessage": "No connection could be made because the target machine actively refused it. (localhost:5001)", + "ResponseContent": "", + "RequestHeaders": {}, + "ResponseHeaders": {}, + "AuthenticationState": "Anonymous", + "DetectedAt": "2025-08-27T21:02:34.0160421Z", + "IsFormSubmission": false, + "FormData": null + }, + { + "Url": "https://localhost:5001/api/Bots/sessions/{sessionId}/end", + "StatusCode": 503, + "Method": "GET", + "ErrorMessage": "No connection could be made because the target machine actively refused it. (localhost:5001)", + "ResponseContent": "", + "RequestHeaders": {}, + "ResponseHeaders": {}, + "AuthenticationState": "Anonymous", + "DetectedAt": "2025-08-27T21:02:38.1270391Z", + "IsFormSubmission": false, + "FormData": null + }, + { + "Url": "https://localhost:5001/api/Bots/GetAllBots", + "StatusCode": 503, + "Method": "GET", + "ErrorMessage": "No connection could be made because the target machine actively refused it. (localhost:5001)", + "ResponseContent": "", + "RequestHeaders": {}, + "ResponseHeaders": {}, + "AuthenticationState": "Anonymous", + "DetectedAt": "2025-08-27T21:02:42.2021072Z", + "IsFormSubmission": false, + "FormData": null + }, + { + "Url": "https://localhost:5001/api/Bots/{id}", + "StatusCode": 503, + "Method": "GET", + "ErrorMessage": "No connection could be made because the target machine actively refused it. (localhost:5001)", + "ResponseContent": "", + "RequestHeaders": {}, + "ResponseHeaders": {}, + "AuthenticationState": "Anonymous", + "DetectedAt": "2025-08-27T21:02:46.2746696Z", + "IsFormSubmission": false, + "FormData": null + }, + { + "Url": "https://localhost:5001/api/Bots/{id}/metrics", + "StatusCode": 503, + "Method": "GET", + "ErrorMessage": "No connection could be made because the target machine actively refused it. (localhost:5001)", + "ResponseContent": "", + "RequestHeaders": {}, + "ResponseHeaders": {}, + "AuthenticationState": "Anonymous", + "DetectedAt": "2025-08-27T21:02:50.371648Z", + "IsFormSubmission": false, + "FormData": null + }, + { + "Url": "https://localhost:5001/api/Bots/{id}/metrics/summary", + "StatusCode": 503, + "Method": "GET", + "ErrorMessage": "No connection could be made because the target machine actively refused it. (localhost:5001)", + "ResponseContent": "", + "RequestHeaders": {}, + "ResponseHeaders": {}, + "AuthenticationState": "Anonymous", + "DetectedAt": "2025-08-27T21:02:54.4743135Z", + "IsFormSubmission": false, + "FormData": null + }, + { + "Url": "https://localhost:5001/api/Bots/{id}/sessions", + "StatusCode": 503, + "Method": "GET", + "ErrorMessage": "No connection could be made because the target machine actively refused it. (localhost:5001)", + "ResponseContent": "", + "RequestHeaders": {}, + "ResponseHeaders": {}, + "AuthenticationState": "Anonymous", + "DetectedAt": "2025-08-27T21:02:58.5796266Z", + "IsFormSubmission": false, + "FormData": null + }, + { + "Url": "https://localhost:5001/api/Catalog/categories", + "StatusCode": 503, + "Method": "GET", + "ErrorMessage": "No connection could be made because the target machine actively refused it. (localhost:5001)", + "ResponseContent": "", + "RequestHeaders": {}, + "ResponseHeaders": {}, + "AuthenticationState": "Anonymous", + "DetectedAt": "2025-08-27T21:03:02.6935242Z", + "IsFormSubmission": false, + "FormData": null + }, + { + "Url": "https://localhost:5001/api/Catalog/categories/{id}", + "StatusCode": 503, + "Method": "GET", + "ErrorMessage": "No connection could be made because the target machine actively refused it. (localhost:5001)", + "ResponseContent": "", + "RequestHeaders": {}, + "ResponseHeaders": {}, + "AuthenticationState": "Anonymous", + "DetectedAt": "2025-08-27T21:03:06.7861415Z", + "IsFormSubmission": false, + "FormData": null + }, + { + "Url": "https://localhost:5001/api/Catalog/products", + "StatusCode": 503, + "Method": "GET", + "ErrorMessage": "No connection could be made because the target machine actively refused it. (localhost:5001)", + "ResponseContent": "", + "RequestHeaders": {}, + "ResponseHeaders": {}, + "AuthenticationState": "Anonymous", + "DetectedAt": "2025-08-27T21:03:10.8647424Z", + "IsFormSubmission": false, + "FormData": null + }, + { + "Url": "https://localhost:5001/api/Catalog/products/{id}", + "StatusCode": 503, + "Method": "GET", + "ErrorMessage": "No connection could be made because the target machine actively refused it. (localhost:5001)", + "ResponseContent": "", + "RequestHeaders": {}, + "ResponseHeaders": {}, + "AuthenticationState": "Anonymous", + "DetectedAt": "2025-08-27T21:03:14.9635341Z", + "IsFormSubmission": false, + "FormData": null + }, + { + "Url": "https://localhost:5001/api/Customers/GetCustomers", + "StatusCode": 503, + "Method": "GET", + "ErrorMessage": "No connection could be made because the target machine actively refused it. (localhost:5001)", + "ResponseContent": "", + "RequestHeaders": {}, + "ResponseHeaders": {}, + "AuthenticationState": "Anonymous", + "DetectedAt": "2025-08-27T21:03:19.0531897Z", + "IsFormSubmission": false, + "FormData": null + }, + { + "Url": "https://localhost:5001/api/Customers/{id}", + "StatusCode": 503, + "Method": "GET", + "ErrorMessage": "No connection could be made because the target machine actively refused it. (localhost:5001)", + "ResponseContent": "", + "RequestHeaders": {}, + "ResponseHeaders": {}, + "AuthenticationState": "Anonymous", + "DetectedAt": "2025-08-27T21:03:23.1449361Z", + "IsFormSubmission": false, + "FormData": null + }, + { + "Url": "https://localhost:5001/api/Customers/by-telegram/{telegramUserId}", + "StatusCode": 503, + "Method": "GET", + "ErrorMessage": "No connection could be made because the target machine actively refused it. (localhost:5001)", + "ResponseContent": "", + "RequestHeaders": {}, + "ResponseHeaders": {}, + "AuthenticationState": "Anonymous", + "DetectedAt": "2025-08-27T21:03:27.2051658Z", + "IsFormSubmission": false, + "FormData": null + }, + { + "Url": "https://localhost:5001/api/Customers/CreateCustomer", + "StatusCode": 503, + "Method": "GET", + "ErrorMessage": "No connection could be made because the target machine actively refused it. (localhost:5001)", + "ResponseContent": "", + "RequestHeaders": {}, + "ResponseHeaders": {}, + "AuthenticationState": "Anonymous", + "DetectedAt": "2025-08-27T21:03:31.2992272Z", + "IsFormSubmission": false, + "FormData": null + }, + { + "Url": "https://localhost:5001/api/Customers/get-or-create", + "StatusCode": 503, + "Method": "GET", + "ErrorMessage": "No connection could be made because the target machine actively refused it. (localhost:5001)", + "ResponseContent": "", + "RequestHeaders": {}, + "ResponseHeaders": {}, + "AuthenticationState": "Anonymous", + "DetectedAt": "2025-08-27T21:03:35.4127184Z", + "IsFormSubmission": false, + "FormData": null + }, + { + "Url": "https://localhost:5001/api/Customers/{id}/block", + "StatusCode": 503, + "Method": "GET", + "ErrorMessage": "No connection could be made because the target machine actively refused it. (localhost:5001)", + "ResponseContent": "", + "RequestHeaders": {}, + "ResponseHeaders": {}, + "AuthenticationState": "Anonymous", + "DetectedAt": "2025-08-27T21:03:39.5164822Z", + "IsFormSubmission": false, + "FormData": null + }, + { + "Url": "https://localhost:5001/api/Customers/{id}/unblock", + "StatusCode": 503, + "Method": "GET", + "ErrorMessage": "No connection could be made because the target machine actively refused it. (localhost:5001)", + "ResponseContent": "", + "RequestHeaders": {}, + "ResponseHeaders": {}, + "AuthenticationState": "Anonymous", + "DetectedAt": "2025-08-27T21:03:43.6094425Z", + "IsFormSubmission": false, + "FormData": null + }, + { + "Url": "https://localhost:5001/api/Home/Index", + "StatusCode": 503, + "Method": "GET", + "ErrorMessage": "No connection could be made because the target machine actively refused it. (localhost:5001)", + "ResponseContent": "", + "RequestHeaders": {}, + "ResponseHeaders": {}, + "AuthenticationState": "Anonymous", + "DetectedAt": "2025-08-27T21:03:47.7123897Z", + "IsFormSubmission": false, + "FormData": null + }, + { + "Url": "https://localhost:5001/api/Messages/SendMessage", + "StatusCode": 503, + "Method": "GET", + "ErrorMessage": "No connection could be made because the target machine actively refused it. (localhost:5001)", + "ResponseContent": "", + "RequestHeaders": {}, + "ResponseHeaders": {}, + "AuthenticationState": "Anonymous", + "DetectedAt": "2025-08-27T21:03:51.8111238Z", + "IsFormSubmission": false, + "FormData": null + }, + { + "Url": "https://localhost:5001/api/Messages/{id}", + "StatusCode": 503, + "Method": "GET", + "ErrorMessage": "No connection could be made because the target machine actively refused it. (localhost:5001)", + "ResponseContent": "", + "RequestHeaders": {}, + "ResponseHeaders": {}, + "AuthenticationState": "Anonymous", + "DetectedAt": "2025-08-27T21:03:55.9120061Z", + "IsFormSubmission": false, + "FormData": null + }, + { + "Url": "https://localhost:5001/api/Messages/customer/{customerId}", + "StatusCode": 503, + "Method": "GET", + "ErrorMessage": "No connection could be made because the target machine actively refused it. (localhost:5001)", + "ResponseContent": "", + "RequestHeaders": {}, + "ResponseHeaders": {}, + "AuthenticationState": "Anonymous", + "DetectedAt": "2025-08-27T21:04:00.0263436Z", + "IsFormSubmission": false, + "FormData": null + }, + { + "Url": "https://localhost:5001/api/Messages/order/{orderId}", + "StatusCode": 503, + "Method": "GET", + "ErrorMessage": "No connection could be made because the target machine actively refused it. (localhost:5001)", + "ResponseContent": "", + "RequestHeaders": {}, + "ResponseHeaders": {}, + "AuthenticationState": "Anonymous", + "DetectedAt": "2025-08-27T21:04:04.0957564Z", + "IsFormSubmission": false, + "FormData": null + }, + { + "Url": "https://localhost:5001/api/Messages/pending", + "StatusCode": 503, + "Method": "GET", + "ErrorMessage": "No connection could be made because the target machine actively refused it. (localhost:5001)", + "ResponseContent": "", + "RequestHeaders": {}, + "ResponseHeaders": {}, + "AuthenticationState": "Anonymous", + "DetectedAt": "2025-08-27T21:04:08.1837105Z", + "IsFormSubmission": false, + "FormData": null + }, + { + "Url": "https://localhost:5001/api/Messages/{id}/mark-sent", + "StatusCode": 503, + "Method": "GET", + "ErrorMessage": "No connection could be made because the target machine actively refused it. (localhost:5001)", + "ResponseContent": "", + "RequestHeaders": {}, + "ResponseHeaders": {}, + "AuthenticationState": "Anonymous", + "DetectedAt": "2025-08-27T21:04:12.2933729Z", + "IsFormSubmission": false, + "FormData": null + }, + { + "Url": "https://localhost:5001/api/Messages/{id}/mark-delivered", + "StatusCode": 503, + "Method": "GET", + "ErrorMessage": "No connection could be made because the target machine actively refused it. (localhost:5001)", + "ResponseContent": "", + "RequestHeaders": {}, + "ResponseHeaders": {}, + "AuthenticationState": "Anonymous", + "DetectedAt": "2025-08-27T21:04:16.3972755Z", + "IsFormSubmission": false, + "FormData": null + }, + { + "Url": "https://localhost:5001/api/Messages/{id}/mark-failed", + "StatusCode": 503, + "Method": "GET", + "ErrorMessage": "No connection could be made because the target machine actively refused it. (localhost:5001)", + "ResponseContent": "", + "RequestHeaders": {}, + "ResponseHeaders": {}, + "AuthenticationState": "Anonymous", + "DetectedAt": "2025-08-27T21:04:20.5078118Z", + "IsFormSubmission": false, + "FormData": null + }, + { + "Url": "https://localhost:5001/api/Orders/GetAllOrders", + "StatusCode": 503, + "Method": "GET", + "ErrorMessage": "No connection could be made because the target machine actively refused it. (localhost:5001)", + "ResponseContent": "", + "RequestHeaders": {}, + "ResponseHeaders": {}, + "AuthenticationState": "Anonymous", + "DetectedAt": "2025-08-27T21:04:24.6140465Z", + "IsFormSubmission": false, + "FormData": null + }, + { + "Url": "https://localhost:5001/api/Orders/{id}", + "StatusCode": 503, + "Method": "GET", + "ErrorMessage": "No connection could be made because the target machine actively refused it. (localhost:5001)", + "ResponseContent": "", + "RequestHeaders": {}, + "ResponseHeaders": {}, + "AuthenticationState": "Anonymous", + "DetectedAt": "2025-08-27T21:04:28.7189056Z", + "IsFormSubmission": false, + "FormData": null + }, + { + "Url": "https://localhost:5001/api/Orders/{id}/status", + "StatusCode": 503, + "Method": "GET", + "ErrorMessage": "No connection could be made because the target machine actively refused it. (localhost:5001)", + "ResponseContent": "", + "RequestHeaders": {}, + "ResponseHeaders": {}, + "AuthenticationState": "Anonymous", + "DetectedAt": "2025-08-27T21:04:32.8146936Z", + "IsFormSubmission": false, + "FormData": null + }, + { + "Url": "https://localhost:5001/api/Orders/by-identity/{identityReference}", + "StatusCode": 503, + "Method": "GET", + "ErrorMessage": "No connection could be made because the target machine actively refused it. (localhost:5001)", + "ResponseContent": "", + "RequestHeaders": {}, + "ResponseHeaders": {}, + "AuthenticationState": "Anonymous", + "DetectedAt": "2025-08-27T21:04:36.9277025Z", + "IsFormSubmission": false, + "FormData": null + }, + { + "Url": "https://localhost:5001/api/Orders/by-customer/{customerId}", + "StatusCode": 503, + "Method": "GET", + "ErrorMessage": "No connection could be made because the target machine actively refused it. (localhost:5001)", + "ResponseContent": "", + "RequestHeaders": {}, + "ResponseHeaders": {}, + "AuthenticationState": "Anonymous", + "DetectedAt": "2025-08-27T21:04:41.0367094Z", + "IsFormSubmission": false, + "FormData": null + }, + { + "Url": "https://localhost:5001/api/Orders/by-identity/{identityReference}/{id}", + "StatusCode": 503, + "Method": "GET", + "ErrorMessage": "No connection could be made because the target machine actively refused it. (localhost:5001)", + "ResponseContent": "", + "RequestHeaders": {}, + "ResponseHeaders": {}, + "AuthenticationState": "Anonymous", + "DetectedAt": "2025-08-27T21:04:45.1452805Z", + "IsFormSubmission": false, + "FormData": null + }, + { + "Url": "https://localhost:5001/api/Orders/CreateOrder", + "StatusCode": 503, + "Method": "GET", + "ErrorMessage": "No connection could be made because the target machine actively refused it. (localhost:5001)", + "ResponseContent": "", + "RequestHeaders": {}, + "ResponseHeaders": {}, + "AuthenticationState": "Anonymous", + "DetectedAt": "2025-08-27T21:04:49.2507478Z", + "IsFormSubmission": false, + "FormData": null + }, + { + "Url": "https://localhost:5001/api/Orders/{id}/payments", + "StatusCode": 503, + "Method": "GET", + "ErrorMessage": "No connection could be made because the target machine actively refused it. (localhost:5001)", + "ResponseContent": "", + "RequestHeaders": {}, + "ResponseHeaders": {}, + "AuthenticationState": "Anonymous", + "DetectedAt": "2025-08-27T21:04:53.3592069Z", + "IsFormSubmission": false, + "FormData": null + }, + { + "Url": "https://localhost:5001/api/Orders/payments/{paymentId}/status", + "StatusCode": 503, + "Method": "GET", + "ErrorMessage": "No connection could be made because the target machine actively refused it. (localhost:5001)", + "ResponseContent": "", + "RequestHeaders": {}, + "ResponseHeaders": {}, + "AuthenticationState": "Anonymous", + "DetectedAt": "2025-08-27T21:04:57.4483854Z", + "IsFormSubmission": false, + "FormData": null + }, + { + "Url": "https://localhost:5001/api/Orders/{id}/cancel", + "StatusCode": 503, + "Method": "GET", + "ErrorMessage": "No connection could be made because the target machine actively refused it. (localhost:5001)", + "ResponseContent": "", + "RequestHeaders": {}, + "ResponseHeaders": {}, + "AuthenticationState": "Anonymous", + "DetectedAt": "2025-08-27T21:05:01.5250997Z", + "IsFormSubmission": false, + "FormData": null + }, + { + "Url": "https://localhost:5001/api/Orders/payments/webhook", + "StatusCode": 503, + "Method": "GET", + "ErrorMessage": "No connection could be made because the target machine actively refused it. (localhost:5001)", + "ResponseContent": "", + "RequestHeaders": {}, + "ResponseHeaders": {}, + "AuthenticationState": "Anonymous", + "DetectedAt": "2025-08-27T21:05:05.6162125Z", + "IsFormSubmission": false, + "FormData": null + }, + { + "Url": "https://localhost:5001/api/Test/create-product", + "StatusCode": 503, + "Method": "GET", + "ErrorMessage": "No connection could be made because the target machine actively refused it. (localhost:5001)", + "ResponseContent": "", + "RequestHeaders": {}, + "ResponseHeaders": {}, + "AuthenticationState": "Anonymous", + "DetectedAt": "2025-08-27T21:05:09.7291304Z", + "IsFormSubmission": false, + "FormData": null + }, + { + "Url": "https://localhost:5001/api/Test/setup-test-data", + "StatusCode": 503, + "Method": "GET", + "ErrorMessage": "No connection could be made because the target machine actively refused it. (localhost:5001)", + "ResponseContent": "", + "RequestHeaders": {}, + "ResponseHeaders": {}, + "AuthenticationState": "Anonymous", + "DetectedAt": "2025-08-27T21:05:13.8328986Z", + "IsFormSubmission": false, + "FormData": null + }, + { + "Url": "https://localhost:5001/api/Account/Login", + "StatusCode": 503, + "Method": "GET", + "ErrorMessage": "No connection could be made because the target machine actively refused it. (localhost:5001)", + "ResponseContent": "", + "RequestHeaders": {}, + "ResponseHeaders": {}, + "AuthenticationState": "Anonymous", + "DetectedAt": "2025-08-27T21:05:17.9426604Z", + "IsFormSubmission": false, + "FormData": null + }, + { + "Url": "https://localhost:5001/api/Account/Logout", + "StatusCode": 503, + "Method": "GET", + "ErrorMessage": "No connection could be made because the target machine actively refused it. (localhost:5001)", + "ResponseContent": "", + "RequestHeaders": {}, + "ResponseHeaders": {}, + "AuthenticationState": "Anonymous", + "DetectedAt": "2025-08-27T21:05:22.0380505Z", + "IsFormSubmission": false, + "FormData": null + }, + { + "Url": "https://localhost:5001/api/Account/AccessDenied", + "StatusCode": 503, + "Method": "GET", + "ErrorMessage": "No connection could be made because the target machine actively refused it. (localhost:5001)", + "ResponseContent": "", + "RequestHeaders": {}, + "ResponseHeaders": {}, + "AuthenticationState": "Anonymous", + "DetectedAt": "2025-08-27T21:05:26.132658Z", + "IsFormSubmission": false, + "FormData": null + }, + { + "Url": "https://localhost:5001/api/Bots/Index", + "StatusCode": 503, + "Method": "GET", + "ErrorMessage": "No connection could be made because the target machine actively refused it. (localhost:5001)", + "ResponseContent": "", + "RequestHeaders": {}, + "ResponseHeaders": {}, + "AuthenticationState": "Anonymous", + "DetectedAt": "2025-08-27T21:05:30.2398169Z", + "IsFormSubmission": false, + "FormData": null + }, + { + "Url": "https://localhost:5001/api/Bots/Details", + "StatusCode": 503, + "Method": "GET", + "ErrorMessage": "No connection could be made because the target machine actively refused it. (localhost:5001)", + "ResponseContent": "", + "RequestHeaders": {}, + "ResponseHeaders": {}, + "AuthenticationState": "Anonymous", + "DetectedAt": "2025-08-27T21:05:34.3611802Z", + "IsFormSubmission": false, + "FormData": null + }, + { + "Url": "https://localhost:5001/api/Bots/Create", + "StatusCode": 503, + "Method": "GET", + "ErrorMessage": "No connection could be made because the target machine actively refused it. (localhost:5001)", + "ResponseContent": "", + "RequestHeaders": {}, + "ResponseHeaders": {}, + "AuthenticationState": "Anonymous", + "DetectedAt": "2025-08-27T21:05:38.4911537Z", + "IsFormSubmission": false, + "FormData": null + }, + { + "Url": "https://localhost:5001/api/Bots/Wizard", + "StatusCode": 503, + "Method": "GET", + "ErrorMessage": "No connection could be made because the target machine actively refused it. (localhost:5001)", + "ResponseContent": "", + "RequestHeaders": {}, + "ResponseHeaders": {}, + "AuthenticationState": "Anonymous", + "DetectedAt": "2025-08-27T21:05:42.5907293Z", + "IsFormSubmission": false, + "FormData": null + }, + { + "Url": "https://localhost:5001/api/Bots/CompleteWizard", + "StatusCode": 503, + "Method": "GET", + "ErrorMessage": "No connection could be made because the target machine actively refused it. (localhost:5001)", + "ResponseContent": "", + "RequestHeaders": {}, + "ResponseHeaders": {}, + "AuthenticationState": "Anonymous", + "DetectedAt": "2025-08-27T21:05:46.6953453Z", + "IsFormSubmission": false, + "FormData": null + }, + { + "Url": "https://localhost:5001/api/Bots/Edit", + "StatusCode": 503, + "Method": "GET", + "ErrorMessage": "No connection could be made because the target machine actively refused it. (localhost:5001)", + "ResponseContent": "", + "RequestHeaders": {}, + "ResponseHeaders": {}, + "AuthenticationState": "Anonymous", + "DetectedAt": "2025-08-27T21:05:50.7952952Z", + "IsFormSubmission": false, + "FormData": null + }, + { + "Url": "https://localhost:5001/api/Bots/Metrics", + "StatusCode": 503, + "Method": "GET", + "ErrorMessage": "No connection could be made because the target machine actively refused it. (localhost:5001)", + "ResponseContent": "", + "RequestHeaders": {}, + "ResponseHeaders": {}, + "AuthenticationState": "Anonymous", + "DetectedAt": "2025-08-27T21:05:54.9143643Z", + "IsFormSubmission": false, + "FormData": null + }, + { + "Url": "https://localhost:5001/api/Bots/Delete", + "StatusCode": 503, + "Method": "GET", + "ErrorMessage": "No connection could be made because the target machine actively refused it. (localhost:5001)", + "ResponseContent": "", + "RequestHeaders": {}, + "ResponseHeaders": {}, + "AuthenticationState": "Anonymous", + "DetectedAt": "2025-08-27T21:05:59.0163648Z", + "IsFormSubmission": false, + "FormData": null + }, + { + "Url": "https://localhost:5001/api/Bots/Suspend", + "StatusCode": 503, + "Method": "GET", + "ErrorMessage": "No connection could be made because the target machine actively refused it. (localhost:5001)", + "ResponseContent": "", + "RequestHeaders": {}, + "ResponseHeaders": {}, + "AuthenticationState": "Anonymous", + "DetectedAt": "2025-08-27T21:06:03.1186323Z", + "IsFormSubmission": false, + "FormData": null + }, + { + "Url": "https://localhost:5001/api/Bots/Activate", + "StatusCode": 503, + "Method": "GET", + "ErrorMessage": "No connection could be made because the target machine actively refused it. (localhost:5001)", + "ResponseContent": "", + "RequestHeaders": {}, + "ResponseHeaders": {}, + "AuthenticationState": "Anonymous", + "DetectedAt": "2025-08-27T21:06:07.2022025Z", + "IsFormSubmission": false, + "FormData": null + }, + { + "Url": "https://localhost:5001/api/Bots/RegenerateKey", + "StatusCode": 503, + "Method": "GET", + "ErrorMessage": "No connection could be made because the target machine actively refused it. (localhost:5001)", + "ResponseContent": "", + "RequestHeaders": {}, + "ResponseHeaders": {}, + "AuthenticationState": "Anonymous", + "DetectedAt": "2025-08-27T21:06:11.3097333Z", + "IsFormSubmission": false, + "FormData": null + }, + { + "Url": "https://localhost:5001/api/Categories/Index", + "StatusCode": 503, + "Method": "GET", + "ErrorMessage": "No connection could be made because the target machine actively refused it. (localhost:5001)", + "ResponseContent": "", + "RequestHeaders": {}, + "ResponseHeaders": {}, + "AuthenticationState": "Anonymous", + "DetectedAt": "2025-08-27T21:06:15.4086275Z", + "IsFormSubmission": false, + "FormData": null + }, + { + "Url": "https://localhost:5001/api/Categories/Create", + "StatusCode": 503, + "Method": "GET", + "ErrorMessage": "No connection could be made because the target machine actively refused it. (localhost:5001)", + "ResponseContent": "", + "RequestHeaders": {}, + "ResponseHeaders": {}, + "AuthenticationState": "Anonymous", + "DetectedAt": "2025-08-27T21:06:19.5136129Z", + "IsFormSubmission": false, + "FormData": null + }, + { + "Url": "https://localhost:5001/api/Categories/Edit", + "StatusCode": 503, + "Method": "GET", + "ErrorMessage": "No connection could be made because the target machine actively refused it. (localhost:5001)", + "ResponseContent": "", + "RequestHeaders": {}, + "ResponseHeaders": {}, + "AuthenticationState": "Anonymous", + "DetectedAt": "2025-08-27T21:06:23.6274057Z", + "IsFormSubmission": false, + "FormData": null + }, + { + "Url": "https://localhost:5001/api/Categories/Delete", + "StatusCode": 503, + "Method": "GET", + "ErrorMessage": "No connection could be made because the target machine actively refused it. (localhost:5001)", + "ResponseContent": "", + "RequestHeaders": {}, + "ResponseHeaders": {}, + "AuthenticationState": "Anonymous", + "DetectedAt": "2025-08-27T21:06:27.7263273Z", + "IsFormSubmission": false, + "FormData": null + }, + { + "Url": "https://localhost:5001/api/Dashboard/Index", + "StatusCode": 503, + "Method": "GET", + "ErrorMessage": "No connection could be made because the target machine actively refused it. (localhost:5001)", + "ResponseContent": "", + "RequestHeaders": {}, + "ResponseHeaders": {}, + "AuthenticationState": "Anonymous", + "DetectedAt": "2025-08-27T21:06:31.8379425Z", + "IsFormSubmission": false, + "FormData": null + }, + { + "Url": "https://localhost:5001/api/Messages/Index", + "StatusCode": 503, + "Method": "GET", + "ErrorMessage": "No connection could be made because the target machine actively refused it. (localhost:5001)", + "ResponseContent": "", + "RequestHeaders": {}, + "ResponseHeaders": {}, + "AuthenticationState": "Anonymous", + "DetectedAt": "2025-08-27T21:06:35.9331167Z", + "IsFormSubmission": false, + "FormData": null + }, + { + "Url": "https://localhost:5001/api/Messages/Customer", + "StatusCode": 503, + "Method": "GET", + "ErrorMessage": "No connection could be made because the target machine actively refused it. (localhost:5001)", + "ResponseContent": "", + "RequestHeaders": {}, + "ResponseHeaders": {}, + "AuthenticationState": "Anonymous", + "DetectedAt": "2025-08-27T21:06:40.0351949Z", + "IsFormSubmission": false, + "FormData": null + }, + { + "Url": "https://localhost:5001/api/Messages/Reply", + "StatusCode": 503, + "Method": "GET", + "ErrorMessage": "No connection could be made because the target machine actively refused it. (localhost:5001)", + "ResponseContent": "", + "RequestHeaders": {}, + "ResponseHeaders": {}, + "AuthenticationState": "Anonymous", + "DetectedAt": "2025-08-27T21:06:44.1463343Z", + "IsFormSubmission": false, + "FormData": null + }, + { + "Url": "https://localhost:5001/api/Orders/Index", + "StatusCode": 503, + "Method": "GET", + "ErrorMessage": "No connection could be made because the target machine actively refused it. (localhost:5001)", + "ResponseContent": "", + "RequestHeaders": {}, + "ResponseHeaders": {}, + "AuthenticationState": "Anonymous", + "DetectedAt": "2025-08-27T21:06:48.238581Z", + "IsFormSubmission": false, + "FormData": null + }, + { + "Url": "https://localhost:5001/api/Orders/Details", + "StatusCode": 503, + "Method": "GET", + "ErrorMessage": "No connection could be made because the target machine actively refused it. (localhost:5001)", + "ResponseContent": "", + "RequestHeaders": {}, + "ResponseHeaders": {}, + "AuthenticationState": "Anonymous", + "DetectedAt": "2025-08-27T21:06:52.3489959Z", + "IsFormSubmission": false, + "FormData": null + }, + { + "Url": "https://localhost:5001/api/Orders/Create", + "StatusCode": 503, + "Method": "GET", + "ErrorMessage": "No connection could be made because the target machine actively refused it. (localhost:5001)", + "ResponseContent": "", + "RequestHeaders": {}, + "ResponseHeaders": {}, + "AuthenticationState": "Anonymous", + "DetectedAt": "2025-08-27T21:06:56.428006Z", + "IsFormSubmission": false, + "FormData": null + }, + { + "Url": "https://localhost:5001/api/Orders/Edit", + "StatusCode": 503, + "Method": "GET", + "ErrorMessage": "No connection could be made because the target machine actively refused it. (localhost:5001)", + "ResponseContent": "", + "RequestHeaders": {}, + "ResponseHeaders": {}, + "AuthenticationState": "Anonymous", + "DetectedAt": "2025-08-27T21:07:00.5241235Z", + "IsFormSubmission": false, + "FormData": null + }, + { + "Url": "https://localhost:5001/api/Orders/UpdateStatus", + "StatusCode": 503, + "Method": "GET", + "ErrorMessage": "No connection could be made because the target machine actively refused it. (localhost:5001)", + "ResponseContent": "", + "RequestHeaders": {}, + "ResponseHeaders": {}, + "AuthenticationState": "Anonymous", + "DetectedAt": "2025-08-27T21:07:04.6177956Z", + "IsFormSubmission": false, + "FormData": null + }, + { + "Url": "https://localhost:5001/api/Products/Index", + "StatusCode": 503, + "Method": "GET", + "ErrorMessage": "No connection could be made because the target machine actively refused it. (localhost:5001)", + "ResponseContent": "", + "RequestHeaders": {}, + "ResponseHeaders": {}, + "AuthenticationState": "Anonymous", + "DetectedAt": "2025-08-27T21:07:08.6951581Z", + "IsFormSubmission": false, + "FormData": null + }, + { + "Url": "https://localhost:5001/api/Products/Create", + "StatusCode": 503, + "Method": "GET", + "ErrorMessage": "No connection could be made because the target machine actively refused it. (localhost:5001)", + "ResponseContent": "", + "RequestHeaders": {}, + "ResponseHeaders": {}, + "AuthenticationState": "Anonymous", + "DetectedAt": "2025-08-27T21:07:12.7712549Z", + "IsFormSubmission": false, + "FormData": null + }, + { + "Url": "https://localhost:5001/api/Products/Edit", + "StatusCode": 503, + "Method": "GET", + "ErrorMessage": "No connection could be made because the target machine actively refused it. (localhost:5001)", + "ResponseContent": "", + "RequestHeaders": {}, + "ResponseHeaders": {}, + "AuthenticationState": "Anonymous", + "DetectedAt": "2025-08-27T21:07:16.8580047Z", + "IsFormSubmission": false, + "FormData": null + }, + { + "Url": "https://localhost:5001/api/Products/UploadPhoto", + "StatusCode": 503, + "Method": "GET", + "ErrorMessage": "No connection could be made because the target machine actively refused it. (localhost:5001)", + "ResponseContent": "", + "RequestHeaders": {}, + "ResponseHeaders": {}, + "AuthenticationState": "Anonymous", + "DetectedAt": "2025-08-27T21:07:20.952471Z", + "IsFormSubmission": false, + "FormData": null + }, + { + "Url": "https://localhost:5001/api/Products/DeletePhoto", + "StatusCode": 503, + "Method": "GET", + "ErrorMessage": "No connection could be made because the target machine actively refused it. (localhost:5001)", + "ResponseContent": "", + "RequestHeaders": {}, + "ResponseHeaders": {}, + "AuthenticationState": "Anonymous", + "DetectedAt": "2025-08-27T21:07:25.0647841Z", + "IsFormSubmission": false, + "FormData": null + }, + { + "Url": "https://localhost:5001/api/Products/Delete", + "StatusCode": 503, + "Method": "GET", + "ErrorMessage": "No connection could be made because the target machine actively refused it. (localhost:5001)", + "ResponseContent": "", + "RequestHeaders": {}, + "ResponseHeaders": {}, + "AuthenticationState": "Anonymous", + "DetectedAt": "2025-08-27T21:07:29.1780938Z", + "IsFormSubmission": false, + "FormData": null + }, + { + "Url": "https://localhost:5001/api/ShippingRates/Index", + "StatusCode": 503, + "Method": "GET", + "ErrorMessage": "No connection could be made because the target machine actively refused it. (localhost:5001)", + "ResponseContent": "", + "RequestHeaders": {}, + "ResponseHeaders": {}, + "AuthenticationState": "Anonymous", + "DetectedAt": "2025-08-27T21:07:33.2450233Z", + "IsFormSubmission": false, + "FormData": null + }, + { + "Url": "https://localhost:5001/api/ShippingRates/Create", + "StatusCode": 503, + "Method": "GET", + "ErrorMessage": "No connection could be made because the target machine actively refused it. (localhost:5001)", + "ResponseContent": "", + "RequestHeaders": {}, + "ResponseHeaders": {}, + "AuthenticationState": "Anonymous", + "DetectedAt": "2025-08-27T21:07:37.3162413Z", + "IsFormSubmission": false, + "FormData": null + }, + { + "Url": "https://localhost:5001/api/ShippingRates/Edit", + "StatusCode": 503, + "Method": "GET", + "ErrorMessage": "No connection could be made because the target machine actively refused it. (localhost:5001)", + "ResponseContent": "", + "RequestHeaders": {}, + "ResponseHeaders": {}, + "AuthenticationState": "Anonymous", + "DetectedAt": "2025-08-27T21:07:41.410048Z", + "IsFormSubmission": false, + "FormData": null + }, + { + "Url": "https://localhost:5001/api/ShippingRates/Delete", + "StatusCode": 503, + "Method": "GET", + "ErrorMessage": "No connection could be made because the target machine actively refused it. (localhost:5001)", + "ResponseContent": "", + "RequestHeaders": {}, + "ResponseHeaders": {}, + "AuthenticationState": "Anonymous", + "DetectedAt": "2025-08-27T21:07:45.5106106Z", + "IsFormSubmission": false, + "FormData": null + }, + { + "Url": "https://localhost:5001/api/Users/Index", + "StatusCode": 503, + "Method": "GET", + "ErrorMessage": "No connection could be made because the target machine actively refused it. (localhost:5001)", + "ResponseContent": "", + "RequestHeaders": {}, + "ResponseHeaders": {}, + "AuthenticationState": "Anonymous", + "DetectedAt": "2025-08-27T21:07:49.6152188Z", + "IsFormSubmission": false, + "FormData": null + }, + { + "Url": "https://localhost:5001/api/Users/Create", + "StatusCode": 503, + "Method": "GET", + "ErrorMessage": "No connection could be made because the target machine actively refused it. (localhost:5001)", + "ResponseContent": "", + "RequestHeaders": {}, + "ResponseHeaders": {}, + "AuthenticationState": "Anonymous", + "DetectedAt": "2025-08-27T21:07:53.7222161Z", + "IsFormSubmission": false, + "FormData": null + }, + { + "Url": "https://localhost:5001/api/Users/Edit", + "StatusCode": 503, + "Method": "GET", + "ErrorMessage": "No connection could be made because the target machine actively refused it. (localhost:5001)", + "ResponseContent": "", + "RequestHeaders": {}, + "ResponseHeaders": {}, + "AuthenticationState": "Anonymous", + "DetectedAt": "2025-08-27T21:07:57.8234889Z", + "IsFormSubmission": false, + "FormData": null + }, + { + "Url": "https://localhost:5001/api/Users/Delete", + "StatusCode": 503, + "Method": "GET", + "ErrorMessage": "No connection could be made because the target machine actively refused it. (localhost:5001)", + "ResponseContent": "", + "RequestHeaders": {}, + "ResponseHeaders": {}, + "AuthenticationState": "Anonymous", + "DetectedAt": "2025-08-27T21:08:01.8909603Z", + "IsFormSubmission": false, + "FormData": null + } + ], + "JavaScriptErrors": [], + "FormErrors": [], + "ResourceErrors": [], + "Summary": { + "TotalUrls": 97, + "TestedUrls": 97, + "DeadLinks": 0, + "HttpErrors": 97, + "JavaScriptErrors": 0, + "FormErrors": 0, + "ResourceErrors": 0, + "SuccessRate": 0, + "MostCommonErrors": [ + "ServiceUnavailable (97 occurrences)" + ], + "Recommendations": [ + "Overall success rate is below 95% - prioritize fixing critical errors", + "Implement automated monitoring for dead links and errors in CI/CD pipeline" + ] + }, + "TestedUrls": [ + "https://localhost:5001", + "https://localhost:5001/api/Auth/login", + "https://localhost:5001/api/bot/messages/pending", + "https://localhost:5001/api/bot/messages/{id}/mark-sent", + "https://localhost:5001/api/bot/messages/{id}/mark-failed", + "https://localhost:5001/api/bot/messages/test-create", + "https://localhost:5001/api/bot/messages/customer-create", + "https://localhost:5001/api/bot/messages/customer/{customerId}", + "https://localhost:5001/api/Bots/register", + "https://localhost:5001/api/Bots/authenticate", + "https://localhost:5001/api/Bots/settings", + "https://localhost:5001/api/Bots/heartbeat", + "https://localhost:5001/api/Bots/platform-info", + "https://localhost:5001/api/Bots/metrics", + "https://localhost:5001/api/Bots/metrics/batch", + "https://localhost:5001/api/Bots/sessions/start", + "https://localhost:5001/api/Bots/sessions/{sessionId}", + "https://localhost:5001/api/Bots/sessions/{sessionId}/end", + "https://localhost:5001/api/Bots/GetAllBots", + "https://localhost:5001/api/Bots/{id}", + "https://localhost:5001/api/Bots/{id}/metrics", + "https://localhost:5001/api/Bots/{id}/metrics/summary", + "https://localhost:5001/api/Bots/{id}/sessions", + "https://localhost:5001/api/Catalog/categories", + "https://localhost:5001/api/Catalog/categories/{id}", + "https://localhost:5001/api/Catalog/products", + "https://localhost:5001/api/Catalog/products/{id}", + "https://localhost:5001/api/Customers/GetCustomers", + "https://localhost:5001/api/Customers/{id}", + "https://localhost:5001/api/Customers/by-telegram/{telegramUserId}", + "https://localhost:5001/api/Customers/CreateCustomer", + "https://localhost:5001/api/Customers/get-or-create", + "https://localhost:5001/api/Customers/{id}/block", + "https://localhost:5001/api/Customers/{id}/unblock", + "https://localhost:5001/api/Home/Index", + "https://localhost:5001/api/Messages/SendMessage", + "https://localhost:5001/api/Messages/{id}", + "https://localhost:5001/api/Messages/customer/{customerId}", + "https://localhost:5001/api/Messages/order/{orderId}", + "https://localhost:5001/api/Messages/pending", + "https://localhost:5001/api/Messages/{id}/mark-sent", + "https://localhost:5001/api/Messages/{id}/mark-delivered", + "https://localhost:5001/api/Messages/{id}/mark-failed", + "https://localhost:5001/api/Orders/GetAllOrders", + "https://localhost:5001/api/Orders/{id}", + "https://localhost:5001/api/Orders/{id}/status", + "https://localhost:5001/api/Orders/by-identity/{identityReference}", + "https://localhost:5001/api/Orders/by-customer/{customerId}", + "https://localhost:5001/api/Orders/by-identity/{identityReference}/{id}", + "https://localhost:5001/api/Orders/CreateOrder", + "https://localhost:5001/api/Orders/{id}/payments", + "https://localhost:5001/api/Orders/payments/{paymentId}/status", + "https://localhost:5001/api/Orders/{id}/cancel", + "https://localhost:5001/api/Orders/payments/webhook", + "https://localhost:5001/api/Test/create-product", + "https://localhost:5001/api/Test/setup-test-data", + "https://localhost:5001/api/Account/Login", + "https://localhost:5001/api/Account/Logout", + "https://localhost:5001/api/Account/AccessDenied", + "https://localhost:5001/api/Bots/Index", + "https://localhost:5001/api/Bots/Details", + "https://localhost:5001/api/Bots/Create", + "https://localhost:5001/api/Bots/Wizard", + "https://localhost:5001/api/Bots/CompleteWizard", + "https://localhost:5001/api/Bots/Edit", + "https://localhost:5001/api/Bots/Metrics", + "https://localhost:5001/api/Bots/Delete", + "https://localhost:5001/api/Bots/Suspend", + "https://localhost:5001/api/Bots/Activate", + "https://localhost:5001/api/Bots/RegenerateKey", + "https://localhost:5001/api/Categories/Index", + "https://localhost:5001/api/Categories/Create", + "https://localhost:5001/api/Categories/Edit", + "https://localhost:5001/api/Categories/Delete", + "https://localhost:5001/api/Dashboard/Index", + "https://localhost:5001/api/Messages/Index", + "https://localhost:5001/api/Messages/Customer", + "https://localhost:5001/api/Messages/Reply", + "https://localhost:5001/api/Orders/Index", + "https://localhost:5001/api/Orders/Details", + "https://localhost:5001/api/Orders/Create", + "https://localhost:5001/api/Orders/Edit", + "https://localhost:5001/api/Orders/UpdateStatus", + "https://localhost:5001/api/Products/Index", + "https://localhost:5001/api/Products/Create", + "https://localhost:5001/api/Products/Edit", + "https://localhost:5001/api/Products/UploadPhoto", + "https://localhost:5001/api/Products/DeletePhoto", + "https://localhost:5001/api/Products/Delete", + "https://localhost:5001/api/ShippingRates/Index", + "https://localhost:5001/api/ShippingRates/Create", + "https://localhost:5001/api/ShippingRates/Edit", + "https://localhost:5001/api/ShippingRates/Delete", + "https://localhost:5001/api/Users/Index", + "https://localhost:5001/api/Users/Create", + "https://localhost:5001/api/Users/Edit", + "https://localhost:5001/api/Users/Delete" + ], + "SkippedUrls": [] +} \ No newline at end of file diff --git a/LittleShop/TestAgent_Results/executive_summary.json b/LittleShop/TestAgent_Results/executive_summary.json new file mode 100644 index 0000000..814b084 --- /dev/null +++ b/LittleShop/TestAgent_Results/executive_summary.json @@ -0,0 +1,31 @@ +{ + "ProjectPath": "C:\\Production\\Source\\LittleShop\\LittleShop", + "ProjectType": "Project (ASP.NET Core)", + "TotalEndpoints": 115, + "AuthenticatedEndpoints": 78, + "TestableStates": 3, + "IdentifiedGaps": 224, + "SuggestedTests": 190, + "DeadLinks": 0, + "HttpErrors": 97, + "VisualIssues": 0, + "SecurityInsights": 1, + "PerformanceInsights": 1, + "OverallTestCoverage": 16.956521739130434, + "VisualConsistencyScore": 0, + "CriticalRecommendations": [ + "CRITICAL: Test coverage is only 17.0% - implement comprehensive test suite", + "HIGH: Address 97 HTTP errors in the application", + "MEDIUM: Improve visual consistency - current score 0.0%", + "HIGH: Address 224 testing gaps for comprehensive coverage" + ], + "GeneratedFiles": [ + "C:\\Production\\Source\\LittleShop\\LittleShop\\TestAgent_Results\\project_structure.json", + "C:\\Production\\Source\\LittleShop\\LittleShop\\TestAgent_Results\\authentication_analysis.json", + "C:\\Production\\Source\\LittleShop\\LittleShop\\TestAgent_Results\\endpoint_discovery.json", + "C:\\Production\\Source\\LittleShop\\LittleShop\\TestAgent_Results\\coverage_analysis.json", + "C:\\Production\\Source\\LittleShop\\LittleShop\\TestAgent_Results\\error_detection.json", + "C:\\Production\\Source\\LittleShop\\LittleShop\\TestAgent_Results\\visual_testing.json", + "C:\\Production\\Source\\LittleShop\\LittleShop\\TestAgent_Results\\intelligent_analysis.json" + ] +} \ No newline at end of file diff --git a/LittleShop/TestAgent_Results/intelligent_analysis.json b/LittleShop/TestAgent_Results/intelligent_analysis.json new file mode 100644 index 0000000..d2adbb6 --- /dev/null +++ b/LittleShop/TestAgent_Results/intelligent_analysis.json @@ -0,0 +1,79 @@ +{ + "BusinessLogicInsights": [ + { + "Component": "Claude CLI Integration", + "Insight": "Error analyzing business logic: Failed to execute Claude CLI: An error occurred trying to start process \u0027claude\u0027 with working directory \u0027C:\\Production\\Source\\TestAgent\u0027. The system cannot find the file specified.", + "Complexity": "Unknown", + "PotentialIssues": [], + "TestingRecommendations": [], + "Priority": "Medium" + } + ], + "TestScenarioSuggestions": [ + { + "ScenarioName": "Claude CLI Integration Error", + "Description": "Error generating test scenarios: Failed to execute Claude CLI: An error occurred trying to start process \u0027claude\u0027 with working directory \u0027C:\\Production\\Source\\TestAgent\u0027. The system cannot find the file specified.", + "TestType": "", + "Steps": [], + "ExpectedOutcomes": [], + "Priority": "Medium", + "RequiredData": [], + "Dependencies": [] + } + ], + "SecurityInsights": [ + { + "VulnerabilityType": "Analysis Error", + "Location": "", + "Description": "Error analyzing security: Failed to execute Claude CLI: An error occurred trying to start process \u0027claude\u0027 with working directory \u0027C:\\Production\\Source\\TestAgent\u0027. The system cannot find the file specified.", + "Severity": "Medium", + "Recommendations": [], + "TestingApproaches": [] + } + ], + "PerformanceInsights": [ + { + "Component": "Analysis Error", + "PotentialBottleneck": "Error analyzing performance: Failed to execute Claude CLI: An error occurred trying to start process \u0027claude\u0027 with working directory \u0027C:\\Production\\Source\\TestAgent\u0027. The system cannot find the file specified.", + "Impact": "Unknown", + "OptimizationSuggestions": [], + "TestingStrategies": [] + } + ], + "ArchitecturalRecommendations": [ + { + "Category": "Analysis Error", + "Recommendation": "Error generating architectural recommendations: Failed to execute Claude CLI: An error occurred trying to start process \u0027claude\u0027 with working directory \u0027C:\\Production\\Source\\TestAgent\u0027. The system cannot find the file specified.", + "Rationale": "", + "Impact": "Unknown", + "ImplementationSteps": [] + } + ], + "GeneratedTestCases": [ + { + "TestName": "Claude CLI Integration Error", + "TestCategory": "Error", + "Description": "Error generating test cases: Failed to execute Claude CLI: An error occurred trying to start process \u0027claude\u0027 with working directory \u0027C:\\Production\\Source\\TestAgent\u0027. The system cannot find the file specified.", + "TestCode": "", + "TestData": [], + "ExpectedOutcome": "", + "Reasoning": "" + } + ], + "Summary": { + "TotalInsights": 4, + "HighPriorityItems": 0, + "GeneratedTestCases": 1, + "SecurityIssuesFound": 1, + "PerformanceOptimizations": 1, + "KeyFindings": [ + "Performance optimization opportunities identified" + ], + "NextSteps": [ + "Review and prioritize security recommendations", + "Implement generated test cases", + "Address high-priority business logic testing gaps", + "Consider architectural improvements for better testability" + ] + } +} \ No newline at end of file diff --git a/LittleShop/TestAgent_Results/project_structure.json b/LittleShop/TestAgent_Results/project_structure.json new file mode 100644 index 0000000..02fc734 --- /dev/null +++ b/LittleShop/TestAgent_Results/project_structure.json @@ -0,0 +1,1669 @@ +{ + "ProjectPath": "C:\\Production\\Source\\LittleShop\\LittleShop", + "ProjectType": "Project (ASP.NET Core)", + "Controllers": [ + "AuthController", + "BotMessagesController", + "BotsController", + "CatalogController", + "CustomersController", + "HomeController", + "MessagesController", + "OrdersController", + "TestController", + "AccountController", + "BotsController", + "CategoriesController", + "DashboardController", + "MessagesController", + "OrdersController", + "ProductsController", + "ShippingRatesController", + "UsersController" + ], + "Endpoints": [ + { + "Controller": "AuthController", + "Action": "Login", + "Route": "login", + "HttpMethods": [ + "POST" + ], + "Parameters": [ + "LoginDto loginDto" + ], + "RequiresAuthentication": false, + "RequiredRoles": [], + "AllowsAnonymous": false + }, + { + "Controller": "BotMessagesController", + "Action": "GetPendingMessages", + "Route": "pending", + "HttpMethods": [ + "GET" + ], + "Parameters": [ + "string platform" + ], + "RequiresAuthentication": false, + "RequiredRoles": [], + "AllowsAnonymous": false + }, + { + "Controller": "BotMessagesController", + "Action": "MarkMessageAsSent", + "Route": "{id}/mark-sent", + "HttpMethods": [ + "POST" + ], + "Parameters": [ + "Guid id", + "string? platformMessageId" + ], + "RequiresAuthentication": false, + "RequiredRoles": [], + "AllowsAnonymous": false + }, + { + "Controller": "BotMessagesController", + "Action": "MarkMessageAsFailed", + "Route": "{id}/mark-failed", + "HttpMethods": [ + "POST" + ], + "Parameters": [ + "Guid id", + "string reason" + ], + "RequiresAuthentication": false, + "RequiredRoles": [], + "AllowsAnonymous": false + }, + { + "Controller": "BotMessagesController", + "Action": "CreateTestMessage", + "Route": "test-create", + "HttpMethods": [ + "POST" + ], + "Parameters": [ + "CreateTestMessageDto dto" + ], + "RequiresAuthentication": false, + "RequiredRoles": [], + "AllowsAnonymous": false + }, + { + "Controller": "BotMessagesController", + "Action": "CreateCustomerMessage", + "Route": "customer-create", + "HttpMethods": [ + "POST" + ], + "Parameters": [ + "CreateCustomerMessageFromTelegramDto dto" + ], + "RequiresAuthentication": false, + "RequiredRoles": [], + "AllowsAnonymous": false + }, + { + "Controller": "BotMessagesController", + "Action": "GetCustomerMessages", + "Route": "customer/{customerId}", + "HttpMethods": [ + "GET" + ], + "Parameters": [ + "Guid customerId" + ], + "RequiresAuthentication": false, + "RequiredRoles": [], + "AllowsAnonymous": false + }, + { + "Controller": "BotsController", + "Action": "RegisterBot", + "Route": "register", + "HttpMethods": [ + "POST" + ], + "Parameters": [ + "BotRegistrationDto dto" + ], + "RequiresAuthentication": false, + "RequiredRoles": [], + "AllowsAnonymous": true + }, + { + "Controller": "BotsController", + "Action": "AuthenticateBot", + "Route": "authenticate", + "HttpMethods": [ + "POST" + ], + "Parameters": [ + "BotAuthenticateDto dto" + ], + "RequiresAuthentication": false, + "RequiredRoles": [], + "AllowsAnonymous": true + }, + { + "Controller": "BotsController", + "Action": "GetBotSettings", + "Route": "settings", + "HttpMethods": [ + "GET" + ], + "Parameters": [], + "RequiresAuthentication": false, + "RequiredRoles": [], + "AllowsAnonymous": false + }, + { + "Controller": "BotsController", + "Action": "UpdateBotSettings", + "Route": "settings", + "HttpMethods": [ + "PUT" + ], + "Parameters": [ + "UpdateBotSettingsDto dto" + ], + "RequiresAuthentication": false, + "RequiredRoles": [], + "AllowsAnonymous": false + }, + { + "Controller": "BotsController", + "Action": "RecordHeartbeat", + "Route": "heartbeat", + "HttpMethods": [ + "POST" + ], + "Parameters": [ + "BotHeartbeatDto dto" + ], + "RequiresAuthentication": false, + "RequiredRoles": [], + "AllowsAnonymous": false + }, + { + "Controller": "BotsController", + "Action": "UpdatePlatformInfo", + "Route": "platform-info", + "HttpMethods": [ + "PUT" + ], + "Parameters": [ + "UpdatePlatformInfoDto dto" + ], + "RequiresAuthentication": false, + "RequiredRoles": [], + "AllowsAnonymous": false + }, + { + "Controller": "BotsController", + "Action": "RecordMetric", + "Route": "metrics", + "HttpMethods": [ + "POST" + ], + "Parameters": [ + "CreateBotMetricDto dto" + ], + "RequiresAuthentication": false, + "RequiredRoles": [], + "AllowsAnonymous": false + }, + { + "Controller": "BotsController", + "Action": "RecordMetricsBatch", + "Route": "metrics/batch", + "HttpMethods": [ + "POST" + ], + "Parameters": [ + "BotMetricsBatchDto dto" + ], + "RequiresAuthentication": false, + "RequiredRoles": [], + "AllowsAnonymous": false + }, + { + "Controller": "BotsController", + "Action": "StartSession", + "Route": "sessions/start", + "HttpMethods": [ + "POST" + ], + "Parameters": [ + "CreateBotSessionDto dto" + ], + "RequiresAuthentication": false, + "RequiredRoles": [], + "AllowsAnonymous": false + }, + { + "Controller": "BotsController", + "Action": "UpdateSession", + "Route": "sessions/{sessionId}", + "HttpMethods": [ + "PUT" + ], + "Parameters": [ + "Guid sessionId", + "UpdateBotSessionDto dto" + ], + "RequiresAuthentication": false, + "RequiredRoles": [], + "AllowsAnonymous": false + }, + { + "Controller": "BotsController", + "Action": "EndSession", + "Route": "sessions/{sessionId}/end", + "HttpMethods": [ + "POST" + ], + "Parameters": [ + "Guid sessionId" + ], + "RequiresAuthentication": false, + "RequiredRoles": [], + "AllowsAnonymous": false + }, + { + "Controller": "BotsController", + "Action": "GetAllBots", + "Route": "Bots/GetAllBots", + "HttpMethods": [ + "GET" + ], + "Parameters": [], + "RequiresAuthentication": true, + "RequiredRoles": [ + "Admin" + ], + "AllowsAnonymous": false + }, + { + "Controller": "BotsController", + "Action": "GetBot", + "Route": "{id}", + "HttpMethods": [ + "GET" + ], + "Parameters": [ + "Guid id" + ], + "RequiresAuthentication": true, + "RequiredRoles": [ + "Admin" + ], + "AllowsAnonymous": false + }, + { + "Controller": "BotsController", + "Action": "GetBotMetrics", + "Route": "{id}/metrics", + "HttpMethods": [ + "GET" + ], + "Parameters": [ + "Guid id", + "DateTime? startDate", + "DateTime? endDate" + ], + "RequiresAuthentication": true, + "RequiredRoles": [ + "Admin" + ], + "AllowsAnonymous": false + }, + { + "Controller": "BotsController", + "Action": "GetMetricsSummary", + "Route": "{id}/metrics/summary", + "HttpMethods": [ + "GET" + ], + "Parameters": [ + "Guid id", + "DateTime? startDate", + "DateTime? endDate" + ], + "RequiresAuthentication": true, + "RequiredRoles": [ + "Admin" + ], + "AllowsAnonymous": false + }, + { + "Controller": "BotsController", + "Action": "GetBotSessions", + "Route": "{id}/sessions", + "HttpMethods": [ + "GET" + ], + "Parameters": [ + "Guid id", + "bool activeOnly" + ], + "RequiresAuthentication": true, + "RequiredRoles": [ + "Admin" + ], + "AllowsAnonymous": false + }, + { + "Controller": "BotsController", + "Action": "DeleteBot", + "Route": "{id}", + "HttpMethods": [ + "DELETE" + ], + "Parameters": [ + "Guid id" + ], + "RequiresAuthentication": true, + "RequiredRoles": [ + "Admin" + ], + "AllowsAnonymous": false + }, + { + "Controller": "CatalogController", + "Action": "GetCategories", + "Route": "categories", + "HttpMethods": [ + "GET" + ], + "Parameters": [], + "RequiresAuthentication": false, + "RequiredRoles": [], + "AllowsAnonymous": false + }, + { + "Controller": "CatalogController", + "Action": "GetCategory", + "Route": "categories/{id}", + "HttpMethods": [ + "GET" + ], + "Parameters": [ + "Guid id" + ], + "RequiresAuthentication": false, + "RequiredRoles": [], + "AllowsAnonymous": false + }, + { + "Controller": "CatalogController", + "Action": "GetProducts", + "Route": "products", + "HttpMethods": [ + "GET" + ], + "Parameters": [ + "int pageNumber", + "int pageSize", + "Guid? categoryId" + ], + "RequiresAuthentication": false, + "RequiredRoles": [], + "AllowsAnonymous": false + }, + { + "Controller": "CatalogController", + "Action": "GetProduct", + "Route": "products/{id}", + "HttpMethods": [ + "GET" + ], + "Parameters": [ + "Guid id" + ], + "RequiresAuthentication": false, + "RequiredRoles": [], + "AllowsAnonymous": false + }, + { + "Controller": "CustomersController", + "Action": "GetCustomers", + "Route": "Customers/GetCustomers", + "HttpMethods": [ + "GET" + ], + "Parameters": [ + "string? search" + ], + "RequiresAuthentication": false, + "RequiredRoles": [], + "AllowsAnonymous": false + }, + { + "Controller": "CustomersController", + "Action": "GetCustomer", + "Route": "{id}", + "HttpMethods": [ + "GET" + ], + "Parameters": [ + "Guid id" + ], + "RequiresAuthentication": false, + "RequiredRoles": [], + "AllowsAnonymous": false + }, + { + "Controller": "CustomersController", + "Action": "GetCustomerByTelegramId", + "Route": "by-telegram/{telegramUserId}", + "HttpMethods": [ + "GET" + ], + "Parameters": [ + "long telegramUserId" + ], + "RequiresAuthentication": false, + "RequiredRoles": [], + "AllowsAnonymous": false + }, + { + "Controller": "CustomersController", + "Action": "CreateCustomer", + "Route": "Customers/CreateCustomer", + "HttpMethods": [ + "POST" + ], + "Parameters": [ + "CreateCustomerDto createCustomerDto" + ], + "RequiresAuthentication": false, + "RequiredRoles": [], + "AllowsAnonymous": false + }, + { + "Controller": "CustomersController", + "Action": "GetOrCreateCustomer", + "Route": "get-or-create", + "HttpMethods": [ + "POST" + ], + "Parameters": [ + "CreateCustomerDto createCustomerDto" + ], + "RequiresAuthentication": false, + "RequiredRoles": [], + "AllowsAnonymous": true + }, + { + "Controller": "CustomersController", + "Action": "UpdateCustomer", + "Route": "{id}", + "HttpMethods": [ + "PUT" + ], + "Parameters": [ + "Guid id", + "UpdateCustomerDto updateCustomerDto" + ], + "RequiresAuthentication": false, + "RequiredRoles": [], + "AllowsAnonymous": false + }, + { + "Controller": "CustomersController", + "Action": "BlockCustomer", + "Route": "{id}/block", + "HttpMethods": [ + "POST" + ], + "Parameters": [ + "Guid id", + "string reason" + ], + "RequiresAuthentication": false, + "RequiredRoles": [], + "AllowsAnonymous": false + }, + { + "Controller": "CustomersController", + "Action": "UnblockCustomer", + "Route": "{id}/unblock", + "HttpMethods": [ + "POST" + ], + "Parameters": [ + "Guid id" + ], + "RequiresAuthentication": false, + "RequiredRoles": [], + "AllowsAnonymous": false + }, + { + "Controller": "CustomersController", + "Action": "DeleteCustomer", + "Route": "{id}", + "HttpMethods": [ + "DELETE" + ], + "Parameters": [ + "Guid id" + ], + "RequiresAuthentication": false, + "RequiredRoles": [], + "AllowsAnonymous": false + }, + { + "Controller": "HomeController", + "Action": "Index", + "Route": "", + "HttpMethods": [ + "GET" + ], + "Parameters": [], + "RequiresAuthentication": false, + "RequiredRoles": [], + "AllowsAnonymous": false + }, + { + "Controller": "MessagesController", + "Action": "SendMessage", + "Route": "Messages/SendMessage", + "HttpMethods": [ + "POST" + ], + "Parameters": [ + "CreateCustomerMessageDto createMessageDto" + ], + "RequiresAuthentication": false, + "RequiredRoles": [], + "AllowsAnonymous": false + }, + { + "Controller": "MessagesController", + "Action": "GetMessage", + "Route": "{id}", + "HttpMethods": [ + "GET" + ], + "Parameters": [ + "Guid id" + ], + "RequiresAuthentication": false, + "RequiredRoles": [], + "AllowsAnonymous": false + }, + { + "Controller": "MessagesController", + "Action": "GetCustomerMessages", + "Route": "customer/{customerId}", + "HttpMethods": [ + "GET" + ], + "Parameters": [ + "Guid customerId" + ], + "RequiresAuthentication": false, + "RequiredRoles": [], + "AllowsAnonymous": false + }, + { + "Controller": "MessagesController", + "Action": "GetOrderMessages", + "Route": "order/{orderId}", + "HttpMethods": [ + "GET" + ], + "Parameters": [ + "Guid orderId" + ], + "RequiresAuthentication": false, + "RequiredRoles": [], + "AllowsAnonymous": false + }, + { + "Controller": "MessagesController", + "Action": "GetPendingMessages", + "Route": "pending", + "HttpMethods": [ + "GET" + ], + "Parameters": [ + "string platform" + ], + "RequiresAuthentication": false, + "RequiredRoles": [], + "AllowsAnonymous": true + }, + { + "Controller": "MessagesController", + "Action": "MarkMessageAsSent", + "Route": "{id}/mark-sent", + "HttpMethods": [ + "POST" + ], + "Parameters": [ + "Guid id", + "string? platformMessageId" + ], + "RequiresAuthentication": false, + "RequiredRoles": [], + "AllowsAnonymous": true + }, + { + "Controller": "MessagesController", + "Action": "MarkMessageAsDelivered", + "Route": "{id}/mark-delivered", + "HttpMethods": [ + "POST" + ], + "Parameters": [ + "Guid id" + ], + "RequiresAuthentication": false, + "RequiredRoles": [], + "AllowsAnonymous": false + }, + { + "Controller": "MessagesController", + "Action": "MarkMessageAsFailed", + "Route": "{id}/mark-failed", + "HttpMethods": [ + "POST" + ], + "Parameters": [ + "Guid id", + "string reason" + ], + "RequiresAuthentication": false, + "RequiredRoles": [], + "AllowsAnonymous": true + }, + { + "Controller": "OrdersController", + "Action": "GetAllOrders", + "Route": "Orders/GetAllOrders", + "HttpMethods": [ + "GET" + ], + "Parameters": [], + "RequiresAuthentication": true, + "RequiredRoles": [ + "Admin" + ], + "AllowsAnonymous": false + }, + { + "Controller": "OrdersController", + "Action": "GetOrder", + "Route": "{id}", + "HttpMethods": [ + "GET" + ], + "Parameters": [ + "Guid id" + ], + "RequiresAuthentication": true, + "RequiredRoles": [ + "Admin" + ], + "AllowsAnonymous": false + }, + { + "Controller": "OrdersController", + "Action": "UpdateOrderStatus", + "Route": "{id}/status", + "HttpMethods": [ + "PUT" + ], + "Parameters": [ + "Guid id", + "UpdateOrderStatusDto updateOrderStatusDto" + ], + "RequiresAuthentication": true, + "RequiredRoles": [ + "Admin" + ], + "AllowsAnonymous": false + }, + { + "Controller": "OrdersController", + "Action": "GetOrdersByIdentity", + "Route": "by-identity/{identityReference}", + "HttpMethods": [ + "GET" + ], + "Parameters": [ + "string identityReference" + ], + "RequiresAuthentication": false, + "RequiredRoles": [], + "AllowsAnonymous": true + }, + { + "Controller": "OrdersController", + "Action": "GetOrdersByCustomerId", + "Route": "by-customer/{customerId}", + "HttpMethods": [ + "GET" + ], + "Parameters": [ + "Guid customerId" + ], + "RequiresAuthentication": false, + "RequiredRoles": [], + "AllowsAnonymous": true + }, + { + "Controller": "OrdersController", + "Action": "GetOrderByIdentity", + "Route": "by-identity/{identityReference}/{id}", + "HttpMethods": [ + "GET" + ], + "Parameters": [ + "string identityReference", + "Guid id" + ], + "RequiresAuthentication": false, + "RequiredRoles": [], + "AllowsAnonymous": true + }, + { + "Controller": "OrdersController", + "Action": "CreateOrder", + "Route": "Orders/CreateOrder", + "HttpMethods": [ + "POST" + ], + "Parameters": [ + "CreateOrderDto createOrderDto" + ], + "RequiresAuthentication": false, + "RequiredRoles": [], + "AllowsAnonymous": true + }, + { + "Controller": "OrdersController", + "Action": "CreatePayment", + "Route": "{id}/payments", + "HttpMethods": [ + "POST" + ], + "Parameters": [ + "Guid id", + "CreatePaymentDto createPaymentDto" + ], + "RequiresAuthentication": false, + "RequiredRoles": [], + "AllowsAnonymous": true + }, + { + "Controller": "OrdersController", + "Action": "GetOrderPayments", + "Route": "{id}/payments", + "HttpMethods": [ + "GET" + ], + "Parameters": [ + "Guid id" + ], + "RequiresAuthentication": false, + "RequiredRoles": [], + "AllowsAnonymous": false + }, + { + "Controller": "OrdersController", + "Action": "GetPaymentStatus", + "Route": "payments/{paymentId}/status", + "HttpMethods": [ + "GET" + ], + "Parameters": [ + "Guid paymentId" + ], + "RequiresAuthentication": false, + "RequiredRoles": [], + "AllowsAnonymous": false + }, + { + "Controller": "OrdersController", + "Action": "CancelOrder", + "Route": "{id}/cancel", + "HttpMethods": [ + "POST" + ], + "Parameters": [ + "Guid id", + "CancelOrderDto cancelOrderDto" + ], + "RequiresAuthentication": false, + "RequiredRoles": [], + "AllowsAnonymous": false + }, + { + "Controller": "OrdersController", + "Action": "PaymentWebhook", + "Route": "payments/webhook", + "HttpMethods": [ + "POST" + ], + "Parameters": [ + "PaymentWebhookDto webhookDto" + ], + "RequiresAuthentication": false, + "RequiredRoles": [], + "AllowsAnonymous": false + }, + { + "Controller": "TestController", + "Action": "CreateTestProduct", + "Route": "create-product", + "HttpMethods": [ + "POST" + ], + "Parameters": [], + "RequiresAuthentication": false, + "RequiredRoles": [], + "AllowsAnonymous": false + }, + { + "Controller": "TestController", + "Action": "SetupTestData", + "Route": "setup-test-data", + "HttpMethods": [ + "POST" + ], + "Parameters": [], + "RequiresAuthentication": false, + "RequiredRoles": [], + "AllowsAnonymous": false + }, + { + "Controller": "AccountController", + "Action": "Login", + "Route": "Account/Login", + "HttpMethods": [ + "GET" + ], + "Parameters": [], + "RequiresAuthentication": false, + "RequiredRoles": [], + "AllowsAnonymous": false + }, + { + "Controller": "AccountController", + "Action": "Login", + "Route": "Account/Login", + "HttpMethods": [ + "POST" + ], + "Parameters": [ + "string username", + "string password" + ], + "RequiresAuthentication": false, + "RequiredRoles": [], + "AllowsAnonymous": false + }, + { + "Controller": "AccountController", + "Action": "Logout", + "Route": "Account/Logout", + "HttpMethods": [ + "POST" + ], + "Parameters": [], + "RequiresAuthentication": true, + "RequiredRoles": [], + "AllowsAnonymous": false + }, + { + "Controller": "AccountController", + "Action": "AccessDenied", + "Route": "", + "HttpMethods": [ + "GET" + ], + "Parameters": [], + "RequiresAuthentication": false, + "RequiredRoles": [], + "AllowsAnonymous": false + }, + { + "Controller": "BotsController", + "Action": "Index", + "Route": "", + "HttpMethods": [ + "GET" + ], + "Parameters": [], + "RequiresAuthentication": false, + "RequiredRoles": [], + "AllowsAnonymous": false + }, + { + "Controller": "BotsController", + "Action": "Details", + "Route": "", + "HttpMethods": [ + "GET" + ], + "Parameters": [ + "Guid id" + ], + "RequiresAuthentication": false, + "RequiredRoles": [], + "AllowsAnonymous": false + }, + { + "Controller": "BotsController", + "Action": "Create", + "Route": "", + "HttpMethods": [ + "GET" + ], + "Parameters": [], + "RequiresAuthentication": false, + "RequiredRoles": [], + "AllowsAnonymous": false + }, + { + "Controller": "BotsController", + "Action": "Wizard", + "Route": "", + "HttpMethods": [ + "GET" + ], + "Parameters": [], + "RequiresAuthentication": false, + "RequiredRoles": [], + "AllowsAnonymous": false + }, + { + "Controller": "BotsController", + "Action": "Wizard", + "Route": "Bots/Wizard", + "HttpMethods": [ + "POST" + ], + "Parameters": [ + "BotWizardDto dto" + ], + "RequiresAuthentication": false, + "RequiredRoles": [], + "AllowsAnonymous": false + }, + { + "Controller": "BotsController", + "Action": "CompleteWizard", + "Route": "Bots/CompleteWizard", + "HttpMethods": [ + "POST" + ], + "Parameters": [ + "BotWizardDto dto" + ], + "RequiresAuthentication": false, + "RequiredRoles": [], + "AllowsAnonymous": false + }, + { + "Controller": "BotsController", + "Action": "Create", + "Route": "Bots/Create", + "HttpMethods": [ + "POST" + ], + "Parameters": [ + "BotRegistrationDto dto" + ], + "RequiresAuthentication": false, + "RequiredRoles": [], + "AllowsAnonymous": false + }, + { + "Controller": "BotsController", + "Action": "Edit", + "Route": "", + "HttpMethods": [ + "GET" + ], + "Parameters": [ + "Guid id" + ], + "RequiresAuthentication": false, + "RequiredRoles": [], + "AllowsAnonymous": false + }, + { + "Controller": "BotsController", + "Action": "Edit", + "Route": "Bots/Edit", + "HttpMethods": [ + "POST" + ], + "Parameters": [ + "Guid id", + "string settingsJson", + "BotStatus status" + ], + "RequiresAuthentication": false, + "RequiredRoles": [], + "AllowsAnonymous": false + }, + { + "Controller": "BotsController", + "Action": "Metrics", + "Route": "", + "HttpMethods": [ + "GET" + ], + "Parameters": [ + "Guid id", + "DateTime? startDate", + "DateTime? endDate" + ], + "RequiresAuthentication": false, + "RequiredRoles": [], + "AllowsAnonymous": false + }, + { + "Controller": "BotsController", + "Action": "Delete", + "Route": "Bots/Delete", + "HttpMethods": [ + "POST" + ], + "Parameters": [ + "Guid id" + ], + "RequiresAuthentication": false, + "RequiredRoles": [], + "AllowsAnonymous": false + }, + { + "Controller": "BotsController", + "Action": "Suspend", + "Route": "Bots/Suspend", + "HttpMethods": [ + "POST" + ], + "Parameters": [ + "Guid id" + ], + "RequiresAuthentication": false, + "RequiredRoles": [], + "AllowsAnonymous": false + }, + { + "Controller": "BotsController", + "Action": "Activate", + "Route": "Bots/Activate", + "HttpMethods": [ + "POST" + ], + "Parameters": [ + "Guid id" + ], + "RequiresAuthentication": false, + "RequiredRoles": [], + "AllowsAnonymous": false + }, + { + "Controller": "BotsController", + "Action": "RegenerateKey", + "Route": "", + "HttpMethods": [ + "GET" + ], + "Parameters": [ + "Guid id" + ], + "RequiresAuthentication": false, + "RequiredRoles": [], + "AllowsAnonymous": false + }, + { + "Controller": "CategoriesController", + "Action": "Index", + "Route": "", + "HttpMethods": [ + "GET" + ], + "Parameters": [], + "RequiresAuthentication": false, + "RequiredRoles": [], + "AllowsAnonymous": false + }, + { + "Controller": "CategoriesController", + "Action": "Create", + "Route": "", + "HttpMethods": [ + "GET" + ], + "Parameters": [], + "RequiresAuthentication": false, + "RequiredRoles": [], + "AllowsAnonymous": false + }, + { + "Controller": "CategoriesController", + "Action": "Create", + "Route": "Categories/Create", + "HttpMethods": [ + "POST" + ], + "Parameters": [ + "CreateCategoryDto model" + ], + "RequiresAuthentication": false, + "RequiredRoles": [], + "AllowsAnonymous": false + }, + { + "Controller": "CategoriesController", + "Action": "Edit", + "Route": "", + "HttpMethods": [ + "GET" + ], + "Parameters": [ + "Guid id" + ], + "RequiresAuthentication": false, + "RequiredRoles": [], + "AllowsAnonymous": false + }, + { + "Controller": "CategoriesController", + "Action": "Edit", + "Route": "Categories/Edit", + "HttpMethods": [ + "POST" + ], + "Parameters": [ + "Guid id", + "UpdateCategoryDto model" + ], + "RequiresAuthentication": false, + "RequiredRoles": [], + "AllowsAnonymous": false + }, + { + "Controller": "CategoriesController", + "Action": "Delete", + "Route": "Categories/Delete", + "HttpMethods": [ + "POST" + ], + "Parameters": [ + "Guid id" + ], + "RequiresAuthentication": false, + "RequiredRoles": [], + "AllowsAnonymous": false + }, + { + "Controller": "DashboardController", + "Action": "Index", + "Route": "", + "HttpMethods": [ + "GET" + ], + "Parameters": [], + "RequiresAuthentication": false, + "RequiredRoles": [], + "AllowsAnonymous": false + }, + { + "Controller": "MessagesController", + "Action": "Index", + "Route": "", + "HttpMethods": [ + "GET" + ], + "Parameters": [], + "RequiresAuthentication": false, + "RequiredRoles": [], + "AllowsAnonymous": false + }, + { + "Controller": "MessagesController", + "Action": "Customer", + "Route": "", + "HttpMethods": [ + "GET" + ], + "Parameters": [ + "Guid id" + ], + "RequiresAuthentication": false, + "RequiredRoles": [], + "AllowsAnonymous": false + }, + { + "Controller": "MessagesController", + "Action": "Reply", + "Route": "Messages/Reply", + "HttpMethods": [ + "POST" + ], + "Parameters": [ + "Guid customerId", + "string content", + "bool isUrgent" + ], + "RequiresAuthentication": false, + "RequiredRoles": [], + "AllowsAnonymous": false + }, + { + "Controller": "OrdersController", + "Action": "Index", + "Route": "", + "HttpMethods": [ + "GET" + ], + "Parameters": [], + "RequiresAuthentication": false, + "RequiredRoles": [], + "AllowsAnonymous": false + }, + { + "Controller": "OrdersController", + "Action": "Details", + "Route": "", + "HttpMethods": [ + "GET" + ], + "Parameters": [ + "Guid id" + ], + "RequiresAuthentication": false, + "RequiredRoles": [], + "AllowsAnonymous": false + }, + { + "Controller": "OrdersController", + "Action": "Create", + "Route": "", + "HttpMethods": [ + "GET" + ], + "Parameters": [], + "RequiresAuthentication": false, + "RequiredRoles": [], + "AllowsAnonymous": false + }, + { + "Controller": "OrdersController", + "Action": "Create", + "Route": "Orders/Create", + "HttpMethods": [ + "POST" + ], + "Parameters": [ + "CreateOrderDto model" + ], + "RequiresAuthentication": false, + "RequiredRoles": [], + "AllowsAnonymous": false + }, + { + "Controller": "OrdersController", + "Action": "Edit", + "Route": "", + "HttpMethods": [ + "GET" + ], + "Parameters": [ + "Guid id" + ], + "RequiresAuthentication": false, + "RequiredRoles": [], + "AllowsAnonymous": false + }, + { + "Controller": "OrdersController", + "Action": "Edit", + "Route": "Orders/Edit", + "HttpMethods": [ + "POST" + ], + "Parameters": [ + "Guid id", + "OrderDto model" + ], + "RequiresAuthentication": false, + "RequiredRoles": [], + "AllowsAnonymous": false + }, + { + "Controller": "OrdersController", + "Action": "UpdateStatus", + "Route": "Orders/UpdateStatus", + "HttpMethods": [ + "POST" + ], + "Parameters": [ + "Guid id", + "UpdateOrderStatusDto model" + ], + "RequiresAuthentication": false, + "RequiredRoles": [], + "AllowsAnonymous": false + }, + { + "Controller": "ProductsController", + "Action": "Index", + "Route": "", + "HttpMethods": [ + "GET" + ], + "Parameters": [], + "RequiresAuthentication": false, + "RequiredRoles": [], + "AllowsAnonymous": false + }, + { + "Controller": "ProductsController", + "Action": "Create", + "Route": "", + "HttpMethods": [ + "GET" + ], + "Parameters": [], + "RequiresAuthentication": false, + "RequiredRoles": [], + "AllowsAnonymous": false + }, + { + "Controller": "ProductsController", + "Action": "Create", + "Route": "Products/Create", + "HttpMethods": [ + "POST" + ], + "Parameters": [ + "CreateProductDto model" + ], + "RequiresAuthentication": false, + "RequiredRoles": [], + "AllowsAnonymous": false + }, + { + "Controller": "ProductsController", + "Action": "Edit", + "Route": "", + "HttpMethods": [ + "GET" + ], + "Parameters": [ + "Guid id" + ], + "RequiresAuthentication": false, + "RequiredRoles": [], + "AllowsAnonymous": false + }, + { + "Controller": "ProductsController", + "Action": "Edit", + "Route": "Products/Edit", + "HttpMethods": [ + "POST" + ], + "Parameters": [ + "Guid id", + "UpdateProductDto model" + ], + "RequiresAuthentication": false, + "RequiredRoles": [], + "AllowsAnonymous": false + }, + { + "Controller": "ProductsController", + "Action": "UploadPhoto", + "Route": "Products/UploadPhoto", + "HttpMethods": [ + "POST" + ], + "Parameters": [ + "Guid id", + "IFormFile file", + "string? altText" + ], + "RequiresAuthentication": false, + "RequiredRoles": [], + "AllowsAnonymous": false + }, + { + "Controller": "ProductsController", + "Action": "DeletePhoto", + "Route": "Products/DeletePhoto", + "HttpMethods": [ + "POST" + ], + "Parameters": [ + "Guid id", + "Guid photoId" + ], + "RequiresAuthentication": false, + "RequiredRoles": [], + "AllowsAnonymous": false + }, + { + "Controller": "ProductsController", + "Action": "Delete", + "Route": "Products/Delete", + "HttpMethods": [ + "POST" + ], + "Parameters": [ + "Guid id" + ], + "RequiresAuthentication": false, + "RequiredRoles": [], + "AllowsAnonymous": false + }, + { + "Controller": "ShippingRatesController", + "Action": "Index", + "Route": "", + "HttpMethods": [ + "GET" + ], + "Parameters": [], + "RequiresAuthentication": false, + "RequiredRoles": [], + "AllowsAnonymous": false + }, + { + "Controller": "ShippingRatesController", + "Action": "Create", + "Route": "", + "HttpMethods": [ + "GET" + ], + "Parameters": [], + "RequiresAuthentication": false, + "RequiredRoles": [], + "AllowsAnonymous": false + }, + { + "Controller": "ShippingRatesController", + "Action": "Create", + "Route": "ShippingRates/Create", + "HttpMethods": [ + "POST" + ], + "Parameters": [ + "CreateShippingRateDto model" + ], + "RequiresAuthentication": false, + "RequiredRoles": [], + "AllowsAnonymous": false + }, + { + "Controller": "ShippingRatesController", + "Action": "Edit", + "Route": "", + "HttpMethods": [ + "GET" + ], + "Parameters": [ + "Guid id" + ], + "RequiresAuthentication": false, + "RequiredRoles": [], + "AllowsAnonymous": false + }, + { + "Controller": "ShippingRatesController", + "Action": "Edit", + "Route": "ShippingRates/Edit", + "HttpMethods": [ + "POST" + ], + "Parameters": [ + "Guid id", + "UpdateShippingRateDto model" + ], + "RequiresAuthentication": false, + "RequiredRoles": [], + "AllowsAnonymous": false + }, + { + "Controller": "ShippingRatesController", + "Action": "Delete", + "Route": "ShippingRates/Delete", + "HttpMethods": [ + "POST" + ], + "Parameters": [ + "Guid id" + ], + "RequiresAuthentication": false, + "RequiredRoles": [], + "AllowsAnonymous": false + }, + { + "Controller": "UsersController", + "Action": "Index", + "Route": "", + "HttpMethods": [ + "GET" + ], + "Parameters": [], + "RequiresAuthentication": false, + "RequiredRoles": [], + "AllowsAnonymous": false + }, + { + "Controller": "UsersController", + "Action": "Create", + "Route": "", + "HttpMethods": [ + "GET" + ], + "Parameters": [], + "RequiresAuthentication": false, + "RequiredRoles": [], + "AllowsAnonymous": false + }, + { + "Controller": "UsersController", + "Action": "Create", + "Route": "Users/Create", + "HttpMethods": [ + "POST" + ], + "Parameters": [ + "CreateUserDto model" + ], + "RequiresAuthentication": false, + "RequiredRoles": [], + "AllowsAnonymous": false + }, + { + "Controller": "UsersController", + "Action": "Edit", + "Route": "", + "HttpMethods": [ + "GET" + ], + "Parameters": [ + "Guid id" + ], + "RequiresAuthentication": false, + "RequiredRoles": [], + "AllowsAnonymous": false + }, + { + "Controller": "UsersController", + "Action": "Edit", + "Route": "Users/Edit", + "HttpMethods": [ + "POST" + ], + "Parameters": [ + "Guid id", + "UpdateUserDto model" + ], + "RequiresAuthentication": false, + "RequiredRoles": [], + "AllowsAnonymous": false + }, + { + "Controller": "UsersController", + "Action": "Delete", + "Route": "Users/Delete", + "HttpMethods": [ + "POST" + ], + "Parameters": [ + "Guid id" + ], + "RequiresAuthentication": false, + "RequiredRoles": [], + "AllowsAnonymous": false + } + ], + "Authentication": { + "HasAuthentication": true, + "AuthenticationSchemes": [ + "Identity", + "JWT", + "Cookies" + ], + "HasAuthorizeAttributes": true, + "HasIdentity": true, + "HasJWT": true, + "HasCookieAuth": true + }, + "Dependencies": [ + "Microsoft.AspNetCore.Authentication.JwtBearer", + "Microsoft.EntityFrameworkCore.Design", + "Microsoft.EntityFrameworkCore.Sqlite", + "AutoMapper", + "FluentValidation", + "FluentValidation.AspNetCore", + "Serilog.AspNetCore", + "Serilog.Sinks.File", + "Swashbuckle.AspNetCore", + "Microsoft.AspNetCore.Identity.EntityFrameworkCore", + "System.IdentityModel.Tokens.Jwt", + "BTCPayServer.Client", + "NBitcoin", + "Newtonsoft.Json" + ], + "HasIdentity": true, + "HasSwagger": true, + "StartupClass": "Program" +} \ No newline at end of file diff --git a/LittleShop/TestAgent_Results/visual_testing.json b/LittleShop/TestAgent_Results/visual_testing.json new file mode 100644 index 0000000..97a5885 --- /dev/null +++ b/LittleShop/TestAgent_Results/visual_testing.json @@ -0,0 +1,17 @@ +{ + "ConsistencyTests": [], + "AuthStateComparisons": [], + "ResponsiveTests": [], + "ComponentTests": [], + "Regressions": [], + "Summary": { + "TotalTests": 0, + "PassedTests": 0, + "FailedTests": 0, + "ConsistencyViolations": 0, + "ResponsiveIssues": 0, + "VisualRegressions": 0, + "OverallScore": 0, + "Recommendations": [] + } +} \ No newline at end of file diff --git a/LittleShop/appsettings.Production.json b/LittleShop/appsettings.Production.json.bak similarity index 100% rename from LittleShop/appsettings.Production.json rename to LittleShop/appsettings.Production.json.bak diff --git a/LittleShop/littleshop.db-shm b/LittleShop/littleshop.db-shm index 4b16b3f..f15ac3c 100644 Binary files a/LittleShop/littleshop.db-shm and b/LittleShop/littleshop.db-shm differ diff --git a/LittleShop/littleshop.db-wal b/LittleShop/littleshop.db-wal index b28be27..df04f23 100644 Binary files a/LittleShop/littleshop.db-wal and b/LittleShop/littleshop.db-wal differ