private static void UpdateExistingEntryForUser(string code, UserFitnessProvider mapMyFitnessDetails,
     AccessTokenResponse response, int mapMyFitnessUserId)
 {
     mapMyFitnessDetails.AuthorizationToken = code;
     mapMyFitnessDetails.AccessToken = response.access_token;
     mapMyFitnessDetails.ExternalUserId = mapMyFitnessUserId.ToString();
 }
        public void MapMyRunAuthorizationCallback_WhenUserIsNotConnected_ThenTheAuthorizationDataIsSaved()
        {
            // Arrange
            const string authorizationCode = "some code";
            const string accessToken = "access token";
            const int mmfUserId = 34;

            var dbContext = new FakeShoeTrackerDbContext();
            dbContext
                .WithFitnessProvider(1, "MapMyFitness");
            var api = Substitute.For<MapMyFitnessApi>();

            var accessTokenResponse = new AccessTokenResponse { access_token = accessToken };
            api.GetAccessToken(authorizationCode).Returns(accessTokenResponse);

            var currentUser = new User { id = mmfUserId };
            api.GetCurrentUser(accessTokenResponse.access_token).Returns(currentUser);

            var controller = new FitnessProviderController(dbContext, api)
                .WithAuthenticatedUser("some user", _currentUserId);

            // Act
            controller.MapMyRunAuthorizationCallback("some status", authorizationCode);

            // Assert
            var savedData = dbContext.UserFitnessProviders
                .First(f => f.UserId == _currentUserId && f.FitnessProvider.Name == "MapMyFitness");

            AssertMapMyFitnessAuthorizationDataIsSaved(savedData, authorizationCode, accessToken, mmfUserId, dbContext);
        }
 private void CreateNewEntryForUser(string currentUserId, string code, AccessTokenResponse response,
     int mapMyFitnessUserId)
 {
     var fitnessProvider = _dbContext.GetFitnessProvider(SupportedFitnessProvider.MapMyFitness);
     var details = new UserFitnessProvider
     {
         UserId = currentUserId,
         FitnessProvider = fitnessProvider,
         AuthorizationToken = code,
         AccessToken = response.access_token,
         ExternalUserId = mapMyFitnessUserId.ToString()
     };
     _dbContext.UserFitnessProviders.Add(details);
 }
 private int GetMapMyFitnessUserId(AccessTokenResponse response)
 {
     var userDetails = _mapMyfitnessApi.GetCurrentUser(response.access_token);
     var mapMyFitnessUserId = userDetails.id;
     return mapMyFitnessUserId;
 }