Пример #1
0
        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
        }
Пример #2
0
 public static void Test_3()
 {
     try {
         IMessageWriter writer = new SecureMessageWriter(new ConsoleMessageWriter());
         var salutation = new Salutation(writer);
         salutation.Exclaim();
     }
     catch (UnauthorizedAccessException e) {
         Console.WriteLine(e);
     }
 }
Пример #3
0
 public static void Test_3()
 {
     try {
         IMessageWriter writer     = new SecureMessageWriter(new ConsoleMessageWriter());
         var            salutation = new Salutation(writer);
         salutation.Exclaim();
     }
     catch (UnauthorizedAccessException e) {
         Console.WriteLine(e);
     }
 }
Пример #4
0
        public void WriteDoesNotInvokeWriterWhenPrincipalIsNotAuthenticated()
        {
            // Arrange
            var writer = new SpyMessageWriter();

            SecureMessageWriter sut = CreateSecureMessageWriter(writer: writer, identity: AnonymousIdentity);

            // Act
            sut.Write("Anonymous value");

            // Assert
            Assert.Equal(expected: 0, actual: writer.MessageCount);
        }
Пример #5
0
        public void WriteInvokesDecoratedWriterWhenPrincipalIsAuthenticated()
        {
            // Arrange
            string expectedMessage = "Whatever";
            var    writer          = new SpyMessageWriter();

            SecureMessageWriter sut = CreateSecureMessageWriter(writer: writer, identity: AuthenticatedIdentity);

            // Act
            sut.Write(expectedMessage);

            // Assert
            Assert.Equal(expected: expectedMessage, actual: writer.WrittenMessage);
        }
Пример #6
0
        public void TestSecureWriterNoAuth()
        {
            // arrange
            var writer   = new Mock <IMessageWriter>();
            var identity = new Mock <IIdentity>();

            identity.SetupGet(i => i.IsAuthenticated).Returns(false);

            var secureWriter = new SecureMessageWriter(writer.Object, identity.Object);

            // act
            secureWriter.Write("test");

            // assert
            writer.Verify(w => w.Write("test"), Times.Never());
        }
Пример #7
0
        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
        }
Пример #8
0
        public static void Perform()
        {
            IMessageWriter normalWriter = new MessageWriter();

            normalWriter.Message = "message";
            Console.WriteLine("NormalWriter => " + normalWriter.WriteMessage());
            EncryptedMessageWriter encWriter = new EncryptedMessageWriter(normalWriter);

            Console.WriteLine("encryptedWriter => " + encWriter.WriteMessage());
            SecureMessageWriter securedWriter = new SecureMessageWriter(normalWriter);

            Console.WriteLine("SecuredWriter => " + securedWriter.WriteMessage());
            SecureMessageWriter esWriter = new SecureMessageWriter(encWriter);

            Console.WriteLine("Sec, Enc Writer => " + securedWriter.WriteMessage());
            Console.WriteLine();
        }
Пример #9
0
        static void Main(string[] args)
        {
            // 原本只要這樣一行
            System.Console.WriteLine("Hello World!");

            // 用 DI 的方法
            IMessageWriter writer     = new ConsoleMessageWriter();
            var            salutation = new Salutation(writer);

            salutation.Say("Hello DI!");

            // 用裝飾者模式寫個新的 IMessageWriter 實作看看
            IMessageWriter secureWriter = new SecureMessageWriter(writer, "A");
            var            salutation1  = new Salutation(secureWriter);

            salutation1.Say("Hello DI!!!!!");
        }
Пример #10
0
        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
        }
Пример #11
0
        static void Main(string[] args)
        {
            //Decorate
            //IMessageWriter msgWriter = new EncryptedMessageWriter(new MessageWriter());
            //IMessageWriter msgWriter = new SecureMessageWriter(new MessageWriter());
            //IMessageWriter msgWriter = new EncryptedMessageWriter(new SecureMessageWriter(new MessageWriter()));
            IMessageWriter msgWriter = new SecureMessageWriter(new EncryptedMessageWriter(new MessageWriter()));

            msgWriter.Message = "test";
            msgWriter.WriteMessage("D:\\test.txt");

            //SimpleFactroy
            //http://www.dotblogs.com.tw/joysdw12/archive/2013/06/23/design-pattern-simple-factory-pattern.aspx
            DP.SimpleFactroy.BeverageStores store = new DP.SimpleFactroy.BeverageStores(new DP.SimpleFactroy.SimpleBeverageFactory());
            Console.WriteLine("A 客人點了綠茶");
            store.BeverageOrders("GreenTea");
            Console.WriteLine("B 客人點了紅茶");
            store.BeverageOrders("BlackTea");

            Console.ReadLine();
        }