public async Task SetPlugboard_ShouldReturn200Ok_WhenSettingAWiring()
        {
            // Arrange
            var controller = new EnigmaController(
                "http://localhost:61467/",
                "api/Enigma/SetPlugboard",
                String.Empty);

            PlugboardDto plugboardDto = new PlugboardDto()
            {
                Wiring = new Dictionary <char, char>()
                {
                    { 'a', 'b' }
                }
            };

            // Act
            HttpResponseMessage response =
                await controller.ExecutePostSetPlugboard <PlugboardDto, HttpResponseMessage>(plugboardDto);

            // Assert
            HttpStatusCode statusCode = response.StatusCode;

            Assert.AreEqual(HttpStatusCode.OK, statusCode);
        }
Esempio n. 2
0
        public async Task Encrypt_ShouldReturnEncryptText_WithBasicDto()
        {
            // Arrange
            var controller = new EnigmaController(
                "http://localhost:61467/",
                "api/Enigma/Encrypt?leaveWhiteSpace=true",
                String.Empty);
            string textToEncrypt = "I am a jelly doughnut";

            enigmaMachineDto.Text = textToEncrypt;

            // Act
            HttpResponseMessage response =
                await controller.ExecutePostEncrypt <EnigmaMachineDto, HttpResponseMessage>(enigmaMachineDto);

            string encryptedText = (await response.Content.ReadAsStringAsync()).Replace("\"", "");

            enigmaMachineDto.Text = encryptedText;
            response = await controller.ExecutePostEncrypt <EnigmaMachineDto, HttpResponseMessage>(enigmaMachineDto);

            string DecryptedText = (await response.Content.ReadAsStringAsync()).Replace("\"", "");

            // Assert
            HttpStatusCode statusCode = response.StatusCode;

            Assert.AreEqual(textToEncrypt.ToLower(), DecryptedText);
        }
Esempio n. 3
0
        public async Task Encrypt_ShouldReturnEncryptText_With10Wire10Settings_AndPunctuation()
        {
            // Arrange
            var controller = new EnigmaController(
                "http://localhost:61467/",
                "api/Enigma/Encrypt?leaveWhiteSpace=false",
                String.Empty);
            string textToEncrypt = "Where's my bmw";

            enigmaMachineDto.Text      = textToEncrypt;
            enigmaMachineDto.Plugboard = new PlugboardDto()
            {
                Wiring = new Dictionary <char, char>()
                {
                    { 'a', 'b' }, { 'r', 'e' }, { 'c', 'd' }, { 'f', 'g' }, { 'h', 'i' },
                    { 'j', 'k' }, { 'l', 'm' }, { 'n', 'o' }, { 'p', 'q' }, { 's', 't' }
                }
            };

            // Act
            HttpResponseMessage response =
                await controller.ExecutePostEncrypt <EnigmaMachineDto, HttpResponseMessage>(enigmaMachineDto);

            string encryptedText = (await response.Content.ReadAsStringAsync()).Replace("\"", "");

            enigmaMachineDto.Text = encryptedText;
            response = await controller.ExecutePostEncrypt <EnigmaMachineDto, HttpResponseMessage>(enigmaMachineDto);

            string DecryptedText = (await response.Content.ReadAsStringAsync()).Replace("\"", "");

            // Assert
            HttpStatusCode statusCode = response.StatusCode;

            Assert.AreEqual(textToEncrypt.ToLower().Replace(" ", "").Replace("'", ""), DecryptedText);
        }
        public void SetPlugboard_ShouldReturn200Ok_WhenSetting11Plugs()
        {
            // Arrange
            var controller = new EnigmaController();

            controller.Request = new HttpRequestMessage();

            string jsonPlugboard = @"
              {
                'a':'b',
                'c':'d',
                'e':'f',
                'g':'h',
                'i':'j',
                'k':'l',
                'm':'n',
                'o':'p',
                'q':'r',
                's':'t',
                'z':'x'
              }";

            // Act
            var message = controller.SetPlugboard(JsonConvert.DeserializeObject <PlugboardDto>(jsonPlugboard));

            // Assert
            Assert.AreEqual(HttpStatusCode.OK, message.StatusCode);
        }
