public void HttpHandler_Process_YandexHttpResult_ClearSecureData()
        {
            // Arrange
            var yandexHttpResult = new HttpResult
            {
                Url          = "http://test.com?user=max&pass=123456",
                RequestBody  = "<auth><user>max</user><pass>123456</pass></auth>",
                ResponseBody = "<auth user=\"max\" pass=\"123456\"/>"
            };

            var httpHandler = new HttpHandler();

            var dataLocationQuery = new HashSet <string> {
                SecureDataLocation.UrlQuery
            };
            var dataLocationAttribute = new HashSet <string> {
                SecureDataLocation.XmlAttribute
            };
            var dataLocationElement = new HashSet <string> {
                SecureDataLocation.XmlElementValue
            };

            var secureKeyUser = "******";
            var locationsInfo = new Dictionary <PropertyType, HashSet <string> >
            {
                { PropertyType.Url, dataLocationQuery },
                { PropertyType.RequestBody, dataLocationElement },
                { PropertyType.ResponseBody, dataLocationAttribute }
            };
            var secureDataInfo1 = new SecureDataInfo
            {
                SecureKey     = secureKeyUser,
                LocationsInfo = locationsInfo
            };

            var secureKeyPass   = "******";
            var secureDataInfo2 = new SecureDataInfo
            {
                SecureKey     = secureKeyPass,
                LocationsInfo = locationsInfo
            };

            var secureDataInfoList = new List <SecureDataInfo>
            {
                secureDataInfo1,
                secureDataInfo2
            };

            // Act
            httpHandler.Process(yandexHttpResult.Url,
                                yandexHttpResult.RequestBody, yandexHttpResult.ResponseBody, secureDataInfoList);

            // Assert
            Assert.Equal("http://test.com?user=XXX&pass=XXXXXX", httpHandler.CurrentLog.Url);
            Assert.Equal("<auth><user>XXX</user><pass>XXXXXX</pass></auth>", httpHandler.CurrentLog.RequestBody);
            Assert.Equal("<auth user=\"XXX\" pass=\"XXXXXX\" />", httpHandler.CurrentLog.ResponseBody);
        }
        public void SecureDataCleaner_CleanHttpResult_ClearMultipleSecureKeysInUrlProperty_MultipleSecureKeysInMultiplePropertiesCleared()
        {
            // Arrange
            var httpResult = new HttpResult
            {
                Url          = "http://test.com/users/max/info?pass=123456",
                RequestBody  = "http://test.com?user=max&pass=123456",
                ResponseBody = "http://test.com?user=max&pass=123456"
            };

            var secureKey1     = "pass";
            var locationsInfo1 = new Dictionary <PropertyType, HashSet <string> >();
            var dataLocations1 = new HashSet <string>
            {
                SecureDataLocation.UrlQuery,
            };

            locationsInfo1.Add(PropertyType.Url, dataLocations1);
            var secureDataInfo1 = new SecureDataInfo
            {
                SecureKey     = secureKey1,
                LocationsInfo = locationsInfo1
            };

            var secureKey2     = "users";
            var locationsInfo2 = new Dictionary <PropertyType, HashSet <string> >();
            var dataLocations2 = new HashSet <string>
            {
                SecureDataLocation.UrlRest
            };

            locationsInfo2.Add(PropertyType.Url, dataLocations2);
            var secureDataInfo2 = new SecureDataInfo
            {
                SecureKey     = secureKey2,
                LocationsInfo = locationsInfo2
            };

            var secureDataInfoList = new List <SecureDataInfo>();

            secureDataInfoList.Add(secureDataInfo1);
            secureDataInfoList.Add(secureDataInfo2);

            var secureDataCleaner = new SecureDataCleaner(secureDataInfoList);

            var expectedResult = "http://test.com/users/XXX/info?pass=XXXXXX";

            // Act
            var cleanedHttpResult = secureDataCleaner.CleanHttpResult(httpResult);

            // Assert
            Assert.Equal(expectedResult, cleanedHttpResult.Url);
        }
        public void SecureDataCleaner_CleanHttpResult_ClearOneSecureKeyInMultipleDataLocationsInMultipleProperties_OneSecureKeyInMultipleDataLocationsInMultiplePropertiesCleared()
        {
            // Arrange
            var httpResult = new HttpResult
            {
                Url          = "http://test.com/users/max/pass/123/info?pass=123456",
                RequestBody  = "http://test.com/pass/123?user=max&pass=123456",
                ResponseBody = "http://test.com/pass/123?user=max&pass=123456"
            };

            var secureKey     = "pass";
            var locationsInfo = new Dictionary <PropertyType, HashSet <string> >();
            var dataLocations = new HashSet <string>
            {
                SecureDataLocation.UrlQuery,
                SecureDataLocation.UrlRest
            };

            locationsInfo.Add(PropertyType.Url, dataLocations);
            locationsInfo.Add(PropertyType.RequestBody, dataLocations);
            locationsInfo.Add(PropertyType.ResponseBody, dataLocations);

            var secureDataInfoList = new List <SecureDataInfo>();
            var secureDataInfo     = new SecureDataInfo
            {
                SecureKey     = secureKey,
                LocationsInfo = locationsInfo
            };

            secureDataInfoList.Add(secureDataInfo);

            var secureDataCleaner = new SecureDataCleaner(secureDataInfoList);

            var expectedUrl          = "http://test.com/users/max/pass/XXX/info?pass=XXXXXX";
            var expectedRequestBody  = "http://test.com/pass/XXX?user=max&pass=XXXXXX";
            var expectedResponseBody = "http://test.com/pass/XXX?user=max&pass=XXXXXX";

            // Act
            var cleanedHttpResult = secureDataCleaner.CleanHttpResult(httpResult);

            // Assert
            Assert.Equal(expectedUrl, cleanedHttpResult.Url);
            Assert.Equal(expectedRequestBody, cleanedHttpResult.RequestBody);
            Assert.Equal(expectedResponseBody, cleanedHttpResult.ResponseBody);
        }
