예제 #1
0
        public async Task AcquireRedditAuthorizationTokenAsync_WhenRedirectUriIsNull_ThrowsArgumentNullException()
        {
            string    state       = Guid.NewGuid().ToString("D");
            const Uri redirectUri = null;

            IRedditAccessTokenProviderFactory sut = CreateSut();

            await sut.AcquireRedditAuthorizationTokenAsync(state, redirectUri);
        }
예제 #2
0
        public async Task AcquireRedditAuthorizationTokenAsync_WhenStateIsWhitespaces_ThrowsArgumentNullException()
        {
            const string state       = "  ";
            Uri          redirectUri = new Uri($"http://localhost/{Guid.NewGuid().ToString("D")}");

            IRedditAccessTokenProviderFactory sut = CreateSut();

            await sut.AcquireRedditAuthorizationTokenAsync(state, redirectUri);
        }
예제 #3
0
        public async Task AcquireRedditAuthorizationTokenAsync_WhenCalled_AssertAuthenticationRedditClientIdWasCalledOnConfiguration()
        {
            string state       = Guid.NewGuid().ToString("D");
            Uri    redirectUri = new Uri($"http://localhost/{Guid.NewGuid().ToString("D")}");

            IRedditAccessTokenProviderFactory sut = CreateSut();

            await sut.AcquireRedditAuthorizationTokenAsync(state, redirectUri);

            _configurationMock.Verify(m => m[It.Is <string>(value => string.Compare("Authentication:Reddit:ClientId", value, StringComparison.Ordinal) == 0)], Times.Once);
        }
예제 #4
0
        public void AcquireRedditAuthorizationTokenAsync_WhenCalled_ReturnsTaskFromDataProviderFactory()
        {
            string state       = Guid.NewGuid().ToString("D");
            Uri    redirectUri = new Uri($"http://localhost/{Guid.NewGuid().ToString("D")}");

            Task <Uri> acquireRedditAuthorizationTokenTask = Task.Run <Uri>(() => new Uri($"http://localhost/{Guid.NewGuid().ToString("D")}"));
            IRedditAccessTokenProviderFactory sut          = CreateSut(acquireRedditAuthorizationTokenTask: acquireRedditAuthorizationTokenTask);

            Task <Uri> result = sut.AcquireRedditAuthorizationTokenAsync(state, redirectUri);

            Assert.AreEqual(acquireRedditAuthorizationTokenTask, result);
        }
예제 #5
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));
        }
예제 #6
0
        public async Task AcquireRedditAuthorizationTokenAsync_WhenCalled_AssertAcquireRedditAuthorizationTokenAsyncWasCalledOnDataProviderFactory()
        {
            string state       = Guid.NewGuid().ToString("D");
            Uri    redirectUri = new Uri($"http://localhost/{Guid.NewGuid().ToString("D")}");

            string clientId = Guid.NewGuid().ToString("D");
            IRedditAccessTokenProviderFactory sut = CreateSut(clientId: clientId);

            await sut.AcquireRedditAuthorizationTokenAsync(state, redirectUri);

            _dataProviderFactoryMock.Verify(m => m.AcquireRedditAuthorizationTokenAsync(
                                                It.Is <string>(value => string.Compare(clientId, value, StringComparison.Ordinal) == 0),
                                                It.Is <string>(value => string.Compare(state, value, StringComparison.Ordinal) == 0),
                                                It.Is <Uri>(value => value == redirectUri)),
                                            Times.Once);
        }