Esempio n. 5
0
        public async Task Encrypt_ShouldReturnEncryptText_WithNoWireSettings()
        {
            // Arrange
            var controller = new EnigmaController(
                "http://localhost:61467/",
                "api/Enigma/Encrypt?leaveWhiteSpace=true",
                String.Empty);
            string textToEncrypt = "I am a jelly doughnut";

            enigmaMachineDto.Text      = textToEncrypt;
            enigmaMachineDto.Plugboard = new PlugboardDto()
            {
            };

            //EnigmaMachineDto enigmaMachineDto = new EnigmaMachineDto()
            //{
            //    MachineName = "foo",
            //    Text = textToEncrypt,
            //    Rotor1 = new RotorDto()
            //    {
            //        RotorNum = 1,
            //        InitialDialSetting = 'a'
            //    },
            //    Rotor2 = new RotorDto()
            //    {
            //        RotorNum = 2,
            //        InitialDialSetting = 'b'
            //    },
            //    Rotor3 = new RotorDto()
            //    {
            //        RotorNum = 3,
            //        InitialDialSetting = 'c'
            //    },
            //    Plugboard = new PlugboardDto()
            //    {
            //        Wiring = new Dictionary<char, char>() { }
            //    }

            //};

            // Act
            HttpResponseMessage response =
                await controller.ExecutePostEncrypt <EnigmaMachineDto, HttpResponseMessage>(enigmaMachineDto);

            string encryptedText = (await response.Content.ReadAsStringAsync()).Replace("\"", "");

            enigmaMachineDto.Text = encryptedText;
            response = await controller.ExecutePostEncrypt <EnigmaMachineDto, HttpResponseMessage>(enigmaMachineDto);

            string DecryptedText = (await response.Content.ReadAsStringAsync()).Replace("\"", "");

            // Assert
            HttpStatusCode statusCode = response.StatusCode;

            Assert.AreEqual(textToEncrypt.ToLower(), DecryptedText);
        }
        public void ChooseRotors_ShouldReturn400_WhenPassedRotorsABC()
        {
            // Arrange
            var controller = new EnigmaController();

            controller.Request = new HttpRequestMessage();

            // Act
            HttpResponseMessage message = controller.ChooseRotors("ABC");

            // Assert
            Assert.AreEqual(HttpStatusCode.BadRequest, message.StatusCode);
        }
Esempio n. 7
0
        public async Task ChooseRotors_ShouldReturn400_WithInvalidRotors(string rotor)
        {
            // Arrange
            var controller = new EnigmaController(
                "http://localhost:61467/",
                "api/Enigma/ChooseRotors",
                "rotors=" + rotor);

            // Act
            var response = await controller.ExecutePostChooseRotors();

            // Assert
            Assert.AreEqual(HttpStatusCode.BadRequest, response.StatusCode);
        }
