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)); }
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); }