| api-gateway-service |
io.github.terrence721.saga.gateway.ApiGatewayServiceApplicationTests |
contextLoads() |
PASSED |
0.558s |
|
| api-gateway-service |
io.github.terrence721.saga.gateway.controller.AuthenticationControllerTest |
login_ShouldReturnBadRequest_WhenPayloadInputFailsValidationRules() |
PASSED |
0.228s |
|
| api-gateway-service |
io.github.terrence721.saga.gateway.controller.AuthenticationControllerTest |
login_ShouldReturnOkAndToken_WhenCredentialsAreValid() |
PASSED |
0.036s |
|
| api-gateway-service |
io.github.terrence721.saga.gateway.controller.AuthenticationControllerTest |
login_ShouldReturnUnauthorized_WhenInvalidCredentialsExceptionIsThrown() |
PASSED |
0.079s |
|
| api-gateway-service |
io.github.terrence721.saga.gateway.filter.JwtPerimeterGuardGatewayFilterFactoryTest |
apply_ShouldEmitJwtVerificationError_WhenAuthorizationHeaderIsMissing() |
PASSED |
0.003s |
|
| api-gateway-service |
io.github.terrence721.saga.gateway.filter.JwtPerimeterGuardGatewayFilterFactoryTest |
apply_ShouldEmitJwtVerificationError_WhenTokenSignatureIsInvalidOrTampered() |
PASSED |
0.002s |
|
| api-gateway-service |
io.github.terrence721.saga.gateway.filter.JwtPerimeterGuardGatewayFilterFactoryTest |
apply_ShouldForwardAndMutateHeader_WhenTokenSignatureIsValid() |
PASSED |
0.19s |
|
| order-service |
io.github.terrence721.saga.order.OrderServiceApplicationTests |
contextLoads() |
PASSED |
0.443s |
|
| order-service |
io.github.terrence721.saga.order.controller.OrderControllerTest |
createOrder_returnsBadRequest_whenItemCodeExceedsMaxLength() |
PASSED |
0.006s |
|
| order-service |
io.github.terrence721.saga.order.controller.OrderControllerTest |
createOrder_returnsBadRequest_whenPayloadFailsValidation() |
PASSED |
0.013s |
|
| order-service |
io.github.terrence721.saga.order.controller.OrderControllerTest |
createOrder_returnsBadRequest_whenTotalAmountHasTooManyIntegerDigits() |
PASSED |
0.006s |
|
| order-service |
io.github.terrence721.saga.order.controller.OrderControllerTest |
createOrder_returnsCreated_whenRequestIsValid() |
PASSED |
0.31s |
|
| order-service |
io.github.terrence721.saga.order.controller.OrderControllerTest |
createOrder_returnsForbidden_whenPerimeterHeaderDoesNotMatchCustomerId() |
PASSED |
0.005s |
|
| order-service |
io.github.terrence721.saga.order.controller.OrderControllerTest |
createOrder_returnsForbidden_whenPerimeterHeaderMissing() |
PASSED |
0.011s |
|
| order-service |
io.github.terrence721.saga.order.repository.OrderRepositoryTest |
existsByIdAndStatus_returnsFalse_whenIdDoesNotExist() |
PASSED |
0.007s |
|
| order-service |
io.github.terrence721.saga.order.repository.OrderRepositoryTest |
existsByIdAndStatus_returnsFalse_whenStatusDoesNotMatch() |
PASSED |
0.007s |
|
| order-service |
io.github.terrence721.saga.order.repository.OrderRepositoryTest |
existsByIdAndStatus_returnsTrue_whenStatusMatches() |
PASSED |
0.111s |
|
| order-service |
io.github.terrence721.saga.order.repository.OutboxRepositoryTest |
findByOrderByCreatedTimeAsc_returnsEmpty_whenNoRecords() |
PASSED |
0.006s |
|
| order-service |
io.github.terrence721.saga.order.repository.OutboxRepositoryTest |
findByOrderByCreatedTimeAsc_returnsOldestFirst_upToPageSize() |
PASSED |
0.03s |
|
| order-service |
io.github.terrence721.saga.order.service.OrderConsumerConfigTest |
kafkaErrorHandler_recoversImmediatelyForIllegalArgumentException() |
PASSED |
0.224s |
|
| order-service |
io.github.terrence721.saga.order.service.OrderConsumerConfigTest |
kafkaErrorHandler_recoversImmediatelyForOrderNotFoundException() |
PASSED |
0.002s |
|
| order-service |
io.github.terrence721.saga.order.service.OrderConsumerConfigTest |
kafkaErrorHandler_retriesGenericExceptionsBeforeGivingUp() |
PASSED |
0.103s |
|
| order-service |
io.github.terrence721.saga.order.service.OrderConsumerConfigTest |
onRestaurantApproved_deserializesPayloadAndDelegatesToConfirmOrder() |
PASSED |
0.014s |
|
| order-service |
io.github.terrence721.saga.order.service.OrderConsumerConfigTest |
onRestaurantRejected_deserializesPayloadAndDelegatesToCancelOrder() |
PASSED |
0.007s |
|
| order-service |
io.github.terrence721.saga.order.service.OrderServiceTest |
cancelOrder_shortCircuits_whenAlreadyCancelled() |
PASSED |
0.004s |
|
| order-service |
io.github.terrence721.saga.order.service.OrderServiceTest |
cancelOrder_stillCancelsOrder_whenReasonContainsCrLf() |
PASSED |
0.003s |
|
| order-service |
io.github.terrence721.saga.order.service.OrderServiceTest |
cancelOrder_throwsIllegalArgumentException_whenCustomerIdDoesNotMatchOrder() |
PASSED |
0.005s |
|
| order-service |
io.github.terrence721.saga.order.service.OrderServiceTest |
cancelOrder_throwsOrderNotFoundException_whenOrderMissing() |
PASSED |
0.002s |
|
| order-service |
io.github.terrence721.saga.order.service.OrderServiceTest |
cancelOrder_transitionsToCancelled_whenPending() |
PASSED |
0.005s |
|
| order-service |
io.github.terrence721.saga.order.service.OrderServiceTest |
confirmOrder_shortCircuits_whenAlreadySuccess() |
PASSED |
0.003s |
|
| order-service |
io.github.terrence721.saga.order.service.OrderServiceTest |
confirmOrder_throwsIllegalArgumentException_whenCustomerIdDoesNotMatchOrder() |
PASSED |
0.003s |
|
| order-service |
io.github.terrence721.saga.order.service.OrderServiceTest |
confirmOrder_throwsIllegalArgumentException_whenTicketIdMissing() |
PASSED |
0.003s |
|
| order-service |
io.github.terrence721.saga.order.service.OrderServiceTest |
confirmOrder_throwsOrderNotFoundException_whenOrderMissing() |
PASSED |
0.003s |
|
| order-service |
io.github.terrence721.saga.order.service.OrderServiceTest |
confirmOrder_transitionsToSuccess_whenPending() |
PASSED |
0.003s |
|
| order-service |
io.github.terrence721.saga.order.service.OrderServiceTest |
createOrder_savesOrderAndStagesOutboxWithRealSerializedPayload() |
PASSED |
0.18s |
|
| order-service |
io.github.terrence721.saga.order.service.OutboxPublisherServiceTest |
publishPendingOutboxRecords_continuesBatch_afterOneRecordFails() |
PASSED |
0.008s |
|
| order-service |
io.github.terrence721.saga.order.service.OutboxPublisherServiceTest |
publishPendingOutboxRecords_doesNothing_whenNoRecords() |
PASSED |
0.002s |
|
| order-service |
io.github.terrence721.saga.order.service.OutboxPublisherServiceTest |
publishPendingOutboxRecords_leavesRecordForRetry_onFailure() |
PASSED |
0.01s |
|
| order-service |
io.github.terrence721.saga.order.service.OutboxPublisherServiceTest |
publishPendingOutboxRecords_leavesRecordForRetry_onTimeout() |
PASSED |
0.061s |
|
| order-service |
io.github.terrence721.saga.order.service.OutboxPublisherServiceTest |
publishPendingOutboxRecords_publishesRawPayloadAndDeletes_onSuccess() |
PASSED |
0.182s |
|
| payment-service |
io.github.terrence721.saga.payment.PaymentServiceApplicationTests |
contextLoads() |
PASSED |
0.501s |
|
| payment-service |
io.github.terrence721.saga.payment.repository.OutboxRepositoryTest |
findByOrderByCreatedTimeAsc_returnsEmpty_whenNoRecords() |
PASSED |
0.007s |
|
| payment-service |
io.github.terrence721.saga.payment.repository.OutboxRepositoryTest |
findByOrderByCreatedTimeAsc_returnsOldestFirst_upToPageSize() |
PASSED |
0.11s |
|
| payment-service |
io.github.terrence721.saga.payment.repository.PaymentRepositoryTest |
findByOrderId_returnsEmpty_whenNoneExists() |
PASSED |
0.018s |
|
| payment-service |
io.github.terrence721.saga.payment.repository.PaymentRepositoryTest |
findByOrderId_returnsPayment_whenOneExists() |
PASSED |
0.009s |
|
| payment-service |
io.github.terrence721.saga.payment.service.OutboxPublisherServiceTest |
publishPendingOutboxRecords_continuesBatch_afterOneRecordFails() |
PASSED |
0.01s |
|
| payment-service |
io.github.terrence721.saga.payment.service.OutboxPublisherServiceTest |
publishPendingOutboxRecords_doesNothing_whenNoRecords() |
PASSED |
0.004s |
|
| payment-service |
io.github.terrence721.saga.payment.service.OutboxPublisherServiceTest |
publishPendingOutboxRecords_leavesRecordForRetry_onFailure() |
PASSED |
0.011s |
|
| payment-service |
io.github.terrence721.saga.payment.service.OutboxPublisherServiceTest |
publishPendingOutboxRecords_publishesRawPayloadAndDeletes_onSuccess() |
PASSED |
0.447s |
|
| payment-service |
io.github.terrence721.saga.payment.service.PaymentConsumerConfigTest |
onOrderCreated_deserializesPayloadAndDelegatesToProcessPaymentSaga() |
PASSED |
0.109s |
|
| payment-service |
io.github.terrence721.saga.payment.service.PaymentConsumerConfigTest |
onRestaurantRejected_deserializesPayloadAndDelegatesToHandleOrderCompensation() |
PASSED |
0.008s |
|
| payment-service |
io.github.terrence721.saga.payment.service.PaymentServiceTest |
handleOrderCompensation_shortCircuits_whenAlreadyRefunded() |
PASSED |
0.002s |
|
| payment-service |
io.github.terrence721.saga.payment.service.PaymentServiceTest |
handleOrderCompensation_shortCircuits_whenAlreadyRefundedAfterLoad() |
PASSED |
0.002s |
|
| payment-service |
io.github.terrence721.saga.payment.service.PaymentServiceTest |
handleOrderCompensation_throwsPaymentNotFoundException_whenPaymentMissing() |
PASSED |
0.003s |
|
| payment-service |
io.github.terrence721.saga.payment.service.PaymentServiceTest |
handleOrderCompensation_transitionsToRefunded_whenApproved() |
PASSED |
0.004s |
|
| payment-service |
io.github.terrence721.saga.payment.service.PaymentServiceTest |
processPaymentSaga_savesPaymentAndStagesOutboxWithRealSerializedPayload() |
PASSED |
0.084s |
|
| payment-service |
io.github.terrence721.saga.payment.service.PaymentServiceTest |
processPaymentSaga_skipsDuplicate_whenPaymentAlreadyExists() |
PASSED |
0.002s |
|
| restaurant-service |
io.github.terrence721.saga.restaurant.RestaurantServiceApplicationTests |
contextLoads() |
PASSED |
0.496s |
|
| restaurant-service |
io.github.terrence721.saga.restaurant.repository.InventoryItemRepositoryTest |
findById_returnsEmpty_whenItemCodeUnknown() |
PASSED |
0.07s |
|
| restaurant-service |
io.github.terrence721.saga.restaurant.repository.InventoryItemRepositoryTest |
findById_returnsItem_whenItExists() |
PASSED |
0.031s |
|
| restaurant-service |
io.github.terrence721.saga.restaurant.repository.OutboxRepositoryTest |
findByOrderByCreatedTimeAsc_returnsEmpty_whenNoRecords() |
PASSED |
0.009s |
|
| restaurant-service |
io.github.terrence721.saga.restaurant.repository.OutboxRepositoryTest |
findByOrderByCreatedTimeAsc_returnsOldestFirst_upToPageSize() |
PASSED |
0.057s |
|
| restaurant-service |
io.github.terrence721.saga.restaurant.repository.RestaurantTicketRepositoryTest |
existsByOrderId_returnsFalse_whenNoTicketExists() |
PASSED |
0.007s |
|
| restaurant-service |
io.github.terrence721.saga.restaurant.repository.RestaurantTicketRepositoryTest |
existsByOrderId_returnsTrue_whenTicketExists() |
PASSED |
0.02s |
|
| restaurant-service |
io.github.terrence721.saga.restaurant.service.OutboxPublisherServiceTest |
publishPendingOutboxRecords_doesNothing_whenNoRecords() |
PASSED |
0.004s |
|
| restaurant-service |
io.github.terrence721.saga.restaurant.service.OutboxPublisherServiceTest |
publishPendingOutboxRecords_leavesRecordForRetry_onFailure() |
PASSED |
0.013s |
|
| restaurant-service |
io.github.terrence721.saga.restaurant.service.OutboxPublisherServiceTest |
publishPendingOutboxRecords_routesToApprovedTopic_forRestaurantApprovedEvent() |
PASSED |
0.448s |
|
| restaurant-service |
io.github.terrence721.saga.restaurant.service.OutboxPublisherServiceTest |
publishPendingOutboxRecords_routesToRejectedTopic_forRestaurantRejectedEvent() |
PASSED |
0.005s |
|
| restaurant-service |
io.github.terrence721.saga.restaurant.service.OutboxPublisherServiceTest |
publishPendingOutboxRecords_throwsIllegalArgumentException_forUnknownEventType() |
PASSED |
0.005s |
|
| restaurant-service |
io.github.terrence721.saga.restaurant.service.RestaurantConsumerConfigTest |
onPaymentProcessed_deserializesPayloadAndDelegatesToProcessRestaurantStep() |
PASSED |
0.117s |
|
| restaurant-service |
io.github.terrence721.saga.restaurant.service.RestaurantInventoryServiceTest |
verifyAndDeductStock_returnsAllocatedAndDeducts_whenEnoughStock() |
PASSED |
0.002s |
|
| restaurant-service |
io.github.terrence721.saga.restaurant.service.RestaurantInventoryServiceTest |
verifyAndDeductStock_returnsInsufficientStock_whenNotEnough() |
PASSED |
0.077s |
|
| restaurant-service |
io.github.terrence721.saga.restaurant.service.RestaurantInventoryServiceTest |
verifyAndDeductStock_returnsItemNotFound_whenItemCodeUnknown() |
PASSED |
0.002s |
|
| restaurant-service |
io.github.terrence721.saga.restaurant.service.RestaurantServiceTest |
processRestaurantStep_createsPreparingTicketAndApprovedOutbox_whenAllocated() |
PASSED |
0.006s |
|
| restaurant-service |
io.github.terrence721.saga.restaurant.service.RestaurantServiceTest |
processRestaurantStep_createsRejectedTicketAndRejectedOutbox_whenInsufficientStock() |
PASSED |
0.119s |
|
| restaurant-service |
io.github.terrence721.saga.restaurant.service.RestaurantServiceTest |
processRestaurantStep_createsRejectedTicketAndRejectedOutbox_whenItemNotFound() |
PASSED |
0.006s |
|
| restaurant-service |
io.github.terrence721.saga.restaurant.service.RestaurantServiceTest |
processRestaurantStep_skipsDuplicate_whenTicketAlreadyExists() |
PASSED |
0.002s |
|
| restaurant-service |
io.github.terrence721.saga.restaurant.service.RestaurantServiceTest |
processRestaurantStep_throwsIllegalArgumentException_whenAmountNotPositive() |
PASSED |
0.003s |
|
| restaurant-service |
io.github.terrence721.saga.restaurant.service.RestaurantServiceTest |
processRestaurantStep_throwsIllegalArgumentException_whenQuantityNotPositive() |
PASSED |
0.002s |
|
| user-contract |
io.github.terrence721.saga.user.grpc.UserContractSerializationTest |
loginRequestRoundTripsThroughSerialization() |
PASSED |
0.004s |
|
| user-contract |
io.github.terrence721.saga.user.grpc.UserContractSerializationTest |
loginResponseRoundTripsAtInt64Boundary() |
PASSED |
0.08s |
|
| user-contract |
io.github.terrence721.saga.user.grpc.UserContractSerializationTest |
loginResponseRoundTripsThroughSerialization() |
PASSED |
0.001s |
|
| user-contract |
io.github.terrence721.saga.user.grpc.UserContractSerializationTest |
validateTokenRequestRoundTripsThroughSerialization() |
PASSED |
0.002s |
|
| user-contract |
io.github.terrence721.saga.user.grpc.UserContractSerializationTest |
validateTokenResponseRoundTripsWhenInvalid() |
PASSED |
0.002s |
|
| user-contract |
io.github.terrence721.saga.user.grpc.UserContractSerializationTest |
validateTokenResponseRoundTripsWhenValid() |
PASSED |
0.001s |
|
| user-service |
io.github.terrence721.saga.user.UserServiceApplicationTests |
contextLoads() |
PASSED |
0.337s |
|
| user-service |
io.github.terrence721.saga.user.config.SecurityConfigTest |
encodesAndVerifiesARealPassword() |
PASSED |
0.149s |
|
| user-service |
io.github.terrence721.saga.user.config.SecurityConfigTest |
rejectsAWrongPassword() |
PASSED |
0.19s |
|
| user-service |
io.github.terrence721.saga.user.infra.grpc.UserGrpcServiceImplErrorTest |
loginComparesAgainstADummyHashWhenUserNotFound_forTimingSafety() |
PASSED |
0.004s |
|
| user-service |
io.github.terrence721.saga.user.infra.grpc.UserGrpcServiceImplErrorTest |
loginFailsWithGenericUnauthenticatedWhenPasswordWrong() |
PASSED |
0.004s |
|
| user-service |
io.github.terrence721.saga.user.infra.grpc.UserGrpcServiceImplErrorTest |
loginFailsWithGenericUnauthenticatedWhenUserInactive() |
PASSED |
0.282s |
|
| user-service |
io.github.terrence721.saga.user.infra.grpc.UserGrpcServiceImplErrorTest |
loginFailsWithGenericUnauthenticatedWhenUserMissing() |
PASSED |
0.003s |
|
| user-service |
io.github.terrence721.saga.user.infra.grpc.UserGrpcServiceImplErrorTest |
loginStillComparesPasswordWhenUserInactive_forTimingSafety() |
PASSED |
0.011s |
|
| user-service |
io.github.terrence721.saga.user.infra.grpc.UserGrpcServiceImplErrorTest |
validateTokenReturnsInvalidWhenTokenVerificationFails() |
PASSED |
0.008s |
|
| user-service |
io.github.terrence721.saga.user.infra.grpc.UserGrpcServiceImplTest |
loginSucceedsAndReturnsAccessToken() |
PASSED |
0.007s |
|
| user-service |
io.github.terrence721.saga.user.infra.grpc.UserGrpcServiceImplTest |
validateTokenReturnsValidWhenTokenVerifies() |
PASSED |
0.109s |
|
| user-service |
io.github.terrence721.saga.user.infra.grpc.UserGrpcServiceIntegrationTest |
loginOverGrpcPropagatesGenericUnauthenticatedStatus() |
PASSED |
0.108s |
|
| user-service |
io.github.terrence721.saga.user.infra.grpc.UserGrpcServiceIntegrationTest |
loginOverGrpcReturnsAccessToken() |
PASSED |
0.007s |
|
| user-service |
io.github.terrence721.saga.user.infra.grpc.UserGrpcServiceIntegrationTest |
validateTokenOverGrpcReturnsValid() |
PASSED |
0.004s |
|
| user-service |
io.github.terrence721.saga.user.infra.security.JwtTokenProviderTest |
createdTokenVerifiesSuccessfullyWithMatchingClaims() |
PASSED |
0.003s |
|
| user-service |
io.github.terrence721.saga.user.infra.security.JwtTokenProviderTest |
verifyTokenReturnsEmptyForExpiredToken() |
PASSED |
0.002s |
|
| user-service |
io.github.terrence721.saga.user.infra.security.JwtTokenProviderTest |
verifyTokenReturnsEmptyForMalformedToken() |
PASSED |
0.001s |
|
| user-service |
io.github.terrence721.saga.user.infra.security.JwtTokenProviderTest |
verifyTokenReturnsEmptyForTamperedSignature() |
PASSED |
0.067s |
|
| user-service |
io.github.terrence721.saga.user.infra.security.JwtTokenProviderTest |
verifyTokenReturnsEmptyForWrongIssuer() |
PASSED |
0.002s |
|
| user-service |
io.github.terrence721.saga.user.repository.UserRepositoryTest |
findByEmail_returnsEmpty_whenEmailDoesNotExist() |
PASSED |
0.006s |
|
| user-service |
io.github.terrence721.saga.user.repository.UserRepositoryTest |
findByEmail_returnsUser_whenEmailExists() |
PASSED |
0.118s |
|
| user-service |
io.github.terrence721.saga.user.repository.UserRepositoryTest |
save_rejectsADuplicateEmail_becauseTheColumnIsGenuinelyUnique() |
PASSED |
0.068s |
|