Ejemplo n.º 1
0
        public void MigrateTestPositive()
        {
            var server = new FakeHttpServer(Port,
                                            new[] { new FakeHttpServerResponse(200, FindResponse),
                                                    new FakeHttpServerResponse(201, FindResponse),
                                                    new FakeHttpServerResponse(200, BadFindResponse) });

            server.Start();
            var config = new StorageConfig(endPoint: "http://*****:*****@ssworD!"));

            using var storage = Storage.NewStorage(config);
            const int limit         = 50;
            var       migrateResult = storage.MigrateAsync("country", limit).Result;

            Assert.NotNull(migrateResult);
            Assert.AreEqual(1, migrateResult.Migrated);
            Assert.AreEqual(0, migrateResult.TotalLeft);
            Assert.AreEqual(0, migrateResult.Errors.Count);

            migrateResult = storage.MigrateAsync("country", limit).Result;
            Assert.NotNull(migrateResult);
            Assert.AreEqual(0, migrateResult.Migrated);
            Assert.AreEqual(1, migrateResult.TotalLeft);
            Assert.AreEqual(1, migrateResult.Errors.Count);

            server.Stop();
        }
        private static IStorage InitStorageWithEncryptionSecret()
        {
            var config     = CredentialsHelper.GetConfigWithOauth();
            var secretData = SecretsDataGenerator.FromPassword("<Str0ng_p@ssworD!");

            config.SecretKeyAccessor = () => secretData;
            return(Storage.NewStorage(config));
        }
Ejemplo n.º 3
0
        public void GetKeyTest()
        {
            var secretData = SecretsDataGenerator.FromPassword("secret");
            var salt       = Encoding.UTF8.GetBytes(Guid.NewGuid().ToString());
            var key        = SecretKeyFactory.GetKey(salt, secretData.CurrentSecret, 1000);

            Assert.IsNotNull(key);
            Assert.IsNotEmpty(key);
        }
        private static IStorage InitStorageWithoutHashing()
        {
            var config     = CredentialsHelper.GetConfigWithOauth();
            var secretData = SecretsDataGenerator.FromPassword("<vEry-Str0ng_p@ssworD!_StorageWithoutHashing");

            config.SecretKeyAccessor = () => secretData;
            config.HashSearchKeys    = false;
            return(Storage.NewStorage(config));
        }
Ejemplo n.º 5
0
        public void DecryptAesGcm10KHexTest()
        {
            const string CipherMessageV1 =
                "1:8b02d29be1521e992b49a9408f2777084e9d8195e4a3392c68c70545eb559670b70ec928c8eeb2e34f118d32a23d77abdcde38446241efacb71922579d1dcbc23fca62c1f9ec5d97fbc3a9862c0a9e1bb630aaa3585eac160a65b24a96af5becef3cdc2b29";

            using var cryptoManager = new CryptoProvider();
            var decryptedMessage =
                cryptoManager.Decrypt(CipherMessageV1, SecretsDataGenerator.FromPassword("password"), 0);

            Assert.AreEqual("InCountry", decryptedMessage);
        }
Ejemplo n.º 6
0
        public void FromPasswordTest()
        {
            const string secret     = "password";
            var          secretData = SecretsDataGenerator.FromPassword(secret);

            Assert.AreEqual(0, secretData.CurrentSecret.Version);
            Assert.AreEqual(1, secretData.Secrets.Count);
            Assert.AreEqual(0, secretData.Secrets[0].Version);
            Assert.AreEqual(Encoding.UTF8.GetBytes(secret), secretData.Secrets[0].GetSecretBytes());
            Assert.AreEqual(typeof(EncryptionSecret), secretData.Secrets[0].GetType());
        }
Ejemplo n.º 7
0
        public void TestDecryptionFromOtherSdk(Record record, string jsonResponse)
        {
            var secretData = SecretsDataGenerator.FromPassword(Password);

            using var cryptoManager = new CryptoProvider();
            var decodedRecord =
                new DtoTransformer(cryptoManager,
                                   new HashUtils(EnvironmentId, false, Encoding.UTF8), true, () => secretData)
                .GetRecord(JsonConvert.DeserializeObject <TransferRecord>(jsonResponse, _jsonSettings));

            Assert.NotNull(decodedRecord);
#pragma warning disable CA1062
            Assert.IsTrue(RecordEquals(record, decodedRecord));
#pragma warning restore CA1062
        }
