/// <summary> /// Initializes <see cref="GraphSession"/>. with Output via Cmdlet methods /// </summary> /// <param name="outputWriter"></param> internal static void InitializeOutput(IPSGraphOutputWriter outputWriter) { GraphSession.Modify(session => { session.OutputWriter = outputWriter; }); }
public void objects_with_inheritance_chain_are_proxied_correctly() { var metadataFactory = new AttributeMetadataFactory(new NullLogger()); var proxyFactory = new DynamicProxyFactory(metadataFactory, new NullLogger()); var queryExecutorFactory = new Mock <IQueryExecutorFactory>(); var repositoryFactory = new RepositoryFactory(proxyFactory); var parentMapper = new Mock <IMapper <Parent> >(); repositoryFactory.Register <Parent>(x => parentMapper.Object); var childMapper = new Mock <IMapper <Child> >(); repositoryFactory.Register <Child>(x => childMapper.Object); var stateTracker = new EntityStateCache(); using (var session = new GraphSession(new UnitOfWork(stateTracker), new List <IListener>(), queryExecutorFactory.Object, repositoryFactory, stateTracker, proxyFactory)) { var entity = new ParentWithInheritedChild { Id = "1", Type = new SuperTypeA { Id = "1" } }; var proxy = proxyFactory.Create(entity, session); Assert.True(proxy.Type is SuperTypeA); } }
public void all_objects_in_the_object_graph_are_proxied() { var metadataFactory = new AttributeMetadataFactory(new NullLogger()); var queryExecutorFactory = new Mock <IQueryExecutorFactory>(); var repositoryFactory = new Mock <IRepositoryFactory>(); var stateTracker = new EntityStateCache(); var proxyFactory = new DynamicProxyFactory(metadataFactory, new NullLogger()); using (var session = new GraphSession(new UnitOfWork(stateTracker), new List <IListener>(), queryExecutorFactory.Object, repositoryFactory.Object, stateTracker, proxyFactory)) { var factory = new DynamicProxyFactory(metadataFactory, new NullLogger()); var item = new Person { Id = "1", Contacts = new List <Contact> { new Contact { Id = "1" } } }; var proxy = factory.Create(item, session); Assert.True(ProxyUtils.IsProxy(proxy)); Assert.True(proxy.Contacts is ITrackableCollection <Contact>); Assert.True(ProxyUtils.IsProxy(proxy.Contacts[0])); } }
public async Task ShouldUseGermanyCloudWhenEnvironmentIsSetToGermany() { GraphSession.Initialize(() => new GraphSession()); // Arrange GraphEnvironment germanyEnvironment = GraphEnvironment.BuiltInEnvironments[GraphEnvironmentConstants.EnvironmentName.Germany]; GraphSession.Instance.Environment = germanyEnvironment; Uri requestUrl = new Uri($"https://graph.microsoft.com/beta/users?{topParam}&{selectParam}"); var httpRequestMessage = new HttpRequestMessage(HttpMethod.Get, requestUrl); // Act var response = await this._invoker.SendAsync(httpRequestMessage, new CancellationToken()); var sentRequestQuery = response.RequestMessage.RequestUri.Query; // Assert Assert.Equal(requestUrl.Scheme, response.RequestMessage.RequestUri.Scheme); Assert.Equal("graph.microsoft.de", response.RequestMessage.RequestUri.Host); Assert.Contains(topParam, sentRequestQuery); Assert.Contains(selectParam, sentRequestQuery); Assert.Equal(2, sentRequestQuery.Split('&').Length); GraphSession.Reset(); }
public async Task ShouldUseUserDefinedCloudWhenEnvironmentIsSetToAUserDefinedCloud() { GraphSession.Initialize(() => new GraphSession()); // Arrange GraphEnvironment userDefinedEnvironment = new GraphEnvironment { Name = "Canary", AzureADEndpoint = "https://login.microsoftonline.com", GraphEndpoint = "https://canary.graph.microsoft.com" }; GraphSession.Instance.Environment = userDefinedEnvironment; Uri requestUrl = new Uri($"https://graph.microsoft.com/v1.0/users?{topParam}&{selectParam}"); var httpRequestMessage = new HttpRequestMessage(HttpMethod.Get, requestUrl); // Act var response = await this._invoker.SendAsync(httpRequestMessage, new CancellationToken()); var sentRequestQuery = response.RequestMessage.RequestUri.Query; // Assert Assert.Equal(requestUrl.Scheme, response.RequestMessage.RequestUri.Scheme); Assert.Equal("canary.graph.microsoft.com", response.RequestMessage.RequestUri.Host); Assert.Contains(topParam, sentRequestQuery); Assert.Contains($"${selectParam}", sentRequestQuery); Assert.Equal(2, sentRequestQuery.Split('&').Length); GraphSession.Reset(); }
public void properties_which_are_marked_as_ignored_are_not_proxied() { var metadataFactory = new AttributeMetadataFactory(new NullLogger()); var queryExecutorFactory = new Mock <IQueryExecutorFactory>(); var repositoryFactory = new Mock <IRepositoryFactory>(); var stateTracker = new EntityStateCache(); var proxyFactory = new DynamicProxyFactory(metadataFactory, new NullLogger()); using (var session = new GraphSession(new UnitOfWork(stateTracker), new List <IListener>(), queryExecutorFactory.Object, repositoryFactory.Object, stateTracker, proxyFactory)) { var factory = new DynamicProxyFactory(metadataFactory, new NullLogger()); var item = new EntityWithIgnoredProperty { Id = "1", Ignored = new AnotherEntity { Id = "2" }, Proxied = new AnotherEntity { Id = "3" } }; var proxy = factory.Create(item, session); Assert.True(ProxyUtils.IsProxy(proxy)); Assert.True(ProxyUtils.IsProxy(proxy.Proxied)); Assert.False(ProxyUtils.IsProxy(proxy.Ignored)); } }
public void factory_creates_meta_data_correctly_from_a_proxy_object() { var metadataFactory = new AttributeMetadataFactory(new NullLogger()); var queryExecutorFactory = new Mock <IQueryExecutorFactory>(); var repositoryFactory = new Mock <IRepositoryFactory>(); var stateTracker = new EntityStateCache(); var proxyFactory = new DynamicProxyFactory(metadataFactory, new NullLogger()); using (var session = new GraphSession(new UnitOfWork(stateTracker), new List <IListener>(), queryExecutorFactory.Object, repositoryFactory.Object, stateTracker, proxyFactory)) { var factory = new DynamicProxyFactory(metadataFactory, new NullLogger()); var item = new Parent { Id = "1", Child = new Child { Id = "2" }, Children = new List <Child> { new Child { Id = "3" } } }; var proxy = factory.Create(item, session); var parentMetadata = metadataFactory.Create(proxy); Assert.Equal("Parent", parentMetadata.Name); var childMetadta = metadataFactory.Create(proxy.Child); Assert.Equal("Child", childMetadta.Name); } }
public void nullable_types_are_ignored() { var metadataFactory = new AttributeMetadataFactory(new NullLogger()); var proxyFactory = new DynamicProxyFactory(metadataFactory, new NullLogger()); var queryExecutorFactory = new Mock <IQueryExecutorFactory>(); var repositoryFactory = new RepositoryFactory(proxyFactory); var parentMapper = new Mock <IMapper <Parent> >(); repositoryFactory.Register <Parent>(x => parentMapper.Object); var childMapper = new Mock <IMapper <Child> >(); repositoryFactory.Register <Child>(x => childMapper.Object); var stateTracker = new EntityStateCache(); using (var session = new GraphSession(new UnitOfWork(stateTracker), new List <IListener>(), queryExecutorFactory.Object, repositoryFactory, stateTracker, proxyFactory)) { var entity = new EntityWithNullableType { Id = "1", Date = DateTime.Now }; var proxy = proxyFactory.Create(entity, session); Assert.NotNull(proxy.Date); } }
public void circular_dependencies_are_proxied_correctly() { var metadataFactory = new AttributeMetadataFactory(new NullLogger()); var proxyFactory = new DynamicProxyFactory(metadataFactory, new NullLogger()); var queryExecutorFactory = new Mock <IQueryExecutorFactory>(); var repositoryFactory = new RepositoryFactory(proxyFactory); var parentMapper = new Mock <IMapper <Parent> >(); repositoryFactory.Register <Parent>(x => parentMapper.Object); var childMapper = new Mock <IMapper <Child> >(); repositoryFactory.Register <Child>(x => childMapper.Object); var stateTracker = new EntityStateCache(); using (var session = new GraphSession(new UnitOfWork(stateTracker), new List <IListener>(), queryExecutorFactory.Object, repositoryFactory, stateTracker, proxyFactory)) { var a = new EntityA { Id = "a" }; var b = new EntityB { Id = "b" }; a.EntityB = b; b.EntityA = a; var proxy = proxyFactory.Create(a, session); Assert.NotNull(proxy); Assert.NotNull(proxy.EntityB); Assert.NotNull(proxy.EntityB.EntityA); Assert.Same(proxy, proxy.EntityB.EntityA); } }
public void ShouldSerializeAndDeserializeSettings() { GraphSession.Initialize(() => new GraphSession()); // Arrange GraphSession.Instance.DataStore = new MockDataStore(); GraphSettings settings = new GraphSettings(ProtectedFileProvider.CreateFileProvider(Constants.SettingFilePath, FileProtection.SharedRead)); GraphEnvironment userDefinedEnv = new GraphEnvironment { Name = "TestCloud", Type = GraphEnvironmentConstants.EnvironmentType.UserDefined, AzureADEndpoint = "https://tester.com", GraphEndpoint = "https://tester.com" }; settings.EnvironmentTable[userDefinedEnv.Name] = userDefinedEnv; // Act string serializedSettings = settings.ToString(); settings.TryDeserializeObject(serializedSettings, out GraphSettings deserializedSettings, new GraphSettingsConverter()); deserializedSettings.TryGetEnvironment(userDefinedEnv.Name, out IGraphEnvironment deserializedEnv); // Assert Assert.NotNull(deserializedSettings); Assert.NotNull(deserializedEnv); Assert.Equal(serializedSettings, deserializedSettings.ToString()); Assert.Equal(userDefinedEnv.GraphEndpoint, deserializedEnv.GraphEndpoint); GraphSession.Reset(); }
public void ShouldUseCertThumbPrintInsteadOfPassedInCertificateWhenBothAreSpecified() { // Arrange var dummyCertName = "CN=dummycert"; var inMemoryCertName = "CN=inmemorycert"; var storedDummyCertificate = CreateAndStoreSelfSignedCert(dummyCertName); var inMemoryCertificate = CreateSelfSignedCert(inMemoryCertName); AuthContext appOnlyAuthContext = new AuthContext { AuthType = AuthenticationType.AppOnly, ClientId = Guid.NewGuid().ToString(), CertificateThumbprint = storedDummyCertificate.Thumbprint, Certificate = inMemoryCertificate, ContextScope = ContextScope.Process }; // Act IAuthenticationProvider authProvider = AuthenticationHelpers.GetAuthProvider(appOnlyAuthContext); // Assert Assert.IsType <ClientCredentialProvider>(authProvider); var clientCredentialProvider = (ClientCredentialProvider)authProvider; // Assert: That the certificate used is dummycert (Thumbprint), that is in the store Assert.NotEqual(inMemoryCertName, clientCredentialProvider.ClientApplication.AppConfig.ClientCredentialCertificate.SubjectName.Name); Assert.Equal(appOnlyAuthContext.CertificateThumbprint, clientCredentialProvider.ClientApplication.AppConfig.ClientCredentialCertificate.Thumbprint); //CleanUp DeleteSelfSignedCertByThumbprint(appOnlyAuthContext.CertificateThumbprint); GraphSession.Reset(); }
public async Task ShouldUseDelegateAuthProviderWhenUserAccessTokenIsProvidedAsync() { // Arrange string accessToken = "ACCESS_TOKEN_VIA_DELEGATE_PROVIDER"; GraphSession.Instance.UserProvidedToken = new NetworkCredential(string.Empty, accessToken).SecurePassword; AuthContext userProvidedAuthContext = new AuthContext { AuthType = AuthenticationType.UserProvidedAccessToken, ContextScope = ContextScope.Process }; IAuthenticationProvider authProvider = AuthenticationHelpers.GetAuthProvider(userProvidedAuthContext); HttpRequestMessage requestMessage = new HttpRequestMessage(); // Act await authProvider.AuthenticateRequestAsync(requestMessage); // Assert Assert.IsType <DelegateAuthenticationProvider>(authProvider); Assert.Equal("Bearer", requestMessage.Headers.Authorization.Scheme); Assert.Equal(accessToken, requestMessage.Headers.Authorization.Parameter); // reset static instance. GraphSession.Reset(); }
public void change_tracking_is_applied_when_entity_set_in_constructor() { var metadataFactory = new AttributeMetadataFactory(new NullLogger()); var queryExecutorFactory = new Mock <IQueryExecutorFactory>(); var mapper = new Mock <IMapper <Parent> >(); var repositoryFactory = new Mock <IRepositoryFactory>(); repositoryFactory.Setup(x => x.Create(It.IsAny <IGraphSession>(), It.IsAny <Type>())).Returns <IGraphSession, Type>((s, t) => new GenericAbstractRepository <Parent>(mapper.Object, s, new DynamicProxyFactory(metadataFactory, new NullLogger()))); var stateTracker = new EntityStateCache(); var proxyFactory = new DynamicProxyFactory(metadataFactory, new NullLogger()); using (var session = new GraphSession(new UnitOfWork(stateTracker), new List <IListener>(), queryExecutorFactory.Object, repositoryFactory.Object, stateTracker, proxyFactory)) { var proxy = session.Create(new Parent { Id = "1", Child = new Child { Id = "2" } }); var state = stateTracker.Get(proxy.Child); Assert.Equal(EntityStatus.New, state.Status); } }
public void depdendencies_are_incremented_when_property_set() { var metadataFactory = new AttributeMetadataFactory(new NullLogger()); var queryExecutorFactory = new Mock <IQueryExecutorFactory>(); var repositoryFactory = new Mock <IRepositoryFactory>(); var stateTracker = new EntityStateCache(); var proxyFactory = new DynamicProxyFactory(metadataFactory, new NullLogger()); using (var session = new GraphSession(new UnitOfWork(stateTracker), new List <IListener>(), queryExecutorFactory.Object, repositoryFactory.Object, stateTracker, proxyFactory)) { var factory = new DynamicProxyFactory(metadataFactory, new NullLogger()); var parent = factory.Create(new Parent { Id = "parent" }, session); var child = factory.Create(new Child { Id = "child" }, session); parent.Child = child; var parentState = stateTracker.Get(parent); Assert.Equal(2, parentState.Dependencies.Sequence); var childState = stateTracker.Get(child); Assert.Equal(1, childState.Dependencies.Sequence); } }
public void ShouldThrowExceptionWhenSessionIsNotInitialized() { InvalidOperationException exception = Assert.Throws <InvalidOperationException>(() => GraphSession.Instance); Assert.Equal(ErrorConstants.Codes.SessionNotInitialized, exception.Message); // reset static instance. GraphSession.Reset(); }
public void GraphSessionShouldBeInitilizedAfterInitializerIsCalled() { GraphSession.Initialize(() => new GraphSession()); Assert.NotNull(GraphSession.Instance); Assert.Null(GraphSession.Instance.AuthContext); // reset static instance. GraphSession.Reset(); }
public void ShouldThrowExceptionWhenOutputIsNotInitialized() { GraphSession.Initialize(() => new GraphSession()); InvalidOperationException exception = Assert.Throws <InvalidOperationException>(() => GraphSession.Instance.OutputWriter.WriteObject("Output")); Assert.NotNull(GraphSession.Instance); Assert.Null(GraphSession.Instance.AuthContext); // reset static instance. GraphSession.Reset(); }
public void ShouldNotOverwriteExistingGraphSession() { GraphSession.Initialize(() => new GraphSession()); Guid originalSessionId = GraphSession.Instance._graphSessionId; GraphSession.Initialize(() => new GraphSession()); Assert.NotNull(GraphSession.Instance); Assert.Equal(originalSessionId, GraphSession.Instance._graphSessionId); // reset static instance. GraphSession.Reset(); }
public void ShouldNotOverwriteExistingGraphSession() { GraphSession.Initialize(() => new GraphSession()); Guid originalSessionId = GraphSession.Instance._graphSessionId; InvalidOperationException exception = Assert.Throws <InvalidOperationException>(() => GraphSession.Initialize(() => new GraphSession())); Assert.Equal("An instance of GraphSession already exists. Call Initialize(Func<GraphSession>, bool) to overwrite it.", exception.Message); Assert.NotNull(GraphSession.Instance); Assert.Equal(originalSessionId, GraphSession.Instance._graphSessionId); // reset static instance. GraphSession.Reset(); }
public void interceptors_are_not_created_for_re_entrant_proxies() { var metadataFactory = new AttributeMetadataFactory(new NullLogger()); var proxyFactory = new DynamicProxyFactory(metadataFactory, new NullLogger()); var queryExecutorFactory = new Mock <IQueryExecutorFactory>(); var repositoryFactory = new RepositoryFactory(proxyFactory); var parentMapper = new Mock <IMapper <Parent> >(); repositoryFactory.Register <Parent>(x => parentMapper.Object); var childMapper = new Mock <IMapper <Child> >(); repositoryFactory.Register <Child>(x => childMapper.Object); var stateTracker = new EntityStateCache(); using (var session = new GraphSession(new UnitOfWork(stateTracker), new List <IListener>(), queryExecutorFactory.Object, repositoryFactory, stateTracker, proxyFactory)) { var proxy = session.Create(new Parent { Id = "1" }); proxy.Child = session.Create(new Child { Id = "1" }); var metadata = metadataFactory.Create(proxy); var deleted = ProxyUtils.Flush(proxy, metadata["Child"].Relationship); Assert.Equal(0, deleted.SelectMany(x => x.Flush().Cast <object>()).Count()); var reentrant = session.Create(proxy); Assert.Equal(proxy, reentrant); metadata = metadataFactory.Create(reentrant); deleted = ProxyUtils.Flush(reentrant, metadata["Child"].Relationship); Assert.Equal(0, deleted.SelectMany(x => x.Flush().Cast <object>()).Count()); proxy.Child = session.Create(new Child { Id = "2" }); metadata = metadataFactory.Create(reentrant); deleted = ProxyUtils.Flush(reentrant, metadata["Child"].Relationship); Assert.Equal(1, deleted.SelectMany(x => x.Flush().Cast <object>()).Count()); } }
public void GetGraphHttpClientWithDefaultParametersShouldReturnHttpClientWithDefaultTimeout() { GraphSession.Initialize(() => new GraphSession()); GraphSession.Instance.AuthContext = new AuthContext { AuthType = AuthenticationType.UserProvidedAccessToken, ContextScope = ContextScope.Process }; HttpClient httpClient = HttpHelpers.GetGraphHttpClient(); Assert.Equal(GraphSession.Instance.AuthContext.ClientTimeout, TimeSpan.FromSeconds(Constants.ClientTimeout)); Assert.Equal(httpClient.Timeout, GraphSession.Instance.AuthContext.ClientTimeout); // reset static instance. GraphSession.Reset(); }
public void properties_set_during_construction_are_restored_after_proxy_created() { var metadataFactory = new AttributeMetadataFactory(new NullLogger()); var queryExecutorFactory = new Mock <IQueryExecutorFactory>(); var repositoryFactory = new Mock <IRepositoryFactory>(); var stateTracker = new EntityStateCache(); var proxyFactory = new DynamicProxyFactory(metadataFactory, new NullLogger()); using (var session = new GraphSession(new UnitOfWork(stateTracker), new List <IListener>(), queryExecutorFactory.Object, repositoryFactory.Object, stateTracker, proxyFactory)) { var factory = new DynamicProxyFactory(metadataFactory, new NullLogger()); var item = new EntityWithPropertiesSetInConstructor("1", "Test"); var proxy = factory.Create(item, session); Assert.Equal("1", proxy.Id); Assert.Equal("Test", proxy.Name); } }
public void an_exception_is_thrown_if_id_null() { var metadataFactory = new AttributeMetadataFactory(new NullLogger()); var queryExecutorFactory = new Mock <IQueryExecutorFactory>(); var repositoryFactory = new Mock <IRepositoryFactory>(); var stateTracker = new EntityStateCache(); var proxyFactory = new DynamicProxyFactory(metadataFactory, new NullLogger()); using (var session = new GraphSession(new UnitOfWork(stateTracker), new List <IListener>(), queryExecutorFactory.Object, repositoryFactory.Object, stateTracker, proxyFactory)) { Assert.Throws <PropertyNotSetException>(() => { var factory = new DynamicProxyFactory(metadataFactory, new NullLogger()); var notSet = new AnotherEntity(); factory.Create(notSet, session); }); } }
public void ShouldInitializeOutputWriter() { GraphSessionInitializer.InitializeSession(); GraphSessionInitializer.InitializeOutput(new PsGraphOutputWriter { WriteError = (exception1, s, arg3, arg4) => _helper.WriteLine(exception1.Message), WriteObject = _helper.WriteLine, WriteDebug = _helper.WriteLine, WriteInformation = (o, s) => _helper.WriteLine(s), WriteVerbose = _helper.WriteLine }); GraphSession.Instance.OutputWriter.WriteObject("Output"); Assert.NotNull(GraphSession.Instance.OutputWriter); Assert.NotNull(GraphSession.Instance.OutputWriter.WriteObject); // reset static instance. GraphSession.Reset(); }
public void GetGraphHttpClientWithClientTimeoutParameterShouldReturnHttpClientWithSpecifiedTimeout() { GraphSession.Initialize(() => new GraphSession()); TimeSpan timeSpan = TimeSpan.FromSeconds(10); var authContext = new AuthContext { AuthType = AuthenticationType.UserProvidedAccessToken, ContextScope = ContextScope.Process }; IAuthenticationProvider authProvider = AuthenticationHelpers.GetAuthProvider(authContext); HttpClient httpClient = HttpHelpers.GetGraphHttpClient(authProvider, timeSpan); Assert.Equal(authContext.ClientTimeout, TimeSpan.FromSeconds(Constants.ClientTimeout)); Assert.Equal(httpClient.Timeout, timeSpan); // reset static instance. GraphSession.Reset(); }
public void ShouldUseInteractiveProviderWhenDelegated() { // Arrange AuthContext delegatedAuthContext = new AuthContext { AuthType = AuthenticationType.Delegated, Scopes = new[] { "User.Read" }, ContextScope = ContextScope.Process }; // Act IAuthenticationProvider authProvider = AuthenticationHelpers.GetAuthProvider(delegatedAuthContext); // Assert Assert.IsType <InteractiveAuthenticationProvider>(authProvider); // reset static instance. GraphSession.Reset(); }
public void ShouldUseDeviceCodeWhenFallback() { // Arrange AuthContext delegatedAuthContext = new AuthContext { AuthType = AuthenticationType.Delegated, Scopes = new[] { "User.Read" }, ContextScope = ContextScope.Process, AuthProviderType = AuthProviderType.DeviceCodeProviderFallBack }; // Act IAuthenticationProvider authProvider = AuthenticationHelpers.GetAuthProvider(delegatedAuthContext); // Assert Assert.IsType <DeviceCodeProvider>(authProvider); // reset static instance. GraphSession.Reset(); }
public void GetGraphHttpClientShouldReturnHttpClientWithCustomerProvidedTimeout() { GraphSession.Initialize(() => new GraphSession()); TimeSpan timeSpan = TimeSpan.FromSeconds(10); GraphSession.Instance.AuthContext = new AuthContext { AuthType = AuthenticationType.UserProvidedAccessToken, ContextScope = ContextScope.Process, ClientTimeout = timeSpan }; HttpClient httpClient = HttpHelpers.GetGraphHttpClient(); Assert.Equal(GraphSession.Instance.AuthContext.ClientTimeout, timeSpan); Assert.Equal(httpClient.Timeout, timeSpan); // reset static instance. GraphSession.Reset(); }
public void ShouldLoadSettingsFromConfiguredDataStore() { GraphSession.Initialize(() => new GraphSession()); // Arrange GraphSession.Instance.DataStore = new MockDataStore(); string settingsContent = @"{ ""EnvironmentTable"": { ""MyNewCloud"": { ""Name"": ""MyNewCloud"", ""AzureADEndpoint"": ""https://login.MyNewCloud.com"", ""GraphEndpoint"": ""https://graph.MyNewCloud.com"", ""Type"": ""User-defined"" }, ""TrialCloud"": { ""Name"": ""MyNewCloud"", ""AzureADEndpoint"": ""https://login.TrialCloud.com"", ""GraphEndpoint"": ""https://graph.TrialCloud.com"", ""Type"": ""User-defined"" } } }"; GraphSession.Instance.DataStore.WriteFile(Constants.SettingFilePath, settingsContent); // Act // Loads settings from disk store. GraphSettings settings = new GraphSettings(ProtectedFileProvider.CreateFileProvider(Constants.SettingFilePath, FileProtection.SharedRead)); settings.TryGetEnvironment("MyNewCloud", out IGraphEnvironment loadedEnvironment); // Assert Assert.NotNull(loadedEnvironment); // 5 built-in + 2 user-defined Assert.Equal(7, settings.Environments.Count()); Assert.Equal("https://login.MyNewCloud.com", loadedEnvironment.AzureADEndpoint); Assert.Equal("https://graph.MyNewCloud.com", loadedEnvironment.GraphEndpoint); Assert.Equal(GraphEnvironmentConstants.EnvironmentType.UserDefined, loadedEnvironment.Type); GraphSession.Reset(); }
public void ShouldUseInMemoryCertificateWhenProvided() { // Arrange var certificate = CreateSelfSignedCert("cn=inmemorycert"); AuthContext appOnlyAuthContext = new AuthContext { AuthType = AuthenticationType.AppOnly, ClientId = Guid.NewGuid().ToString(), Certificate = certificate, ContextScope = ContextScope.Process }; // Act IAuthenticationProvider authProvider = AuthenticationHelpers.GetAuthProvider(appOnlyAuthContext); // Assert Assert.IsType <ClientCredentialProvider>(authProvider); var clientCredentialProvider = (ClientCredentialProvider)authProvider; // Assert: That the certificate created and set above is the same as used here. Assert.Equal(clientCredentialProvider.ClientApplication.AppConfig.ClientCredentialCertificate, certificate); GraphSession.Reset(); }
/// <summary> /// Creates a new <see cref="Employment"/> from the specified JSON object and <see cref="GraphSession"/>. /// </summary> /// <param name="token">The source JSON object.</param> /// <param name="session">The session that is creating the object.</param> public Employment(JToken token, GraphSession session) : base(token, session) { }
/// <summary> /// Creates a new <see cref="Video"/> from the specified JSON object and <see cref="GraphSession"/>. /// </summary> /// <param name="source">The source JSON object.</param> /// <param name="session">The session that is creating the object.</param> public Video(JToken source, GraphSession session) : base(source, session) { }
/// <summary> /// Creates a new <see cref="Note"/> from the specified JSON object and <see cref="GraphSession"/>. /// </summary> /// <param name="source">The source JSON object.</param> /// <param name="session">The session that is creating the object.</param> public Note(JToken source, GraphSession session) : base(source, session) { }
/// <summary> /// Creates a new <see cref="Link"/> from the specified JSON object and <see cref="GraphSession"/>. /// </summary> /// <param name="source">The source JSON object.</param> /// <param name="session">The session that is creating the object.</param> public Link(JToken source, GraphSession session) : base(source, session) { }
/// <summary> /// Creates a new <see cref="GraphEvent"/> from the specified JSON object and <see cref="GraphSession"/>. /// </summary> /// <param name="source">The source JSON object.</param> /// <param name="session">The session that is creating the object.</param> public GraphEvent(JToken source, GraphSession session) : base(source, session) { }
/// <summary> /// Creates a new <see cref="User"/> from the specified JSON object and <see cref="GraphSession"/>. /// </summary> /// <param name="obj">The source JSON object.</param> /// <param name="session">The session that is creating the object.</param> public User(JToken obj, GraphSession session) : base(obj, session) { }
/// <summary> /// Creates a new <see cref="Message"/> from the specified JSON object and <see cref="GraphSession"/>. /// </summary> /// <param name="source">The source JSON object.</param> /// <param name="session">The session that is creating the object.</param> public Message(JToken source, GraphSession session) : base(source, session) { }