Files
octokit.net/Octokit.Tests/Reactive/Enterprise/ObservableEnterpriseManagementConsoleClientTests.cs
Brendan Forster 8cd0b341dd 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
2019-09-22 15:09:56 -03:00

93 lines
3.2 KiB
C#

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));
}
}
}
}