public void SynchronousFunc() { Skip.IfNot(OperatingSystem.IsWindows(), "Windows Only"); if (!OperatingSystem.IsWindows()) { return; } Skip.If(string.IsNullOrWhiteSpace(_settings.User), "No credentials in User Secrets"); Skip.If(string.IsNullOrWhiteSpace(_settings.Password), "No credentials in User Secrets"); Skip.If(string.IsNullOrWhiteSpace(_settings.Domain), "No credentials in User Secrets"); // arrange var loggerMock = new Mock <ILogger <WindowsImpersonator> >(); var loggerObj = loggerMock.Object; var imp = new WindowsImpersonator(loggerObj); var original = WindowsIdentity.GetCurrent().Name; // act var result = imp.Execute(_settings, () => !OperatingSystem.IsWindows() ? null : WindowsIdentity.GetCurrent().Name); // assert result.ShouldBe($"{_settings.Domain}\\{_settings.User}"); loggerMock.Verify(m => m.Log(LogLevel.Debug, 0, It.Is <It.IsAnyType>((obj, t) => obj.ToString() == $"Before impersonation: {original}"), null, (Func <It.IsAnyType, Exception, string>)It.IsAny <object>())); loggerMock.Verify(m => m.Log(LogLevel.Trace, 0, It.Is <It.IsAnyType>((obj, t) => obj.ToString() == "Setting up for impersonation"), null, (Func <It.IsAnyType, Exception, string>)It.IsAny <object>())); loggerMock.VerifyNoOtherCalls(); }
public async Task AsynchronousAction() { Skip.IfNot(OperatingSystem.IsWindows(), "Windows Only"); if (!OperatingSystem.IsWindows()) { return; } Skip.If(string.IsNullOrWhiteSpace(_settings.User), "No credentials in User Secrets"); Skip.If(string.IsNullOrWhiteSpace(_settings.Password), "No credentials in User Secrets"); Skip.If(string.IsNullOrWhiteSpace(_settings.Domain), "No credentials in User Secrets"); // arrange var loggerMock = new Mock <ILogger <WindowsImpersonator> >(); var loggerObj = loggerMock.Object; var imp = new WindowsImpersonator(loggerObj); var original = WindowsIdentity.GetCurrent().Name; // act await imp.ExecuteAsync(_settings, () => { if (!OperatingSystem.IsWindows()) { return(Task.CompletedTask); } loggerObj.LogInformation("Testing as: {Identity}", WindowsIdentity.GetCurrent().Name); return(Task.CompletedTask); }); // assert loggerMock.Verify(m => m.Log(LogLevel.Information, 0, It.Is <It.IsAnyType>((obj, t) => obj.ToString() == $"Testing as: {_settings.Domain}\\{_settings.User}"), null, (Func <It.IsAnyType, Exception, string>)It.IsAny <object>())); loggerMock.Verify(m => m.Log(LogLevel.Debug, 0, It.Is <It.IsAnyType>((obj, t) => obj.ToString() == $"Before impersonation: {original}"), null, (Func <It.IsAnyType, Exception, string>)It.IsAny <object>())); loggerMock.Verify(m => m.Log(LogLevel.Debug, 0, It.Is <It.IsAnyType>((obj, t) => obj.ToString() == $"After impersonation: {original}"), null, (Func <It.IsAnyType, Exception, string>)It.IsAny <object>())); loggerMock.Verify(m => m.Log(LogLevel.Trace, 0, It.Is <It.IsAnyType>((obj, t) => obj.ToString() == "Setting up for impersonation"), null, (Func <It.IsAnyType, Exception, string>)It.IsAny <object>())); loggerMock.VerifyNoOtherCalls(); }