OptionsSnapshotMock.cs 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. using Hotline.Configurations;
  2. using Microsoft.AspNetCore.Http;
  3. using Microsoft.Extensions.Configuration;
  4. using Microsoft.Extensions.Options;
  5. using System;
  6. using System.Collections.Generic;
  7. using System.Linq;
  8. using System.Security.Claims;
  9. using System.Text;
  10. using System.Threading.Tasks;
  11. using XF.Domain.Authentications;
  12. using static Hotline.AppDefaults;
  13. namespace Hotline.Application.Tests.Mock;
  14. public class OptionsSnapshotMock : IOptionsSnapshot<AppConfiguration>
  15. {
  16. private readonly IHttpContextAccessor _contextAccessor;
  17. private readonly IConfiguration _configuration;
  18. public OptionsSnapshotMock(IHttpContextAccessor contextAccessor, IConfiguration configuration)
  19. {
  20. _contextAccessor = contextAccessor;
  21. _configuration = configuration;
  22. }
  23. public AppConfiguration Value
  24. {
  25. get
  26. {
  27. var appConfiguration = _configuration.GetRequiredSection(nameof(AppConfiguration)).Get<AppConfiguration>();
  28. if (_contextAccessor != null && _contextAccessor.HttpContext != null)
  29. appConfiguration.AppScope = _contextAccessor.HttpContext.User.FindFirstValue("AppScope");
  30. return appConfiguration;
  31. }
  32. }
  33. public AppConfiguration Get(string? name)
  34. {
  35. throw new NotImplementedException();
  36. }
  37. }