• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

loresoft / MediatR.CommandQuery / 8953371852

04 May 2024 09:23PM UTC coverage: 57.083% (-0.3%) from 57.379%
8953371852

push

github

pwelter34
wrap exceptions

343 of 702 branches covered (48.86%)

Branch coverage included in aggregate %.

4 of 18 new or added lines in 5 files covered. (22.22%)

5 existing lines in 4 files now uncovered.

1011 of 1670 relevant lines covered (60.54%)

18.34 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

80.49
/src/MediatR.CommandQuery/Behaviors/TenantFilterBehaviorBase.cs
1
using System.Security.Principal;
2

3
using MediatR.CommandQuery.Definitions;
4
using MediatR.CommandQuery.Queries;
5

6
using Microsoft.Extensions.Logging;
7

8
namespace MediatR.CommandQuery.Behaviors;
9

10
public abstract class TenantFilterBehaviorBase<TKey, TEntityModel, TRequest, TResponse>
11
    : PipelineBehaviorBase<TRequest, TResponse>
12
    where TEntityModel : class
13
    where TRequest : class, IRequest<TResponse>
14
{
15
    // ReSharper disable once StaticMemberInGenericType
16
    private static readonly Lazy<bool> _supportsTenant = new(SupportsTenant);
8✔
17

18

19
    protected TenantFilterBehaviorBase(ILoggerFactory loggerFactory, ITenantResolver<TKey> tenantResolver) : base(loggerFactory)
20✔
20
    {
21
        TenantResolver = tenantResolver ?? throw new ArgumentNullException(nameof(tenantResolver));
20!
22
    }
20✔
23

24
    protected ITenantResolver<TKey> TenantResolver { get; }
20✔
25

26

27
    protected virtual async Task<EntityFilter?> RewriteFilter(EntityFilter? originalFilter, IPrincipal? principal)
28
    {
29
        if (!_supportsTenant.Value)
20!
30
            return originalFilter;
×
31

32
        var tenantId = await TenantResolver.GetTenantId(principal).ConfigureAwait(false);
20✔
33
        if (Equals(tenantId, default(TKey)))
20!
34
        {
NEW
35
            Logger.LogError("Could not find tenant for the query request.");
×
UNCOV
36
            throw new DomainException(500, "Could not find tenant for the query request.");
×
37
        }
38

39
        var tenantFilter = new EntityFilter
20✔
40
        {
20✔
41
            Name = nameof(IHaveTenant<TKey>.TenantId),
20✔
42
            Value = tenantId,
20✔
43
            Operator = EntityFilterOperators.Equal
20✔
44
        };
20✔
45

46
        if (originalFilter == null)
20!
47
            return tenantFilter;
×
48

49
        var boolFilter = new EntityFilter
20✔
50
        {
20✔
51
            Logic = EntityFilterLogic.And,
20✔
52
            Filters = new List<EntityFilter>
20✔
53
                {
20✔
54
                    tenantFilter,
20✔
55
                    originalFilter
20✔
56
                }
20✔
57
        };
20✔
58

59
        return boolFilter;
20✔
60
    }
20✔
61

62
    private static bool SupportsTenant()
63
    {
64
        var interfaceType = typeof(IHaveTenant<TKey>);
8✔
65
        var entityType = typeof(TEntityModel);
8✔
66

67
        return interfaceType.IsAssignableFrom(entityType);
8✔
68
    }
69

70
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc