// Copyright 2020-2026 The NATS Authors // Licensed under the Apache License, Version 2.0 (the "License"); using Shouldly; namespace ZB.MOM.NatsNet.Server.Tests.JetStream; public sealed class JetStreamErrorsGeneratedConstructorsTests { [Fact] public void ConstructorSurface_Group01() { JsApiErrors.NewJSAccountResourcesExceededError().ErrCode.ShouldBe(JsApiErrors.AccountResourcesExceeded.ErrCode); JsApiErrors.NewJSAtomicPublishContainsDuplicateMessageError().ErrCode.ShouldBe(JsApiErrors.AtomicPublishContainsDuplicateMessage.ErrCode); JsApiErrors.NewJSAtomicPublishDisabledError().ErrCode.ShouldBe(JsApiErrors.AtomicPublishDisabled.ErrCode); JsApiErrors.NewJSAtomicPublishIncompleteBatchError().ErrCode.ShouldBe(JsApiErrors.AtomicPublishIncompleteBatch.ErrCode); JsApiErrors.NewJSAtomicPublishInvalidBatchCommitError().ErrCode.ShouldBe(JsApiErrors.AtomicPublishInvalidBatchCommit.ErrCode); JsApiErrors.NewJSAtomicPublishInvalidBatchIDError().ErrCode.ShouldBe(JsApiErrors.AtomicPublishInvalidBatchID.ErrCode); JsApiErrors.NewJSAtomicPublishMissingSeqError().ErrCode.ShouldBe(JsApiErrors.AtomicPublishMissingSeq.ErrCode); JsApiErrors.NewJSBadRequestError().ErrCode.ShouldBe(JsApiErrors.BadRequest.ErrCode); JsApiErrors.NewJSClusterIncompleteError().ErrCode.ShouldBe(JsApiErrors.ClusterIncomplete.ErrCode); JsApiErrors.NewJSClusterNotActiveError().ErrCode.ShouldBe(JsApiErrors.ClusterNotActive.ErrCode); JsApiErrors.NewJSClusterNotAssignedError().ErrCode.ShouldBe(JsApiErrors.ClusterNotAssigned.ErrCode); JsApiErrors.NewJSClusterNotAvailError().ErrCode.ShouldBe(JsApiErrors.ClusterNotAvail.ErrCode); JsApiErrors.NewJSClusterNotLeaderError().ErrCode.ShouldBe(JsApiErrors.ClusterNotLeader.ErrCode); JsApiErrors.NewJSClusterPeerNotMemberError().ErrCode.ShouldBe(JsApiErrors.ClusterPeerNotMember.ErrCode); JsApiErrors.NewJSAtomicPublishTooLargeBatchError(512).Description.ShouldBe("atomic publish batch is too large: 512"); JsApiErrors.NewJSAtomicPublishUnsupportedHeaderBatchError("Nats-Msg-Id").Description.ShouldBe("atomic publish unsupported header used: Nats-Msg-Id"); JsApiErrors.NewJSClusterNoPeersError(new InvalidOperationException("no peers")).Description.ShouldBe("no peers"); var expected = new JsApiError { Code = 499, ErrCode = 9090, Description = "override" }; var fromOverride = JsApiErrors.NewJSAccountResourcesExceededError(JsApiErrors.Unless(expected)); fromOverride.Code.ShouldBe(expected.Code); fromOverride.ErrCode.ShouldBe(expected.ErrCode); fromOverride.Description.ShouldBe(expected.Description); ReferenceEquals(fromOverride, expected).ShouldBeFalse(); } [Fact] public void ConstructorSurface_Group02() { JsApiErrors.NewJSClusterRequiredError().ErrCode.ShouldBe(JsApiErrors.ClusterRequired.ErrCode); JsApiErrors.NewJSClusterServerMemberChangeInflightError().ErrCode.ShouldBe(JsApiErrors.ClusterServerMemberChangeInflight.ErrCode); JsApiErrors.NewJSClusterServerNotMemberError().ErrCode.ShouldBe(JsApiErrors.ClusterServerNotMember.ErrCode); JsApiErrors.NewJSClusterTagsError().ErrCode.ShouldBe(JsApiErrors.ClusterTags.ErrCode); JsApiErrors.NewJSClusterUnSupportFeatureError().ErrCode.ShouldBe(JsApiErrors.ClusterUnSupportFeature.ErrCode); JsApiErrors.NewJSConsumerAckPolicyInvalidError().ErrCode.ShouldBe(JsApiErrors.ConsumerAckPolicyInvalid.ErrCode); JsApiErrors.NewJSConsumerAckWaitNegativeError().ErrCode.ShouldBe(JsApiErrors.ConsumerAckWaitNegative.ErrCode); JsApiErrors.NewJSConsumerAlreadyExistsError().ErrCode.ShouldBe(JsApiErrors.ConsumerAlreadyExists.ErrCode); JsApiErrors.NewJSConsumerBackOffNegativeError().ErrCode.ShouldBe(JsApiErrors.ConsumerBackOffNegative.ErrCode); JsApiErrors.NewJSConsumerBadDurableNameError().ErrCode.ShouldBe(JsApiErrors.ConsumerBadDurableName.ErrCode); JsApiErrors.NewJSConsumerConfigRequiredError().ErrCode.ShouldBe(JsApiErrors.ConsumerConfigRequired.ErrCode); JsApiErrors.NewJSConsumerCreateDurableAndNameMismatchError().ErrCode.ShouldBe(JsApiErrors.ConsumerCreateDurableAndNameMismatch.ErrCode); JsApiErrors.NewJSConsumerCreateFilterSubjectMismatchError().ErrCode.ShouldBe(JsApiErrors.ConsumerCreateFilterSubjectMismatch.ErrCode); JsApiErrors.NewJSConsumerDeliverCycleError().ErrCode.ShouldBe(JsApiErrors.ConsumerDeliverCycle.ErrCode); JsApiErrors.NewJSConsumerDeliverToWildcardsError().ErrCode.ShouldBe(JsApiErrors.ConsumerDeliverToWildcards.ErrCode); JsApiErrors.NewJSConsumerDirectRequiresEphemeralError().ErrCode.ShouldBe(JsApiErrors.ConsumerDirectRequiresEphemeral.ErrCode); JsApiErrors.NewJSConsumerDirectRequiresPushError().ErrCode.ShouldBe(JsApiErrors.ConsumerDirectRequiresPush.ErrCode); JsApiErrors.NewJSConsumerDoesNotExistError().ErrCode.ShouldBe(JsApiErrors.ConsumerDoesNotExist.ErrCode); JsApiErrors.NewJSConsumerCreateError(new InvalidOperationException("create failed")).Description.ShouldBe("create failed"); JsApiErrors.NewJSConsumerDescriptionTooLongError(1024).Description.ShouldBe("consumer description is too long, maximum allowed is 1024"); var expected = new JsApiError { Code = 498, ErrCode = 9091, Description = "override-2" }; var fromOverride = JsApiErrors.NewJSClusterRequiredError(JsApiErrors.Unless(expected)); fromOverride.Code.ShouldBe(expected.Code); fromOverride.ErrCode.ShouldBe(expected.ErrCode); fromOverride.Description.ShouldBe(expected.Description); ReferenceEquals(fromOverride, expected).ShouldBeFalse(); } [Fact] public void ConstructorSurface_Group03() { JsApiErrors.NewJSConsumerDuplicateFilterSubjectsError().ErrCode.ShouldBe(JsApiErrors.ConsumerDuplicateFilterSubjects.ErrCode); JsApiErrors.NewJSConsumerDurableNameNotInSubjectError().ErrCode.ShouldBe(JsApiErrors.ConsumerDurableNameNotInSubject.ErrCode); JsApiErrors.NewJSConsumerDurableNameNotMatchSubjectError().ErrCode.ShouldBe(JsApiErrors.ConsumerDurableNameNotMatchSubject.ErrCode); JsApiErrors.NewJSConsumerDurableNameNotSetError().ErrCode.ShouldBe(JsApiErrors.ConsumerDurableNameNotSet.ErrCode); JsApiErrors.NewJSConsumerEmptyFilterError().ErrCode.ShouldBe(JsApiErrors.ConsumerEmptyFilter.ErrCode); JsApiErrors.NewJSConsumerEmptyGroupNameError().ErrCode.ShouldBe(JsApiErrors.ConsumerEmptyGroupName.ErrCode); JsApiErrors.NewJSConsumerEphemeralWithDurableInSubjectError().ErrCode.ShouldBe(JsApiErrors.ConsumerEphemeralWithDurableInSubject.ErrCode); JsApiErrors.NewJSConsumerEphemeralWithDurableNameError().ErrCode.ShouldBe(JsApiErrors.ConsumerEphemeralWithDurableName.ErrCode); JsApiErrors.NewJSConsumerExistingActiveError().ErrCode.ShouldBe(JsApiErrors.ConsumerExistingActive.ErrCode); JsApiErrors.NewJSConsumerFCRequiresPushError().ErrCode.ShouldBe(JsApiErrors.ConsumerFCRequiresPush.ErrCode); JsApiErrors.NewJSConsumerFilterNotSubsetError().ErrCode.ShouldBe(JsApiErrors.ConsumerFilterNotSubset.ErrCode); JsApiErrors.NewJSConsumerHBRequiresPushError().ErrCode.ShouldBe(JsApiErrors.ConsumerHBRequiresPush.ErrCode); JsApiErrors.NewJSConsumerInvalidDeliverSubjectError().ErrCode.ShouldBe(JsApiErrors.ConsumerInvalidDeliverSubject.ErrCode); JsApiErrors.NewJSConsumerInvalidGroupNameError().ErrCode.ShouldBe(JsApiErrors.ConsumerInvalidGroupName.ErrCode); JsApiErrors.NewJSConsumerInvalidPriorityGroupError().ErrCode.ShouldBe(JsApiErrors.ConsumerInvalidPriorityGroup.ErrCode); JsApiErrors.NewJSConsumerMaxDeliverBackoffError().ErrCode.ShouldBe(JsApiErrors.ConsumerMaxDeliverBackoff.ErrCode); JsApiErrors.NewJSConsumerInactiveThresholdExcessError(777).Description.ShouldBe("consumer inactive threshold exceeds system limit of 777"); JsApiErrors.NewJSConsumerInvalidPolicyError(new InvalidOperationException("invalid policy")).Description.ShouldBe("invalid policy"); JsApiErrors.NewJSConsumerInvalidResetError(new InvalidOperationException("bad reset")).Description.ShouldBe("invalid reset: bad reset"); JsApiErrors.NewJSConsumerInvalidSamplingError(new InvalidOperationException("bad sampling")).Description.ShouldBe("failed to parse consumer sampling configuration: bad sampling"); var expected = new JsApiError { Code = 497, ErrCode = 9092, Description = "override-3" }; var fromOverride = JsApiErrors.NewJSConsumerDuplicateFilterSubjectsError(JsApiErrors.Unless(expected)); fromOverride.Code.ShouldBe(expected.Code); fromOverride.ErrCode.ShouldBe(expected.ErrCode); fromOverride.Description.ShouldBe(expected.Description); ReferenceEquals(fromOverride, expected).ShouldBeFalse(); } [Fact] public void ConstructorSurface_Group04() { JsApiErrors.NewJSConsumerMaxPendingAckPolicyRequiredError().ErrCode.ShouldBe(JsApiErrors.ConsumerMaxPendingAckPolicyRequired.ErrCode); JsApiErrors.NewJSConsumerMaxRequestBatchNegativeError().ErrCode.ShouldBe(JsApiErrors.ConsumerMaxRequestBatchNegative.ErrCode); JsApiErrors.NewJSConsumerMaxRequestExpiresTooSmallError().ErrCode.ShouldBe(JsApiErrors.ConsumerMaxRequestExpiresTooSmall.ErrCode); JsApiErrors.NewJSConsumerMaxWaitingNegativeError().ErrCode.ShouldBe(JsApiErrors.ConsumerMaxWaitingNegative.ErrCode); JsApiErrors.NewJSConsumerMultipleFiltersNotAllowedError().ErrCode.ShouldBe(JsApiErrors.ConsumerMultipleFiltersNotAllowed.ErrCode); JsApiErrors.NewJSConsumerNameContainsPathSeparatorsError().ErrCode.ShouldBe(JsApiErrors.ConsumerNameContainsPathSeparators.ErrCode); JsApiErrors.NewJSConsumerNameExistError().ErrCode.ShouldBe(JsApiErrors.ConsumerNameExist.ErrCode); JsApiErrors.NewJSConsumerNotFoundError().ErrCode.ShouldBe(JsApiErrors.ConsumerNotFound.ErrCode); JsApiErrors.NewJSConsumerOfflineError().ErrCode.ShouldBe(JsApiErrors.ConsumerOffline.ErrCode); JsApiErrors.NewJSConsumerOnMappedError().ErrCode.ShouldBe(JsApiErrors.ConsumerOnMapped.ErrCode); JsApiErrors.NewJSConsumerOverlappingSubjectFiltersError().ErrCode.ShouldBe(JsApiErrors.ConsumerOverlappingSubjectFilters.ErrCode); JsApiErrors.NewJSConsumerPinnedTTLWithoutPriorityPolicyNoneError().ErrCode.ShouldBe(JsApiErrors.ConsumerPinnedTTLWithoutPriorityPolicyNone.ErrCode); JsApiErrors.NewJSConsumerPriorityGroupWithPolicyNoneError().ErrCode.ShouldBe(JsApiErrors.ConsumerPriorityGroupWithPolicyNone.ErrCode); JsApiErrors.NewJSConsumerPriorityPolicyWithoutGroupError().ErrCode.ShouldBe(JsApiErrors.ConsumerPriorityPolicyWithoutGroup.ErrCode); JsApiErrors.NewJSConsumerPullNotDurableError().ErrCode.ShouldBe(JsApiErrors.ConsumerPullNotDurable.ErrCode); JsApiErrors.NewJSConsumerMaxPendingAckExcessError(250).Description.ShouldBe("consumer max ack pending exceeds system limit of 250"); JsApiErrors.NewJSConsumerMaxRequestBatchExceededError(88).Description.ShouldBe("consumer max request batch exceeds server limit of 88"); JsApiErrors.NewJSConsumerMetadataLengthError(4096).Description.ShouldBe("consumer metadata exceeds maximum size of 4096"); JsApiErrors.NewJSConsumerNameTooLongError(33).Description.ShouldBe("consumer name is too long, maximum allowed is 33"); JsApiErrors.NewJSConsumerOfflineReasonError(new InvalidOperationException("storage unavailable")).Description.ShouldBe("consumer is offline: storage unavailable"); var expected = new JsApiError { Code = 496, ErrCode = 9093, Description = "override-4" }; var fromOverride = JsApiErrors.NewJSConsumerPullNotDurableError(JsApiErrors.Unless(expected)); fromOverride.Code.ShouldBe(expected.Code); fromOverride.ErrCode.ShouldBe(expected.ErrCode); fromOverride.Description.ShouldBe(expected.Description); ReferenceEquals(fromOverride, expected).ShouldBeFalse(); } [Fact] public void ConstructorSurface_Group05() { JsApiErrors.NewJSConsumerPullRequiresAckError().ErrCode.ShouldBe(JsApiErrors.ConsumerPullRequiresAck.ErrCode); JsApiErrors.NewJSConsumerPullWithRateLimitError().ErrCode.ShouldBe(JsApiErrors.ConsumerPullWithRateLimit.ErrCode); JsApiErrors.NewJSConsumerPushMaxWaitingError().ErrCode.ShouldBe(JsApiErrors.ConsumerPushMaxWaiting.ErrCode); JsApiErrors.NewJSConsumerPushWithPriorityGroupError().ErrCode.ShouldBe(JsApiErrors.ConsumerPushWithPriorityGroup.ErrCode); JsApiErrors.NewJSConsumerReplacementWithDifferentNameError().ErrCode.ShouldBe(JsApiErrors.ConsumerReplacementWithDifferentName.ErrCode); JsApiErrors.NewJSConsumerReplayPolicyInvalidError().ErrCode.ShouldBe(JsApiErrors.ConsumerReplayPolicyInvalid.ErrCode); JsApiErrors.NewJSConsumerReplicasExceedsStreamError().ErrCode.ShouldBe(JsApiErrors.ConsumerReplicasExceedsStream.ErrCode); JsApiErrors.NewJSConsumerReplicasShouldMatchStreamError().ErrCode.ShouldBe(JsApiErrors.ConsumerReplicasShouldMatchStream.ErrCode); JsApiErrors.NewJSConsumerSmallHeartbeatError().ErrCode.ShouldBe(JsApiErrors.ConsumerSmallHeartbeat.ErrCode); JsApiErrors.NewJSConsumerWQConsumerNotDeliverAllError().ErrCode.ShouldBe(JsApiErrors.ConsumerWQConsumerNotDeliverAll.ErrCode); JsApiErrors.NewJSConsumerWQConsumerNotUniqueError().ErrCode.ShouldBe(JsApiErrors.ConsumerWQConsumerNotUnique.ErrCode); JsApiErrors.NewJSConsumerWQMultipleUnfilteredError().ErrCode.ShouldBe(JsApiErrors.ConsumerWQMultipleUnfiltered.ErrCode); JsApiErrors.NewJSConsumerWQRequiresExplicitAckError().ErrCode.ShouldBe(JsApiErrors.ConsumerWQRequiresExplicitAck.ErrCode); JsApiErrors.NewJSConsumerWithFlowControlNeedsHeartbeatsError().ErrCode.ShouldBe(JsApiErrors.ConsumerWithFlowControlNeedsHeartbeats.ErrCode); JsApiErrors.NewJSInsufficientResourcesError().ErrCode.ShouldBe(JsApiErrors.InsufficientResources.ErrCode); JsApiErrors.NewJSMaximumConsumersLimitError().ErrCode.ShouldBe(JsApiErrors.MaximumConsumersLimit.ErrCode); JsApiErrors.NewJSMaximumStreamsLimitError().ErrCode.ShouldBe(JsApiErrors.MaximumStreamsLimit.ErrCode); JsApiErrors.NewJSMemoryResourcesExceededError().ErrCode.ShouldBe(JsApiErrors.MemoryResourcesExceeded.ErrCode); JsApiErrors.NewJSConsumerStoreFailedError(new InvalidOperationException("store failed")).Description.ShouldBe("error creating store for consumer: store failed"); JsApiErrors.NewJSInvalidJSONError(new InvalidOperationException("malformed")).Description.ShouldBe("invalid JSON: malformed"); var expected = new JsApiError { Code = 495, ErrCode = 9094, Description = "override-5" }; var fromOverride = JsApiErrors.NewJSConsumerPullRequiresAckError(JsApiErrors.Unless(expected)); fromOverride.Code.ShouldBe(expected.Code); fromOverride.ErrCode.ShouldBe(expected.ErrCode); fromOverride.Description.ShouldBe(expected.Description); ReferenceEquals(fromOverride, expected).ShouldBeFalse(); } }