public void Arrange()
        {
            Certificate = SetupCertificate();

            var certificateCheckController =
                new CertificateCheckController(Mock.Of <ILogger <CertificateController> >(),
                                               SetupHttpContextAssessor(),
                                               SetUpCertificateApiClient(),
                                               SetupValidator(),
                                               SetupSessionService()
                                               );

            certificateCheckController.TempData = new TempDataDictionary(new DefaultHttpContext(), Mock.Of <ITempDataProvider>());

            var vm = SetupViewModel();

            _result = certificateCheckController.Check(vm).GetAwaiter().GetResult() as ViewResult;
        }
        public void Setup()
        {
            _builder = new Builder();

            _mockContextAccessor      = new Mock <IHttpContextAccessor>();
            _mockCertificateApiClient = new Mock <ICertificateApiClient>();
            _mockSessionService       = new Mock <ISessionService>();
            _mockLocalizer            = new Mock <IStringLocalizer <CertificateCheckViewModelValidator> >();

            _mockContextAccessor.Setup(s => s.HttpContext.User.FindFirst("http://schemas.portal.com/ukprn")).Returns(new Claim("", Ukprn.ToString()));
            _mockContextAccessor.Setup(s => s.HttpContext.User.FindFirst("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn")).Returns(new Claim("", Username));
            _mockContextAccessor.Setup(s => s.HttpContext.User.FindFirst("http://schemas.portal.com/epaoid")).Returns(new Claim("", EpaoId));
            _mockContextAccessor.Setup(s => s.HttpContext.Request.Query).Returns(Mock.Of <IQueryCollection>());

            _mockLocalizer.Setup(localizer => localizer[It.IsAny <string>()]).Returns(new LocalizedString("Key", "Error"));

            _validator = new Mock <IValidator <CertificateCheckViewModel> >();

            var certSessionString = JsonConvert.SerializeObject(_builder.CreateNew <CertificateSession>()
                                                                .With(x => x.Options = null).Build());

            _mockSessionService.Setup(session => session.Get(nameof(CertificateSession)))
            .Returns(certSessionString);

            _certificateCheckController = new CertificateCheckController(
                Mock.Of <ILogger <CertificateController> >(),
                _mockContextAccessor.Object,
                _mockCertificateApiClient.Object,
                _validator.Object,
                _mockSessionService.Object);

            _certificateCheckController.TempData = new TempDataDictionary(_mockContextAccessor.Object.HttpContext, Mock.Of <ITempDataProvider>());

            _certificate = SetupValidCertificate();

            _mockCertificateApiClient.Setup(s => s.GetCertificate(It.IsAny <Guid>(), false)).ReturnsAsync(_certificate);
        }