public void WriteDoesNotInvokeWriterWhenPrincipalIsNotAuthenticated()
        {
            // Fixture setup
            var principalStub = new Mock<IPrincipal>();
            principalStub.SetupGet(p => p.Identity.IsAuthenticated).Returns(false);
            Thread.CurrentPrincipal = principalStub.Object;

            var writerMock = new Mock<IMessageWriter>();
            var sut = new SecureMessageWriter(writerMock.Object);
            // Exercise system
            sut.Write("Anonymous value");
            // Verify outcome
            writerMock.Verify(w => w.Write(It.IsAny<string>()), Times.Never());
            // Teardown
        }
        public void WriteInvokesDecoratedWriterWhenPrincipalIsAuthenticated()
        {
            // Fixture setup
            var principalStub = new Mock<IPrincipal>();
            principalStub.SetupGet(p => p.Identity.IsAuthenticated).Returns(true);
            Thread.CurrentPrincipal = principalStub.Object;

            var writerMock = new Mock<IMessageWriter>();
            var sut = new SecureMessageWriter(writerMock.Object);
            // Exercise system
            var message = "Whatever";
            sut.Write(message);
            // Verify outcome
            writerMock.Verify(w => w.Write(message));
            // Teardown
        }