Exemple #1
0
        public void GetAccessTokenWithInvalidExchangeToken_InvalidAccessTokenReturned()
        {
            var exchangeTokenRequest = new DTO.Request.StravaExchangeTokenRequest
            {
                client_id       = 1234567,
                approval_prompt = "force",
                redirect_uri    = new System.Uri("localhost:5000/callback"),
                scope           = "read,activity:read_all",
                response_type   = "code"
            };
            var retrievedExchangeToken = sut.GetExchangeToken(exchangeTokenRequest);

            retrievedExchangeToken.Result.code.Should().NotBeNullOrEmpty();
            retrievedExchangeToken.Result.scope.Should().Be(exchangeTokenRequest.scope);
            retrievedExchangeToken.Result.state.Should().Be(null);

            var accessTokenRequest = new DTO.Request.StravaAccessTokenRequest
            {
                client_id     = 1234567,
                client_secret = "something",
                code          = null,
                grant_type    = "authorization_code"
            };

            var retrievedAccessToken = sut.GetAccessToken(accessTokenRequest);

            retrievedAccessToken.Result.access_token.Should().BeNull();
            retrievedAccessToken.Result.refresh_token.Should().BeNull();
            retrievedAccessToken.Result.token_type.Should().BeNull();
            retrievedAccessToken.Result.athlete.Should().BeNull();
            retrievedAccessToken.Result.expires_at.Should().BeNull();
            retrievedAccessToken.Result.expires_in.Should().BeNull();
        }
        public async Task <DTO.StravaAuthenticationTokenResponse> GetAccessToken([FromQuery] DTO.Request.StravaAccessTokenRequest request)
        {
            if (request.code == null || request.client_id == null || request.client_secret == null)
            {
                return(new DTO.StravaAuthenticationTokenResponse());
            }

            RandomNumberGenerator rng = new RNGCryptoServiceProvider();

            byte[] buffer0 = new byte[100];
            byte[] buffer1 = new byte[100];
            rng.GetBytes(buffer0);
            rng.GetBytes(buffer1);

            await Task.Delay(0);

            return(new DTO.StravaAuthenticationTokenResponse
            {
                access_token = Convert.ToBase64String(buffer0),
                refresh_token = Convert.ToBase64String(buffer1),
                expires_at = 543773478,
                expires_in = 3600,
                token_type = "Bearer",
                athlete = new DTO.Athlete
                {
                    id = 123456789,
                    resource_state = 2
                }
            });
        }