Skip to content
Open
Original file line number Diff line number Diff line change
Expand Up @@ -115,8 +115,8 @@ public void ShouldLoadSettingsFromConfiguredDataStore()

// Assert
Assert.NotNull(loadedEnvironment);
// 5 built-in + 2 user-defined
Assert.Equal(7, settings.Environments.Count());
// 7 built-in + 2 user-defined
Assert.Equal(9, 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);
Expand Down Expand Up @@ -155,8 +155,8 @@ public void ShouldRemoveSettingsFromConfiguredDataStore()

// Assert
Assert.NotEmpty(settingsContent);
// 5 built-in + 1 user-defined
Assert.Equal(6, settings.Environments.Count());
// 7 built-in + 1 user-defined
Assert.Equal(8, settings.Environments.Count());

GraphSession.Reset();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,13 +64,13 @@ public async Task ShouldUseGlobalCloudWhenEnvironmentIsNotSet()
}

[Fact]
public async Task ShouldUseGermanyCloudWhenEnvironmentIsSetToGermany()
public async Task ShouldUseDelosCloudWhenEnvironmentIsSetToDelos()
{
GraphSession.Initialize(() => new GraphSession());

// Arrange
GraphEnvironment germanyEnvironment = GraphEnvironment.BuiltInEnvironments[GraphEnvironmentConstants.EnvironmentName.Germany];
GraphSession.Instance.Environment = germanyEnvironment;
GraphEnvironment delosEnvironment = GraphEnvironment.BuiltInEnvironments[GraphEnvironmentConstants.EnvironmentName.DelosCloud];
GraphSession.Instance.Environment = delosEnvironment;
Uri requestUrl = new Uri($"https://graph.microsoft.com/beta/users?{topParam}&{selectParam}");
var httpRequestMessage = new HttpRequestMessage(HttpMethod.Get, requestUrl);

Expand All @@ -80,7 +80,7 @@ public async Task ShouldUseGermanyCloudWhenEnvironmentIsSetToGermany()

// Assert
Assert.Equal(requestUrl.Scheme, response.RequestMessage.RequestUri.Scheme);
Assert.Equal("graph.microsoft.de", response.RequestMessage.RequestUri.Host);
Assert.Equal("graph.svc.sovcloud.de", response.RequestMessage.RequestUri.Host);
Assert.Contains(topParam, sentRequestQuery);
Assert.Contains(selectParam, sentRequestQuery);
Assert.Equal(2, sentRequestQuery.Split('&').Length);
Expand Down
58 changes: 44 additions & 14 deletions src/Authentication/Authentication/GraphEnvironmentConstants.cs
Original file line number Diff line number Diff line change
Expand Up @@ -30,14 +30,24 @@ public static class EnvironmentName
public const string USGovDoD = "USGovDoD";

/// <summary>
/// The graph national cloud for Germany.
/// The graph national cloud for China.
/// </summary>
public const string Germany = "Germany";
public const string China = "China";

/// <summary>
/// The graph national cloud for China.
/// The French sovereign cloud operated by Bleu.
/// </summary>
public const string China = "China";
public const string BleuCloud = "BleuCloud";

/// <summary>
/// The German sovereign cloud operated by Delos.
/// </summary>
public const string DelosCloud = "DelosCloud";

/// <summary>
/// Sovereign Government Cloud.
/// </summary>
public const string GovSGCloud = "GovSGCloud";
}

/// <summary>
Expand Down Expand Up @@ -84,16 +94,6 @@ public static class EnvironmentType
GraphEndpoint = "https://dod-graph.microsoft.us"
}
},
// Germany national cloud endpoints.
{
EnvironmentName.Germany, new GraphEnvironment
{
Name = EnvironmentName.Germany,
Type = EnvironmentType.BuiltIn,
AzureADEndpoint = "https://login.microsoftonline.de",
GraphEndpoint = "https://graph.microsoft.de"
}
},
// China national cloud endpoints.
{
EnvironmentName.China, new GraphEnvironment
Expand All @@ -103,6 +103,36 @@ public static class EnvironmentType
AzureADEndpoint = "https://login.chinacloudapi.cn",
GraphEndpoint = "https://microsoftgraph.chinacloudapi.cn"
}
},
// French sovereign cloud endpoints.
{
EnvironmentName.BleuCloud, new GraphEnvironment
{
Name = EnvironmentName.BleuCloud,
Type = EnvironmentType.BuiltIn,
AzureADEndpoint = "https://login.sovcloud-identity.fr",
GraphEndpoint = "https://graph.svc.sovcloud.fr"
}
},
// German sovereign cloud endpoints.
{
EnvironmentName.DelosCloud, new GraphEnvironment
{
Name = EnvironmentName.DelosCloud,
Type = EnvironmentType.BuiltIn,
AzureADEndpoint = "https://login.sovcloud-identity.de",
GraphEndpoint = "https://graph.svc.sovcloud.de"
}
},
// Sovereign Government Cloud endpoints.
{
EnvironmentName.GovSGCloud, new GraphEnvironment
{
Name = EnvironmentName.GovSGCloud,
Type = EnvironmentType.BuiltIn,
AzureADEndpoint = "https://login.sovcloud-identity.sg",
GraphEndpoint = "https://graph.svc.sovcloud.sg"
}
}
};
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,10 +27,10 @@ Describe 'Get-MgContext' {


It 'Should return the correct environment when specified via Connect-MgGraph -Environment' {
Connect-MgGraph -AccessToken (ConvertTo-SecureString -AsPlainText -String $DummyToken) -Environment Germany
Connect-MgGraph -AccessToken (ConvertTo-SecureString -AsPlainText -String $DummyToken) -Environment DelosCloud
$Context = Get-MgContext
$Context | Should -Not -Be $null
$Context.Environment | Should -Be "Germany"
$Context.Environment | Should -Be "DelosCloud"
$Context.AuthType | Should -Be "UserProvidedAccessToken"
}
}
Expand Down
Loading