Beispiel #1
0
        public void ToCookie(DashboardSettingsViewModel dashboardSettingsViewModel)
        {
            if (dashboardSettingsViewModel == null)
            {
                throw new ArgumentNullException(nameof(dashboardSettingsViewModel));
            }

            StoreCookie(DashboardSettingsViewModel.CookieName, dashboardSettingsViewModel,
                        viewModel => _contentHelper.ToBase64String(viewModel),
                        (viewModel, secureHttpRequest) =>
            {
                DateTime expires = DateTime.Now.AddHours(8);
                if (string.IsNullOrWhiteSpace(viewModel.RedditAccessToken) == false)
                {
                    IRedditAccessToken redditAccessToken = RedditAccessToken.Create(viewModel.RedditAccessToken);
                    if (redditAccessToken != null && redditAccessToken.Expires <= expires)
                    {
                        expires = redditAccessToken.Expires;
                    }
                }

                return(new CookieOptions
                {
                    Expires = expires,
                    Secure = secureHttpRequest,
                    SameSite = SameSiteMode.None
                });
            });
        }
Beispiel #2
0
        public void ToBase64String_WhenCalledWithDashboardSettingsViewModel_AssertProtectWasCalledOnDataProtector()
        {
            IContentHelper sut = CreateSut();

            DashboardSettingsViewModel dashboardSettingsViewModel = BuildDashboardSettingsViewModel();

            sut.ToBase64String(dashboardSettingsViewModel);

            _dataProtectorMock.Verify(m => m.Protect(It.Is <byte[]>(value => value != null && value.Length > 0)), Times.Once);
        }
Beispiel #3
0
        public void ToBase64String_WhenCalledWithStringValue_AssertProtectWasCalledOnDataProtector()
        {
            IContentHelper sut = CreateSut();

            string stringValue = Guid.NewGuid().ToString("D");

            sut.ToBase64String(stringValue);

            _dataProtectorMock.Verify(m => m.Protect(It.Is <byte[]>(value => value != null && string.CompareOrdinal(Encoding.UTF8.GetString(value), stringValue) == 0)), Times.Once);
        }
Beispiel #4
0
        public void ToBase64String_WhenCalledWithDashboardSettingsViewModel_AssertCreateProtectorWasCalledOnDataProtectionProviderWithSettingsProtection()
        {
            IContentHelper sut = CreateSut();

            DashboardSettingsViewModel dashboardSettingsViewModel = BuildDashboardSettingsViewModel();

            sut.ToBase64String(dashboardSettingsViewModel);

            _dataProtectionProviderMock.Verify(m => m.CreateProtector(It.Is <string>(value => string.CompareOrdinal(value, "SettingsProtection") == 0)), Times.Once);
        }
Beispiel #5
0
        public void ToBase64String_WhenCalledWithStringValue_AssertCreateProtectorWasCalledOnDataProtectionProviderWithValueProtection()
        {
            IContentHelper sut = CreateSut();

            string stringValue = Guid.NewGuid().ToString("D");

            sut.ToBase64String(stringValue);

            _dataProtectionProviderMock.Verify(m => m.CreateProtector(It.Is <string>(value => string.CompareOrdinal(value, "ValueProtection") == 0)), Times.Once);
        }
Beispiel #6
0
        public void ToBase64String_WhenCalledWithDashboardSettingsViewModel_ReturnsBase64String()
        {
            IContentHelper sut = CreateSut();

            DashboardSettingsViewModel dashboardSettingsViewModel = BuildDashboardSettingsViewModel();
            string result = sut.ToBase64String(dashboardSettingsViewModel);

            Assert.IsNotNull(result);
            Assert.IsTrue(result.Length > 0);
            Assert.IsTrue(result.Trim().Length % 4 == 0 && _base64StringRegex.IsMatch(result.Trim()));
        }
Beispiel #7
0
        public void ToBase64String_WhenCalledWithStringValue_ReturnsBase64String()
        {
            IContentHelper sut = CreateSut();

            string stringValue = Guid.NewGuid().ToString("D");
            string result      = sut.ToBase64String(stringValue);

            Assert.IsNotNull(result);
            Assert.IsTrue(result.Length > 0);
            Assert.IsTrue(result.Trim().Length % 4 == 0 && _base64StringRegex.IsMatch(result.Trim()));
        }
Beispiel #8
0
        private async Task <IActionResult> AcquireRedditAuthorizationTokenAsync(DashboardSettingsViewModel dashboardSettingsViewModel)
        {
            if (dashboardSettingsViewModel == null)
            {
                throw new ArgumentNullException(nameof(dashboardSettingsViewModel));
            }

            string dashboardSettingsViewModelAsBase64 = _contentHelper.ToBase64String(dashboardSettingsViewModel);
            Uri    redirectUrl = new Uri(_contentHelper.AbsoluteUrl("RedditCallback", "Home"));

            Uri acquireRedditAuthorizationTokenUrl = await _redditAccessTokenProviderFactory.AcquireRedditAuthorizationTokenAsync(dashboardSettingsViewModelAsBase64, redirectUrl);

            return(Redirect(acquireRedditAuthorizationTokenUrl.AbsoluteUri));
        }
Beispiel #9
0
        public void ToBase64String_WhenStringValueIsEmpty_ThrowsArgumentNullException()
        {
            IContentHelper sut = CreateSut();

            sut.ToBase64String(string.Empty);
        }
Beispiel #10
0
        public void ToBase64String_WhenDashboardSettingsViewModelIsNull_ThrowsArgumentNullException()
        {
            IContentHelper sut = CreateSut();

            sut.ToBase64String((DashboardSettingsViewModel)null);
        }
Beispiel #11
0
        public void ToBase64String_WhenStringValueIsWhiteSpaces_ThrowsArgumentNullException()
        {
            IContentHelper sut = CreateSut();

            sut.ToBase64String("  ");
        }
Beispiel #12
0
        public static string GetBuildUrl(this DashboardSettingsViewModel dashboardSettingsViewModel, IContentHelper contentHelper)
        {
            if (dashboardSettingsViewModel == null)
            {
                throw new ArgumentNullException(nameof(dashboardSettingsViewModel));
            }
            if (contentHelper == null)
            {
                throw new ArgumentNullException(nameof(contentHelper));
            }

            return(contentHelper.AbsoluteUrl("Build", "Home", new { DashboardSettings = contentHelper.ToBase64String(dashboardSettingsViewModel) }));
        }