mirror of
https://github.com/zoriya/octokit.net.git
synced 2026-06-07 04:16:51 +00:00
Begin implementation of Enterprise ManagementConsole API, redux (#2010)
* Initial implementation of ManagementConsole - maintenance mode * Add environment var support for management console password for integration tests * Add reactive client and unit tests * Update some xmlDoc * I think this is a better way to setup the underlying baseUri on IConneciton, to achieve managemet console access rather than requiring a specific GitHubClient that cant call normal API's Instead, the management client methods can check the base Url and if it contains /api/v3/ they can set their relative endpoint Uri to include a leading "/" which will cause the /api/v3/ to be removed. * Update EnterpriseClient.cs Fix xml comments * Update IEnterpriseClient.cs Fix xml comments * Still trying to get the xmDoc perfect, thanks app veyor :) * XmlDoc'ing my way to success * Add specific test attribute for management console tests * check chronic string empty/null * Use helper's password field in test * Tidy up maintenance mode tests by using a context/destructor to manage the initial/end state of maintenance mode * make internal and tidy up URL concatenation * move GHE endpoint fixup inside ApiUrls methods * Rework request object to be the correct structure so SimpleJsonSerializer can be used to serialize it. Remove MaintenanceDate class and just pass in the Date/string for when Still need to use UrlFormEncoding rather than json in the POST body though... * Create abstract base class for FormUrlEncoded parameters (similar to existing RequetParameters) and inherit from it in UpdateMaintenanceRequest * Fix maintenance context logic - destructor should always turn maintenance OFF regardless of initial requested state * Fix xml comment * Fix Xml comment * Those pesky xml comments! * Fine, I give up! * Fix string.Format * fix bad rebase * fix failing convention tests * restore missing whitespace * writing some docs * some edits * edit
This commit is contained in:
@@ -0,0 +1,92 @@
|
||||
using System;
|
||||
using NSubstitute;
|
||||
using Octokit.Reactive;
|
||||
using Xunit;
|
||||
|
||||
namespace Octokit.Tests
|
||||
{
|
||||
public class ObservableEnterpriseManagementConsoleClientTests
|
||||
{
|
||||
public class TheGetMaintenanceModeMethod
|
||||
{
|
||||
[Fact]
|
||||
public void CallsIntoClient()
|
||||
{
|
||||
var github = Substitute.For<IGitHubClient>();
|
||||
var client = new ObservableEnterpriseManagementConsoleClient(github);
|
||||
|
||||
client.GetMaintenanceMode("Password01");
|
||||
|
||||
github.Enterprise.ManagementConsole.Received(1).
|
||||
GetMaintenanceMode(Arg.Is("Password01"));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void EnsuresNonNullArguments()
|
||||
{
|
||||
var github = Substitute.For<IGitHubClient>();
|
||||
var client = new ObservableEnterpriseManagementConsoleClient(github);
|
||||
|
||||
Assert.Throws<ArgumentNullException>(() => client.GetMaintenanceMode(null));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void EnsuresNonEmptyArguments()
|
||||
{
|
||||
var github = Substitute.For<IGitHubClient>();
|
||||
var client = new ObservableEnterpriseManagementConsoleClient(github);
|
||||
|
||||
Assert.Throws<ArgumentException>(() => client.GetMaintenanceMode(""));
|
||||
}
|
||||
}
|
||||
|
||||
public class TheEditMaintenanceModeMethod
|
||||
{
|
||||
[Fact]
|
||||
public void CallsIntoClient()
|
||||
{
|
||||
var github = Substitute.For<IGitHubClient>();
|
||||
var client = new ObservableEnterpriseManagementConsoleClient(github);
|
||||
|
||||
client.EditMaintenanceMode(
|
||||
new UpdateMaintenanceRequest(new UpdateMaintenanceRequestDetails(true)),
|
||||
"Password01");
|
||||
|
||||
github.Enterprise.ManagementConsole.Received(1).
|
||||
EditMaintenanceMode(
|
||||
Arg.Is<UpdateMaintenanceRequest>(a =>
|
||||
a.Maintenance.Enabled == true &&
|
||||
a.Maintenance.When == "now"),
|
||||
Arg.Is("Password01"));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void EnsuresNonNullArguments()
|
||||
{
|
||||
var github = Substitute.For<IGitHubClient>();
|
||||
var client = new ObservableEnterpriseManagementConsoleClient(github);
|
||||
|
||||
Assert.Throws<ArgumentNullException>(() => client.EditMaintenanceMode(null, "Password01"));
|
||||
Assert.Throws<ArgumentNullException>(() => client.EditMaintenanceMode(new UpdateMaintenanceRequest(), null));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void EnsuresNonEmptyArguments()
|
||||
{
|
||||
var github = Substitute.For<IGitHubClient>();
|
||||
var client = new ObservableEnterpriseManagementConsoleClient(github);
|
||||
|
||||
Assert.Throws<ArgumentException>(() => client.EditMaintenanceMode(new UpdateMaintenanceRequest(), ""));
|
||||
}
|
||||
}
|
||||
|
||||
public class TheCtor
|
||||
{
|
||||
[Fact]
|
||||
public void EnsuresNonNullArguments()
|
||||
{
|
||||
Assert.Throws<ArgumentNullException>(() => new ObservableEnterpriseManagementConsoleClient(null));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user