Ejemplo n.º 8
0
        public void MigrateTestNegative()
        {
            var config = new StorageConfig(endPoint: "http://*****:*****@ssworD!");

            using var storage2 = Storage.NewStorage(config);
            const int limit      = 0;
            var       exception2 = Assert.ThrowsAsync <StorageClientException>(() => storage2.MigrateAsync("country", limit));

            Assert.AreEqual("Limit can't be less then 1", exception2.Message);
        }
Ejemplo n.º 9
0
        public void ValidateCipherNegativeTest()
        {
            var cipher1 = new CipherStub("cipherStub1");
            var cipher2 = new WrongCipher("WrongCipher");

            using var provider = new CryptoProvider(cipher1);
            provider.RegisterCipher(cipher2);

            var customEncryptionKey = new CustomEncryptionKey(1, Encoding.UTF8.GetBytes("CustomEncryptionKey"));
            var exception           = Assert.Throws <StorageClientException>(() =>
            {
                provider.ValidateCustomCiphers(new SecretsData(new List <Secret> {
                    customEncryptionKey
                },
                                                               customEncryptionKey));
            });

            Assert.AreEqual("Validation failed for custom cipher with version 'WrongCipher'", exception.Message);

            provider.UnregisterCipher(cipher2);

            var cipher3 = new CipherWithException("CipherWithException");

            provider.RegisterCipher(cipher3);

            exception = Assert.Throws <StorageClientException>(() =>
            {
                provider.ValidateCustomCiphers(new SecretsData(new List <Secret> {
                    customEncryptionKey
                },
                                                               customEncryptionKey));
            });
            Assert.AreEqual("Validation failed for custom cipher with version 'CipherWithException'",
                            exception.Message);
            Assert.NotNull(exception.InnerException);
            Assert.IsInstanceOf <NotImplementedException>(exception.InnerException);

            var secretData = SecretsDataGenerator.FromPassword("password");

            exception = Assert.Throws <StorageClientException>(() => provider.ValidateCustomCiphers(secretData));
            Assert.AreEqual("There is no custom encryption key for the custom ciphers", exception.Message);
        }
Ejemplo n.º 10
0
        public void TestEncryptionFromOtherSdk(Record record, string jsonResponse)
        {
            var secretData = SecretsDataGenerator.FromPassword(Password);

            using var cryptoManager = new CryptoProvider();
            var recordJsonString = JsonConvert.SerializeObject(
                new DtoTransformer(cryptoManager,
                                   new HashUtils(EnvironmentId, false, Encoding.UTF8), true, () => secretData)
                .GetTransferRecord(record), _jsonSettings);

            var jsonObject         = JObject.Parse(recordJsonString);
            var originalJsonObject = JObject.Parse(jsonResponse);

            var excludedList = new List <string> {
                "body", "precommit_body", "is_encrypted"
            };
            var fieldList =
                new List <JProperty>(originalJsonObject.Properties()).FindAll(key => !excludedList.Contains(key.Name));

            foreach (var jsonKey in fieldList)
            {
                Assert.AreEqual(jsonObject[jsonKey.Name].Value <string>(),
                                originalJsonObject[jsonKey.Name].Value <string>());
            }

            fieldList =
                new List <JProperty>(jsonObject.Properties()).FindAll(key => !excludedList.Contains(key.Name));

            foreach (var jsonKey in fieldList)
            {
                Assert.AreEqual(jsonObject[jsonKey.Name].Value <string>(),
                                originalJsonObject[jsonKey.Name].Value <string>());
            }


            Assert.AreNotEqual(originalJsonObject["body"], jsonObject["body"]);
            if (originalJsonObject["precommit_body"] != null)
            {
                Assert.AreNotEqual(originalJsonObject["precommit_body"].Value <string>(),
                                   jsonObject["precommit_body"].Value <string>());
            }
        }
Ejemplo n.º 11
0
        public void DecryptUnknownTest()
        {
            const string CipherMessageV1 =
                "unknown";

            using var cryptoManager = new CryptoProvider();
            var exception = Assert.Throws <StorageCryptoException>(() =>
                                                                   cryptoManager.Decrypt(CipherMessageV1, SecretsDataGenerator.FromPassword("password"), 0));

            Assert.AreEqual("Unknown cipher format", exception.Message);
        }