Esempio n. 8
0
        public async Task Encrypt_ShouldReturn200OK_WithBasicDto()
        {
            // Arrange
            var controller = new EnigmaController(
                "https://enigmamachinerestapi.azurewebsites.net/",
                "api/Enigma/Encrypt?leaveWhiteSpace=true",
                String.Empty);
            string textToEncrypt = "I am a jelly doughnut";

            EnigmaMachineDto enigmaMachineDto = new EnigmaMachineDto()
            {
                MachineName = "foo",
                Text        = textToEncrypt,
                Rotor1      = new RotorDto()
                {
                    RotorNum           = 1,
                    InitialDialSetting = 'a'
                },
                Rotor2 = new RotorDto()
                {
                    RotorNum           = 2,
                    InitialDialSetting = 'b'
                },
                Rotor3 = new RotorDto()
                {
                    RotorNum           = 3,
                    InitialDialSetting = 'c'
                },
                Plugboard = new PlugboardDto()
                {
                    Wiring = new Dictionary <char, char>()
                    {
                        { 'a', 'b' }, { 'r', 'e' }
                    }
                }
            };

            // Act
            HttpResponseMessage response =
                await controller.ExecutePostEncrypt <EnigmaMachineDto, HttpResponseMessage>(enigmaMachineDto);

            string encryptedText = (await response.Content.ReadAsStringAsync()).Replace("\"", "");

            // Assert
            HttpStatusCode statusCode = response.StatusCode;

            Assert.AreEqual(HttpStatusCode.OK, statusCode);
        }
        public void Encrypt_ShouldReturn200Ok_WhenMessageIsProper_AndLeaveWhiteSpaceIsTrue()
        {
            // Arrange
            var controller = new EnigmaController();

            controller.Request       = new HttpRequestMessage();
            controller.Configuration = new System.Web.Http.HttpConfiguration();

            string jsonEnigma = @"{
	                    'MachineName': 'Jeffs Enigma',
                        'Text':'hello enigma machine',
	                    'Rotor1':{
		                    'RotorNum':1,
		                    'Setting':'a'
                        },
	                    'Rotor2':{
		                    'RotorNum':2,
		                    'Setting':'a'
	                    },
	                    'Rotor3':{
		                    'RotorNum':3,
		                    'Setting':'z'
	                    },
	                    'Plugboard': {
	                        'Wiring': {
	                            'h':'s',
	                            'a':'e',
	                            'd':'j',
	                            'p':'q',
	                            'g':'m',
	                            'b':'c',
	                            'f':'i',
	                            'k':'n',
	                            'l':'o',
	                            'r':'t',
	                        }
	                    }
                    }";

            // Act
            var message = controller.Encrypt(JsonConvert.DeserializeObject <EnigmaMachineDto>(jsonEnigma), true);

            // Assert
            Assert.AreEqual(HttpStatusCode.OK, message.StatusCode);
            message.TryGetContentValue <string>(out string encryptedText);

            Assert.AreEqual("ocfkj lljkyb urekwfj", encryptedText);
        }
        public void SetPlugboard_ShouldReturn200Ok_WhenSetting0Plugs()
        {
            // Arrange
            var controller = new EnigmaController();

            controller.Request = new HttpRequestMessage();

            string jsonPlugboard = @"
              {
              }";

            // Act
            var message = controller.SetPlugboard(JsonConvert.DeserializeObject <PlugboardDto>(jsonPlugboard));

            // Assert
            Assert.AreEqual(HttpStatusCode.OK, message.StatusCode);
        }
Esempio n. 11
0
        public void SetRotor_Should_When()
        {
            // Arrange
            var      enigmaController = new EnigmaController();
            RotorDto rotorDto         = new RotorDto {
                Mapping = "bdfhjlcprtxvznyeiwgakmusqo",
                Rotate  = true,
                AdjacentRotorAdvanceOffset = 21,
                InitialDialSetting         = 'z'
            };

            // Act
            //HttpResponseMessage response = enigmaController.SetRotor(rotorDto, 3);
            enigmaController.SetPlugboard

            // Assert
        }
Esempio n. 12
0
        public async Task SetRotor_ShouldReturn200Ok_WhenSettingRotor2ToZ()
        {
            // Arrange
            var      controller = new EnigmaController("http://localhost:61467/", "api/Enigma/SetRotor/1", null);
            RotorDto rotorDto   = new RotorDto()
            {
                RotorNum           = 1,
                InitialDialSetting = 'a'
            };

            // Act
            HttpResponseMessage response =
                await controller.ExecutePostSetRotor <RotorDto, HttpResponseMessage>(rotorDto);

            // Assert
            HttpStatusCode statusCode    = response.StatusCode;
            string         encryptedText = await response.Content.ReadAsStringAsync();

            Assert.AreEqual(HttpStatusCode.OK, statusCode);
        }
Esempio n. 13
0
        public void SetRotor_ShouldReturn200Ok_WhenSettingIncorrectRotor()
        {
            // Arrange
            var controller = new EnigmaController();

            controller.Request = new HttpRequestMessage();

            string jsonRotor = @"
              {
                'RotorNum':4,
                'Setting':'k'
              }";

            HttpResponseMessage message = controller.ChooseRotors("123");

            // Act
            message = controller.SetRotor(JsonConvert.DeserializeObject <RotorDto>(jsonRotor), 2);

            // Assert
            Assert.AreEqual(HttpStatusCode.OK, message.StatusCode);
        }