Beispiel #1
0
        public void CallsHangUpUntilAllConnectionsHaveBeenClosed()
        {
            var api             = new Mock <IRasApi32>();
            var exceptionPolicy = new Mock <IExceptionPolicy>();

            var handle = new IntPtr(1);

            var counter = 0;

            api.Setup(o => o.RasHangUp(handle)).Returns(() =>
            {
                counter++;
                if (counter < 3)
                {
                    return(SUCCESS);
                }
                else
                {
                    return(ERROR_NO_CONNECTION);
                }
            });

            var target = new RasHangUpService(api.Object, exceptionPolicy.Object);

            target.UnsafeHangUp(handle, true, CancellationToken.None);

            api.Verify(o => o.RasHangUp(handle), Times.Exactly(3));
        }
Beispiel #2
0
        public void ThrowsAnExceptionWhenTheHandleIsZero()
        {
            var api             = new Mock <IRasApi32>();
            var exceptionPolicy = new Mock <IExceptionPolicy>();

            var target = new RasHangUpService(api.Object, exceptionPolicy.Object);

            Assert.Throws <ArgumentNullException>(() => target.UnsafeHangUp(IntPtr.Zero, true, CancellationToken.None));
        }
Beispiel #3
0
        public void ThrowsAnExceptionWhenTheConnectionIsNull()
        {
            var api             = new Mock <IRasApi32>();
            var exceptionPolicy = new Mock <IExceptionPolicy>();

            var target = new RasHangUpService(api.Object, exceptionPolicy.Object);

            Assert.ThrowsAsync <ArgumentNullException>(() => target.HangUpAsync(null, true, CancellationToken.None));
        }
Beispiel #4
0
        public void HangsUpTheConnectionFromPtrAsExpected()
        {
            var handle = new IntPtr(1);

            var api = new Mock <IRasApi32>();

            api.Setup(o => o.RasHangUp(handle)).Returns(ERROR_NO_CONNECTION);

            var exceptionPolicy = new Mock <IExceptionPolicy>();

            var target = new RasHangUpService(api.Object, exceptionPolicy.Object);

            target.UnsafeHangUp(handle, true, CancellationToken.None);

            api.Verify(o => o.RasHangUp(handle), Times.Once);
        }
Beispiel #5
0
        public void ThrowsAnExceptionWhenHangUpReturnsAnInvalidResultCode()
        {
            var api = new Mock <IRasApi32>();

            var exceptionPolicy = new Mock <IExceptionPolicy>();

            exceptionPolicy.Setup(o => o.Create(-1)).Returns(new TestException());

            var handle = new IntPtr(1);

            api.Setup(o => o.RasHangUp(handle)).Returns(-1);

            var target = new RasHangUpService(api.Object, exceptionPolicy.Object);

            Assert.Throws <TestException>(() => target.UnsafeHangUp(handle, true, CancellationToken.None));

            api.Verify(o => o.RasHangUp(handle), Times.Once);
        }
Beispiel #6
0
        public void ThrowsAnExceptionWhenCancellationIsRequested()
        {
            var api             = new Mock <IRasApi32>();
            var exceptionPolicy = new Mock <IExceptionPolicy>();

            var handle = new IntPtr(1);

            var connection = new Mock <IRasConnection>();

            connection.Setup(o => o.Handle).Returns(handle);

            using var cancellationSource = new CancellationTokenSource();
            cancellationSource.Cancel();

            var target = new RasHangUpService(api.Object, exceptionPolicy.Object);

            Assert.ThrowsAsync <OperationCanceledException>(async() => await target.HangUpAsync(connection.Object, true, cancellationSource.Token));
        }
Beispiel #7
0
        public async Task HangsUpTheConnectionAsExpected()
        {
            var handle = new IntPtr(1);

            var connection = new Mock <IRasConnection>();

            connection.Setup(o => o.Handle).Returns(handle);

            var api = new Mock <IRasApi32>();

            api.Setup(o => o.RasHangUp(handle)).Returns(ERROR_NO_CONNECTION);

            var exceptionPolicy = new Mock <IExceptionPolicy>();

            var target = new RasHangUpService(api.Object, exceptionPolicy.Object);
            await target.HangUpAsync(connection.Object, true, CancellationToken.None);

            api.Verify(o => o.RasHangUp(handle), Times.Once);
        }