public async Task Execute_IdentityCtx_Has_Tenant_Should_Set_It_On_Message()
    {
        // Arrange
        var integrationMessage = new FakeIntegrationMessage();

        var expectedTenantId = _fixture.Fixture.Create <long>();

        Mock.Get(_fixture.IdentityContext)
        .Setup(s => s.HasAssociatedTenant)
        .Returns(true);

        Mock.Get(_fixture.IdentityContext)
        .Setup(s => s.TenantId)
        .Returns(expectedTenantId);

        // Act
        await _fixture.Step.Execute(integrationMessage, CancellationToken.None);

        // Assert
        var result = integrationMessage
                     .GetMetadata(TenantIdMetadataKey);

        result
        .Should()
        .Be(expectedTenantId.ToString());
    }
    public async Task Execute_IdentityCtx_And_Message_Both_Have_Tenant_Should_Not_Update_Message()
    {
        // Arrange
        var integrationMessage = new FakeIntegrationMessage();
        var messageTenantId    = _fixture.Fixture.Create <long>();

        integrationMessage.SetMetadata(TenantIdMetadataKey, messageTenantId.ToString());

        var ctxTenantId = _fixture.Fixture.Create <long>();

        Mock.Get(_fixture.IdentityContext)
        .Setup(s => s.HasAssociatedTenant)
        .Returns(true);

        Mock.Get(_fixture.IdentityContext)
        .Setup(s => s.TenantId)
        .Returns(ctxTenantId);

        // Act
        await _fixture.Step.Execute(integrationMessage, CancellationToken.None);

        // Assert
        var result = integrationMessage
                     .GetMetadata(TenantIdMetadataKey);

        result
        .Should()
        .Contain(messageTenantId.ToString());
    }
        public ExtractOperationContextFromMessageMetadataStepFixture()
        {
            FakeOperationContext = OperationContext.New();
            WorkloadContext      = new WorkloadContext();
            IntegrationMessage   = new FakeIntegrationMessage();

            Logger = Mock.Of <ILogger <ExtractOperationContextFromMessageMetadataStep> >();
            Step   = new ExtractOperationContextFromMessageMetadataStep(WorkloadContext, Logger);
        }
    public void GetMessageName_Message_Is_Passed_Returns_MessageName()
    {
        // Arrange

        // Act
        var result = new FakeIntegrationMessage().GetMessageName();

        // Assert
        result
        .Should()
        .Be(nameof(FakeIntegrationMessage));
    }
Exemple #5
0
    public async Task Execute_IntegrationMessage_Has_User_Should_Set_It_To_IdentityContext()
    {
        // Arrange
        var expectedUserId     = _fixture.Fixture.Create <string>();
        var integrationMessage = new FakeIntegrationMessage();

        integrationMessage.SetMetadata(UserIdMetadataKey, expectedUserId);

        // Act
        await _fixture.Step.Execute(integrationMessage, CancellationToken.None);

        // Assert
        Mock.Get(_fixture.IdentityContext)
        .Verify(v => v.SetUserId(expectedUserId));
    }
Exemple #6
0
    public async Task Execute_No_Parent_OperationCtx_And_MessageMetadata_Has_No_OperationCtx_Should_Initialize_And_Add_New_OperationCtx()
    {
        var fakeMessage = new FakeIntegrationMessage();

        _fixture
        .SetupServiceProviderToReturnEmptyOperationContext();

        // Act
        await _fixture.Step.Execute(fakeMessage, CancellationToken.None);

        // Assert
        var operationCtx = fakeMessage.GetMetadata(OperationContext.MetaName);

        operationCtx
        .Should()
        .Contain(AddOrUpdateOperationContextStep.InitialOperationSuffix);
    }
    public async Task Execute_IdentityCtx_DoesNot_Have_Tenant_Should_Not_Set_It_On_Message()
    {
        // Arrange
        var integrationMessage = new FakeIntegrationMessage();

        Mock.Get(_fixture.IdentityContext)
        .Setup(s => s.HasAssociatedTenant)
        .Returns(false);

        // Act
        await _fixture.Step.Execute(integrationMessage, CancellationToken.None);

        // Assert
        var result = integrationMessage
                     .HasMetadata(TenantIdMetadataKey);

        result.Should().Be(false);
    }
Exemple #8
0
    public async Task Execute_Parent_OperationCtx_Presents_Should_Pass_It_Into_Message_With_It()
    {
        // Arrange
        var fakeMessage = new FakeIntegrationMessage();

        _fixture
        .SetupServiceProviderToReturnNonEmptyOperationContext();

        // Act
        await _fixture.Step.Execute(fakeMessage, CancellationToken.None);

        // Assert
        var operationCtx = fakeMessage.GetMetadata(OperationContext.MetaName);

        operationCtx
        .Should()
        .Contain(AddOrUpdateOperationContextFixture.FakeInitialOperationName);
    }
Exemple #9
0
    public async Task Execute_IntegrationMessage_Has_Tenant_But_IdentityCtx_Is_Initialized()
    {
        // Arrange
        var messageTenantId    = _fixture.Fixture.Create <long>();
        var integrationMessage = new FakeIntegrationMessage();

        integrationMessage.SetMetadata(TenantIdMetadataKey, messageTenantId.ToString());

        Mock.Get(_fixture.IdentityContext)
        .Setup(x => x.HasAssociatedTenant)
        .Returns(true);

        // Act
        await _fixture.Step.Execute(integrationMessage, CancellationToken.None);

        // Assert
        Mock.Get(_fixture.IdentityContext)
        .Verify(v => v.SetCurrentTenant(It.IsAny <long>()), Times.Never);
    }
Exemple #10
0
    public async Task Execute_No_Parent_OperationCtx_But_MessageMetadata_Has_OperationCtx_Should_Do_Nothing()
    {
        // Arrange
        var fakeMessage = new FakeIntegrationMessage();
        var initialMessageOperationCtx = _fixture.FakeExistingOperationContext.Pack();

        fakeMessage.SetMetadata(OperationContext.MetaName, initialMessageOperationCtx);

        _fixture
        .SetupServiceProviderToReturnEmptyOperationContext();

        // Act
        await _fixture.Step.Execute(fakeMessage, CancellationToken.None);

        // Assert
        var operationCtx = fakeMessage.GetMetadata(OperationContext.MetaName);

        operationCtx
        .Should()
        .BeEquivalentTo(initialMessageOperationCtx);
    }