public void SutIsMessageWriter()
 {
     // Fixture setup
     var dummyMessageWriter = new Mock<IMessageWriter>().Object;
     // Exercise system
     var sut = new SecureMessageWriter(dummyMessageWriter);
     // Verify outcome
     Assert.IsAssignableFrom<IMessageWriter>(sut);
     // Teardown
 }
        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
        }