#pragma warning disable CS1998 // Async method lacks 'await' operators and will run synchronously public async Task TestOnBehalfOfConstructorNoDIWithCertificate_NullClientId_NullTenantId() #pragma warning restore CS1998 // Async method lacks 'await' operators and will run synchronously { if (TestCommon.RunningInGitHubWorkflow()) { Assert.Inconclusive("Skipping test because we're running inside a GitHub action and we don't have access to the certificate store"); } var configuration = TestCommon.GetConfigurationSettings(); var storeName = configuration.GetValue <StoreName>($"{TestGlobals.CredentialsConfigurationBasePath}:{onBehalfOfConfigurationPath}:OnBehalfOf:StoreName"); var storeLocation = configuration.GetValue <StoreLocation>($"{TestGlobals.CredentialsConfigurationBasePath}:{onBehalfOfConfigurationPath}:OnBehalfOf:StoreLocation"); var thumbprint = configuration.GetValue <string>($"{TestGlobals.CredentialsConfigurationBasePath}:{onBehalfOfConfigurationPath}:OnBehalfOf:Thumbprint"); var provider = new OnBehalfOfAuthenticationProvider( null, null, storeName, storeLocation, thumbprint, // We get the consumer access token using an InteractiveAuthenticationProvider () => GetUserAccessToken().GetAwaiter().GetResult()); Assert.IsNotNull(provider); Assert.IsNotNull(provider.ClientId); Assert.IsNotNull(provider.TenantId); Assert.IsNotNull(provider.Certificate); }
private static async Task <PnPContext> GetTestSiteExternalContext() { var configuration = TestCommon.GetConfigurationSettings(); var siteUrl = configuration.GetValue <Uri>($"{TestGlobals.SitesConfigurationBasePath}:{TestCommon.TestSiteExternal}:SiteUrl"); return(await TestCommon.Instance.GetContextAsync(siteUrl, PrepareExternalAuthenticationProvider())); }
private static OnBehalfOfAuthenticationProvider PrepareOnBehalfOfAuthenticationProviderWithCertificate() { if (TestCommon.RunningInGitHubWorkflow()) { Assert.Inconclusive("Skipping test because we're running inside a GitHub action and we don't have access to the certificate store"); } var configuration = TestCommon.GetConfigurationSettings(); var clientId = configuration.GetValue <string>($"{TestGlobals.CredentialsConfigurationBasePath}:{onBehalfOfConfigurationPath}:ClientId"); var tenantId = configuration.GetValue <string>($"{TestGlobals.CredentialsConfigurationBasePath}:{onBehalfOfConfigurationPath}:TenantId"); var storeName = configuration.GetValue <StoreName>($"{TestGlobals.CredentialsConfigurationBasePath}:{onBehalfOfConfigurationPath}:OnBehalfOf:StoreName"); var storeLocation = configuration.GetValue <StoreLocation>($"{TestGlobals.CredentialsConfigurationBasePath}:{onBehalfOfConfigurationPath}:OnBehalfOf:StoreLocation"); var thumbprint = configuration.GetValue <string>($"{TestGlobals.CredentialsConfigurationBasePath}:{onBehalfOfConfigurationPath}:OnBehalfOf:Thumbprint"); var provider = new OnBehalfOfAuthenticationProvider( clientId, tenantId, storeName, storeLocation, thumbprint, // We get the consumer access token using an InteractiveAuthenticationProvider () => GetUserAccessToken().GetAwaiter().GetResult()); return(provider); }
#pragma warning disable CS1998 // Async method lacks 'await' operators and will run synchronously public async Task TestCredentialManagerConstructorNoDI_NullCredentialManagerName() #pragma warning restore CS1998 // Async method lacks 'await' operators and will run synchronously { var configuration = TestCommon.GetConfigurationSettings(); var clientId = configuration.GetValue <string>($"{TestGlobals.CredentialsConfigurationBasePath}:{credentialManagerConfigurationPath}:ClientId"); var tenantId = configuration.GetValue <string>($"{TestGlobals.CredentialsConfigurationBasePath}:{credentialManagerConfigurationPath}:TenantId"); var provider = new CredentialManagerAuthenticationProvider( clientId, tenantId, credentialManagerName: null); }
#pragma warning disable CS1998 // Async method lacks 'await' operators and will run synchronously public async Task TestX509CertificateConstructorNoDI_NullThumbprint() #pragma warning restore CS1998 // Async method lacks 'await' operators and will run synchronously { var configuration = TestCommon.GetConfigurationSettings(); var storeName = configuration.GetValue <StoreName>($"{TestGlobals.CredentialsConfigurationBasePath}:{x509CertificateConfigurationPath}:X509Certificate:StoreName"); var storeLocation = configuration.GetValue <StoreLocation>($"{TestGlobals.CredentialsConfigurationBasePath}:{x509CertificateConfigurationPath}:X509Certificate:StoreLocation"); var provider = new X509CertificateAuthenticationProvider( AuthGlobals.DefaultClientId, AuthGlobals.OrganizationsTenantId, storeName, storeLocation, null); }
private static InteractiveAuthenticationProvider PrepareInteractiveAuthenticationProvider() { var configuration = TestCommon.GetConfigurationSettings(); var clientId = configuration.GetValue <string>($"{TestGlobals.CredentialsConfigurationBasePath}:{interactiveConfigurationPath}:ClientId"); var tenantId = configuration.GetValue <string>($"{TestGlobals.CredentialsConfigurationBasePath}:{interactiveConfigurationPath}:TenantId"); var redirectUri = configuration.GetValue <Uri>($"{TestGlobals.CredentialsConfigurationBasePath}:{interactiveConfigurationPath}:Interactive:RedirectUri"); var provider = new InteractiveAuthenticationProvider( clientId, tenantId, redirectUri); return(provider); }
private static CredentialManagerAuthenticationProvider PrepareCredentialManagerAuthenticationProvider() { var configuration = TestCommon.GetConfigurationSettings(); var clientId = configuration.GetValue <string>($"{TestGlobals.CredentialsConfigurationBasePath}:{credentialManagerConfigurationPath}:ClientId"); var tenantId = configuration.GetValue <string>($"{TestGlobals.CredentialsConfigurationBasePath}:{credentialManagerConfigurationPath}:TenantId"); var credentialManagerName = configuration.GetValue <string>($"{TestGlobals.CredentialsConfigurationBasePath}:{credentialManagerConfigurationPath}:CredentialManager:CredentialManagerName"); var provider = new CredentialManagerAuthenticationProvider( clientId, tenantId, credentialManagerName); return(provider); }
#pragma warning disable CS1998 // Async method lacks 'await' operators and will run synchronously public async Task TestOnBehalfOfConstructorNoDIWithClientSecret_NullClientSecret() #pragma warning restore CS1998 // Async method lacks 'await' operators and will run synchronously { var configuration = TestCommon.GetConfigurationSettings(); var storeName = configuration.GetValue <StoreName>($"{TestGlobals.CredentialsConfigurationBasePath}:{onBehalfOfConfigurationPath}:OnBehalfOf:StoreName"); var storeLocation = configuration.GetValue <StoreLocation>($"{TestGlobals.CredentialsConfigurationBasePath}:{onBehalfOfConfigurationPath}:OnBehalfOf:StoreLocation"); var provider = new OnBehalfOfAuthenticationProvider( AuthGlobals.DefaultClientId, AuthGlobals.OrganizationsTenantId, clientSecret: null, // We get the consumer access token using an InteractiveAuthenticationProvider () => GetUserAccessToken().GetAwaiter().GetResult()); }
private static DeviceCodeAuthenticationProvider PrepareDeviceCodeAuthenticationProvider() { var configuration = TestCommon.GetConfigurationSettings(); var clientId = configuration.GetValue <string>($"{TestGlobals.CredentialsConfigurationBasePath}:{deviceCodeConfigurationPath}:ClientId"); var tenantId = configuration.GetValue <string>($"{TestGlobals.CredentialsConfigurationBasePath}:{deviceCodeConfigurationPath}:TenantId"); var redirectUri = configuration.GetValue <Uri>($"{TestGlobals.CredentialsConfigurationBasePath}:{deviceCodeConfigurationPath}:DeviceCode:RedirectUri"); var provider = new DeviceCodeAuthenticationProvider( clientId, tenantId, redirectUri, DeviceCodeVerificationCallback); return(provider); }
#pragma warning disable CS1998 // Async method lacks 'await' operators and will run synchronously public async Task TestInteractiveConstructorNoDI_NullRedirectUri() #pragma warning restore CS1998 // Async method lacks 'await' operators and will run synchronously { var configuration = TestCommon.GetConfigurationSettings(); var clientId = configuration.GetValue <string>($"{TestGlobals.CredentialsConfigurationBasePath}:{interactiveConfigurationPath}:ClientId"); var tenantId = configuration.GetValue <string>($"{TestGlobals.CredentialsConfigurationBasePath}:{interactiveConfigurationPath}:TenantId"); var provider = new InteractiveAuthenticationProvider( clientId, tenantId, redirectUri: null); Assert.IsNotNull(provider); Assert.IsNotNull(provider.ClientId); Assert.IsNotNull(provider.TenantId); Assert.IsNotNull(provider.RedirectUri); }
#pragma warning disable CS1998 // Async method lacks 'await' operators and will run synchronously public async Task TestDeviceCodeConstructorNoDI_NullRedirectUri() #pragma warning restore CS1998 // Async method lacks 'await' operators and will run synchronously { var configuration = TestCommon.GetConfigurationSettings(); var clientId = configuration.GetValue <string>($"{TestGlobals.CredentialsConfigurationBasePath}:{deviceCodeConfigurationPath}:ClientId"); var tenantId = configuration.GetValue <string>($"{TestGlobals.CredentialsConfigurationBasePath}:{deviceCodeConfigurationPath}:TenantId"); var provider = new DeviceCodeAuthenticationProvider( clientId, tenantId, redirectUri: null, n => { }); // Fake notification, we don't care of it in this test Assert.IsNotNull(provider); Assert.IsNotNull(provider.ClientId); Assert.IsNotNull(provider.TenantId); Assert.IsNotNull(provider.RedirectUri); Assert.IsNotNull(provider.DeviceCodeVerification); }
private static X509CertificateAuthenticationProvider PrepareX509CertificateAuthenticationProvider() { //if (TestCommon.RunningInGitHubWorkflow()) Assert.Inconclusive("Skipping test because we're running inside a GitHub action and we don't have access to the certificate store"); var configuration = TestCommon.GetConfigurationSettings(); var clientId = configuration.GetValue <string>($"{TestGlobals.CredentialsConfigurationBasePath}:{x509CertificateConfigurationPath}:ClientId"); var tenantId = configuration.GetValue <string>($"{TestGlobals.CredentialsConfigurationBasePath}:{x509CertificateConfigurationPath}:TenantId"); var storeName = configuration.GetValue <StoreName>($"{TestGlobals.CredentialsConfigurationBasePath}:{x509CertificateConfigurationPath}:X509Certificate:StoreName"); var storeLocation = configuration.GetValue <StoreLocation>($"{TestGlobals.CredentialsConfigurationBasePath}:{x509CertificateConfigurationPath}:X509Certificate:StoreLocation"); var thumbprint = configuration.GetValue <string>($"{TestGlobals.CredentialsConfigurationBasePath}:{x509CertificateConfigurationPath}:X509Certificate:Thumbprint"); var provider = new X509CertificateAuthenticationProvider( clientId, tenantId, storeName, storeLocation, thumbprint); return(provider); }
#pragma warning disable CS1998 // Async method lacks 'await' operators and will run synchronously public async Task TestCredentialManagerConstructorNoDI_NullClientId_NullTenantId() #pragma warning restore CS1998 // Async method lacks 'await' operators and will run synchronously { // Credentialmanager does not work on Linux if (TestCommon.RunningInGitHubWorkflow()) { Assert.Inconclusive("Skipping live test because we're running inside a GitHub action"); } var configuration = TestCommon.GetConfigurationSettings(); var credentialManagerName = configuration.GetValue <string>($"{TestGlobals.CredentialsConfigurationBasePath}:{credentialManagerConfigurationPath}:CredentialManager:CredentialManagerName"); var provider = new CredentialManagerAuthenticationProvider( null, null, credentialManagerName); Assert.IsNotNull(provider); Assert.IsNotNull(provider.ClientId); Assert.IsNotNull(provider.TenantId); Assert.IsNotNull(provider.CredentialManagerName); }
#pragma warning disable CS1998 // Async method lacks 'await' operators and will run synchronously public async Task TestX509CertificateConstructorNoDI_NullClientId_NullTenantId() #pragma warning restore CS1998 // Async method lacks 'await' operators and will run synchronously { //if (TestCommon.RunningInGitHubWorkflow()) Assert.Inconclusive("Skipping test because we're running inside a GitHub action and we don't have access to the certificate store"); var configuration = TestCommon.GetConfigurationSettings(); var storeName = configuration.GetValue <StoreName>($"{TestGlobals.CredentialsConfigurationBasePath}:{x509CertificateConfigurationPath}:X509Certificate:StoreName"); var storeLocation = configuration.GetValue <StoreLocation>($"{TestGlobals.CredentialsConfigurationBasePath}:{x509CertificateConfigurationPath}:X509Certificate:StoreLocation"); var thumbprint = configuration.GetValue <string>($"{TestGlobals.CredentialsConfigurationBasePath}:{x509CertificateConfigurationPath}:X509Certificate:Thumbprint"); var provider = new X509CertificateAuthenticationProvider( null, null, storeName, storeLocation, thumbprint); Assert.IsNotNull(provider); Assert.IsNotNull(provider.ClientId); Assert.IsNotNull(provider.TenantId); Assert.IsNotNull(provider.Certificate); }
public async Task TestUsernamePasswordGetAccessTokenAsyncCorrect() { if (TestCommon.RunningInGitHubWorkflow()) { Assert.Inconclusive("Skipping live test because we're running inside a GitHub action"); } var configuration = TestCommon.GetConfigurationSettings(); var username = configuration.GetValue <string>($"{TestGlobals.CredentialsConfigurationBasePath}:{usernamePasswordConfigurationPath}:UsernamePassword:Username"); var password = configuration.GetValue <string>($"{TestGlobals.CredentialsConfigurationBasePath}:{usernamePasswordConfigurationPath}:UsernamePassword:Password"); var provider = new UsernamePasswordAuthenticationProvider( AuthGlobals.DefaultClientId, AuthGlobals.OrganizationsTenantId, username, password.ToSecureString()); var accessToken = await provider.GetAccessTokenAsync(TestGlobals.GraphResource); Assert.IsNotNull(accessToken); Assert.IsTrue(accessToken.Length > 0); }
public async Task TestUsernamePasswordAuthenticateRequestAsyncCorrect() { if (TestCommon.RunningInGitHubWorkflow()) { Assert.Inconclusive("Skipping live test because we're running inside a GitHub action"); } var configuration = TestCommon.GetConfigurationSettings(); var username = configuration.GetValue <string>($"{TestGlobals.CredentialsConfigurationBasePath}:{usernamePasswordConfigurationPath}:UsernamePassword:Username"); var password = configuration.GetValue <string>($"{TestGlobals.CredentialsConfigurationBasePath}:{usernamePasswordConfigurationPath}:UsernamePassword:Password"); var provider = new UsernamePasswordAuthenticationProvider( AuthGlobals.DefaultClientId, AuthGlobals.OrganizationsTenantId, username, password.ToSecureString()); var request = new HttpRequestMessage(HttpMethod.Get, TestGlobals.GraphMeRequest); await provider.AuthenticateRequestAsync(TestGlobals.GraphResource, request); Assert.IsNotNull(request.Headers.Authorization); Assert.AreEqual(request.Headers.Authorization.Scheme.ToLower(), "bearer"); }
public async Task SharePointTransformAsync() { var config = TestCommon.GetConfigurationSettings(); var services = new ServiceCollection(); services.AddTestPnPCore(); // You can use the default settings // services.AddPnPSharePointTransformation(); // Or you can provide a set of custom settings services.AddPnPSharePointTransformation( pnpOptions => // Global settings { pnpOptions.DisableTelemetry = false; pnpOptions.PersistenceProviderConnectionString = config["PersistenceProviderConnectionString"]; }, pageOptions => // Target modern page creation settings { pageOptions.CopyPageMetadata = true; pageOptions.KeepPageCreationModificationInformation = true; pageOptions.PostAsNews = false; pageOptions.PublishPage = false; pageOptions.DisablePageComments = false; pageOptions.KeepPageSpecificPermissions = true; pageOptions.Overwrite = true; pageOptions.ReplaceHomePageWithDefaultHomePage = true; pageOptions.SetAuthorInPageHeader = true; pageOptions.TargetPageFolder = ""; pageOptions.TargetPageName = ""; pageOptions.TargetPagePrefix = "Migrated_"; pageOptions.TargetPageTakesSourcePageName = true; }, spOptions => // SharePoint classic source settings { // spOptions.WebPartMappingFile = config["WebPartMappingFile"]; // spOptions.PageLayoutMappingFile = config["PageLayoutMappingFile"]; spOptions.RemoveEmptySectionsAndColumns = true; spOptions.ShouldMapUsers = true; spOptions.HandleWikiImagesAndVideos = true; spOptions.AddTableListImageAsImageWebPart = true; spOptions.IncludeTitleBarWebPart = true; spOptions.MappingProperties = null; spOptions.SkipHiddenWebParts = true; spOptions.SkipUrlRewrite = true; spOptions.UrlMappings = null; spOptions.UserMappings = null; } ); var provider = services.BuildServiceProvider(); var pnpContextFactory = provider.GetRequiredService <IPnPContextFactory>(); var pageTransformator = provider.GetRequiredService <IPageTransformator>(); var sourceContext = provider.GetRequiredService <ClientContext>(); var targetContext = await pnpContextFactory.CreateAsync(TestCommon.TargetTestSite); var sourceUri = new Uri(config["SourceUri"]); var result = await pageTransformator.TransformSharePointAsync(sourceContext, targetContext, sourceUri); Assert.IsNotNull(result); var expectedUri = new Uri($"{targetContext.Web.Url}/SitePages/Migrated_{sourceUri.Segments[sourceUri.Segments.Length - 1]}"); Assert.AreEqual(expectedUri.AbsoluteUri, result.AbsoluteUri, ignoreCase: true); }