public virtual async Task InitializeAsync() { var tenantName = Guid.NewGuid().ToString("n"); var tablePrefix = await TablePrefixGenerator.GeneratePrefixAsync(); var createModel = new Tenants.ViewModels.CreateApiViewModel { DatabaseProvider = DatabaseProvider, TablePrefix = tablePrefix, ConnectionString = ConnectionString, RecipeName = RecipeName, Name = tenantName, RequestUrlPrefix = tenantName }; var createResult = await DefaultTenantClient.PostAsJsonAsync("api/tenants/create", createModel); createResult.EnsureSuccessStatusCode(); var content = await createResult.Content.ReadAsStringAsync(); var url = new Uri(content.Trim('"')); url = new Uri(url.Scheme + "://" + url.Authority + url.LocalPath + "/"); var setupModel = new Tenants.ViewModels.SetupApiViewModel { SiteName = "Test Site", DatabaseProvider = DatabaseProvider, TablePrefix = tablePrefix, ConnectionString = ConnectionString, RecipeName = RecipeName, UserName = "******", Password = "******", Name = tenantName, Email = "Nick@Orchard" }; var setupResult = await DefaultTenantClient.PostAsJsonAsync("api/tenants/setup", setupModel); setupResult.EnsureSuccessStatusCode(); lock (Site) { Client = Site.CreateDefaultClient(url); TenantName = tenantName; } if (PermissionsContext != null) { var permissionContextKey = Guid.NewGuid().ToString(); SiteStartup.PermissionsContexts.TryAdd(permissionContextKey, PermissionsContext); Client.DefaultRequestHeaders.Add("PermissionsContext", permissionContextKey); } GraphQLClient = new OrchardGraphQLClient(Client); }
public async Task TenantPrefixShouldBeUnique() { var tablePrefixGenerator = new TablePrefixGenerator(); var prefixes = new HashSet <string>(); for (var i = 0; i < 200; i++) { var prefix = await tablePrefixGenerator.GeneratePrefixAsync(); Assert.DoesNotContain(prefix, prefixes); prefixes.Add(prefix); } }