private Person GetUserByContext(ref Dictionary <string, string> contextMapping, ExternalId user)
        {
            var urlEndPoint = contextMapping.ContainsKey(user.Context)
                ? contextMapping[user.Context]
                : ContextMappingLocalStorage.Resolve(user.Context);

            if (urlEndPoint == null)
            {
                return(GetPersonWithNoPersonInfo(user));
            }

            if (!contextMapping.ContainsKey(user.Context))
            {
                contextMapping.Add(user.Context, urlEndPoint);
            }

            var personInfo = RestSharpHelper.Get <PersonalInfo>(new RestSharpParams()
            {
                ApiEndPoint = urlEndPoint.Replace("{id}", user.Id),
                BaseUrl     = GetBaseUri(urlEndPoint),
                MethodType  = Method.GET
            });
            var person = PersonLocalStorage.CreatePersonAsync(new Person(user, personInfo)).Result;

            return(person);
        }
        public static IPersonalInfoEnrichmentService BuildService(ILogger logger)
        {
            var settings = new TableStorageSettings()
            {
                ConnectionString = InfrastructureConfiguration.TableStorageConnString
            };

            var initializer = new AzureTableStorageInitializer(settings);

            var storedPersonalInfoRepo = new AzureTableStorageRepository <StoredPersonalInfo>(initializer, logger);
            var personLocalStorage     = new PersonLocalStorage(storedPersonalInfoRepo);

            var contextMappingRepo = new AzureTableStorageRepository <ContextMapping>(initializer, logger);

            var contextMappingLocalStorage = new ContextMappingLocalStorage(contextMappingRepo);

            var authenticationSettings = new AuthenticationSettings(InfrastructureConfiguration.AuthProviderUri,
                                                                    InfrastructureConfiguration.AuthProviderClient,
                                                                    InfrastructureConfiguration.AuthProviderSecret);

            var authenticationProvider = new AuthenticationProvider(authenticationSettings);

            var personalInfoExternalServiceFactory = new PersonalInfoExternalServiceFactory(contextMappingLocalStorage, authenticationProvider, logger);


            return(new PersonalInfoEnrichmentService(personLocalStorage, personalInfoExternalServiceFactory, logger));
        }
Example #3
0
        public void WhenThereisNoPersonInfoInStoredTable_thenShouldCallTheAPIForGettingTheUserInfo()
        {
            PersonLocalStorageMock.Setup(x => x.FindPersonAsync(It.IsAny <ExternalId>()))
            .Returns(Task.FromResult <Person>(null));
            ContextMappingLocalStorage.Setup(x => x.Resolve(It.IsAny <string>())).Returns(
                "http://we-d-app-youforce-ext-resolver.azurewebsites.net/api/persons/{id}/personaldetails");
            RestSharpHelper.Setup(e => e.Get <Person>(It.IsAny <RestSharpParams>())).Returns(GetRandomPersonData());
            var userInfo = new UserInformation(PersonLocalStorageMock.Object, ContextMappingLocalStorage.Object,
                                               RestSharpHelper.Object);
            var result = userInfo.GetUsers(new List <ExternalId>
            {
                ExternalIdMockInfoUser1,
                ExternalIdMockInfoUser2
            });

            Assert.True(result.ToList().Count == 2);
        }