Esempio n. 4
0
        static void Main(string[] args)
        {
            var httpResult = new HttpResult
            {
                Url          = "http://test.com/users/max/info?pass=123456",
                RequestBody  = "http://test.com?user=max&pass=123456",
                ResponseBody = "http://test.com?user=max&pass=123456"
            };

            var dataLocationCustom = new HashSet <string>
            {
                "OtherLocation",
            };

            var secureKey      = "user";
            var locationsInfo1 = new Dictionary <PropertyType, HashSet <string> >();

            locationsInfo1.Add(PropertyType.Url, dataLocationCustom);
            locationsInfo1.Add(PropertyType.RequestBody, dataLocationCustom);
            locationsInfo1.Add(PropertyType.ResponseBody, dataLocationCustom);
            var secureDataInfo1 = new SecureDataInfo
            {
                SecureKey     = secureKey,
                LocationsInfo = locationsInfo1
            };

            var secureDataInfoList = new List <SecureDataInfo>
            {
                secureDataInfo1,
            };

            var clientCleaner     = new ClientCleaner();
            var secureDataCleaner = new SecureDataCleaner(secureDataInfoList, clientCleaner);

            httpResult = secureDataCleaner.CleanHttpResult(httpResult);

            Console.WriteLine(httpResult.Url);
            Console.WriteLine(httpResult.RequestBody);
            Console.WriteLine(httpResult.ResponseBody);
        }
        public void HttpHandler_Process_ExpediaHttpResult_ClearSecureData()
        {
            // Arrange
            var expediaHttpResult = new HttpResult
            {
                Url          = "http://test.com/users/max/info",
                RequestBody  = @"
                    {
                        user: '******',
                        pass: '******'
                    }",
                ResponseBody = @"
                    {
                        user: {
                            value: 'max'
                        },
                        pass: {
                            value: '123456'
                        }
                    }"
            };

            var httpHandler = new HttpHandler();

            var dataLocationRest = new HashSet <string> {
                SecureDataLocation.UrlRest
            };
            var dataLocationAttribute = new HashSet <string> {
                SecureDataLocation.JsonAttribute
            };
            var dataLocationElement = new HashSet <string> {
                SecureDataLocation.JsonElementValue
            };

            var secureKeyUsers = "users";
            var locationsInfo1 = new Dictionary <PropertyType, HashSet <string> >
            {
                { PropertyType.Url, dataLocationRest },
            };
            var secureDataInfo1 = new SecureDataInfo
            {
                SecureKey     = secureKeyUsers,
                LocationsInfo = locationsInfo1
            };

            var secureKeyPass  = "******";
            var locationsInfo2 = new Dictionary <PropertyType, HashSet <string> >
            {
                { PropertyType.Url, dataLocationRest },
                { PropertyType.RequestBody, dataLocationElement },
                { PropertyType.ResponseBody, dataLocationAttribute }
            };
            var secureDataInfo2 = new SecureDataInfo
            {
                SecureKey     = secureKeyPass,
                LocationsInfo = locationsInfo2
            };

            var secureKeyUser   = "******";
            var secureDataInfo3 = new SecureDataInfo
            {
                SecureKey     = secureKeyUser,
                LocationsInfo = locationsInfo2
            };

            var secureDataInfoList = new List <SecureDataInfo>
            {
                secureDataInfo1,
                secureDataInfo2,
                secureDataInfo3
            };

            // Act
            httpHandler.Process(expediaHttpResult.Url,
                                expediaHttpResult.RequestBody, expediaHttpResult.ResponseBody, secureDataInfoList);

            // Assert
            Assert.Equal("http://test.com/users/XXX/info", httpHandler.CurrentLog.Url);
            Assert.Equal("{\"user\":\"XXX\",\"pass\":\"XXXXXX\"}", httpHandler.CurrentLog.RequestBody);
            Assert.Equal("{\"user\":{\"value\":\"XXX\"},\"pass\":{\"value\":\"XXXXXX\"}}", httpHandler.CurrentLog.ResponseBody);
        }
        public void HttpHandler_Process_BookingcomHttpResult_ClearSecureData()
        {
            // Arrange
            var bookingcomHttpResult = new HttpResult
            {
                Url          = "http://test.com/users/max/info?pass=123456",
                RequestBody  = "http://test.com?user=max&pass=123456",
                ResponseBody = "http://test.com?user=max&pass=123456"
            };
            var httpHandler = new HttpHandler();

            var dataLocationQuery = new HashSet <string> {
                SecureDataLocation.UrlQuery
            };
            var dataLocationRest = new HashSet <string> {
                SecureDataLocation.UrlRest
            };

            var secureKeyUser  = "******";
            var locationsInfo1 = new Dictionary <PropertyType, HashSet <string> >();

            locationsInfo1.Add(PropertyType.RequestBody, dataLocationQuery);
            locationsInfo1.Add(PropertyType.ResponseBody, dataLocationQuery);
            var secureDataInfo1 = new SecureDataInfo
            {
                SecureKey     = secureKeyUser,
                LocationsInfo = locationsInfo1
            };

            var secureKeyPass  = "******";
            var locationsInfo2 = new Dictionary <PropertyType, HashSet <string> >();

            locationsInfo2.Add(PropertyType.Url, dataLocationQuery);
            locationsInfo2.Add(PropertyType.RequestBody, dataLocationQuery);
            locationsInfo2.Add(PropertyType.ResponseBody, dataLocationQuery);
            var secureDataInfo2 = new SecureDataInfo
            {
                SecureKey     = secureKeyPass,
                LocationsInfo = locationsInfo2
            };

            var secureKey3     = "users";
            var locationsInfo3 = new Dictionary <PropertyType, HashSet <string> >();

            locationsInfo3.Add(PropertyType.Url, dataLocationRest);
            var secureDataInfo3 = new SecureDataInfo
            {
                SecureKey     = secureKey3,
                LocationsInfo = locationsInfo3
            };

            var secureDataInfoList = new List <SecureDataInfo>();

            secureDataInfoList.Add(secureDataInfo1);
            secureDataInfoList.Add(secureDataInfo2);
            secureDataInfoList.Add(secureDataInfo3);

            // Act
            httpHandler.Process(bookingcomHttpResult.Url,
                                bookingcomHttpResult.RequestBody, bookingcomHttpResult.ResponseBody, secureDataInfoList);

            // Assert
            Assert.Equal("http://test.com/users/XXX/info?pass=XXXXXX", httpHandler.CurrentLog.Url);
            Assert.Equal("http://test.com?user=XXX&pass=XXXXXX", httpHandler.CurrentLog.RequestBody);
            Assert.Equal("http://test.com?user=XXX&pass=XXXXXX", httpHandler.CurrentLog.ResponseBody);
        }