コード例 #1
0
        public void CreateEncryptedDropCollectionOperationIfConfigured_should_return_expected_result_when_EncryptedFields_is_null()
        {
            var subject = DropCollectionOperation.CreateEncryptedDropCollectionOperationIfConfigured(_collectionNamespace, encryptedFields: null, _messageEncoderSettings, null);
            var session = OperationTestHelper.CreateSession();

            var s = subject.Should().BeOfType <DropCollectionOperation>().Subject;

            var command = s.CreateCommand(session);

            var expectedResult = new BsonDocument
            {
                { "drop", _collectionNamespace.CollectionName },
            };

            command.Should().Be(expectedResult);
        }
コード例 #2
0
        public void CreateEncryptedDropCollectionOperationIfConfigured_should_return_expected_result_when_EncryptedFields_is_set(string[] escCollectionStrElement, string[] eccCollectionStrElement, string[] ecocCollectionStrElement)
        {
            var encryptedFields = BsonDocument.Parse($@"
            {{
                {GetFirstElementWithCommaOrEmpty(escCollectionStrElement)}
                {GetFirstElementWithCommaOrEmpty(eccCollectionStrElement)}
                {GetFirstElementWithCommaOrEmpty(ecocCollectionStrElement)}
                ""fields"" :
                [{{
                    ""path"" : ""firstName"",
                    ""keyId"" : {{ ""$binary"" : {{ ""subType"" : ""04"", ""base64"" : ""AAAAAAAAAAAAAAAAAAAAAA=="" }} }},
                    ""bsonType"" : ""string"",
                    ""queries"" : {{ ""queryType"" : ""equality"" }}
                }},
                {{
                    ""path"" : ""ssn"",
                    ""keyId"" : {{ ""$binary"" : {{ ""subType"" : ""04"", ""base64"": ""BBBBBBBBBBBBBBBBBBBBBB=="" }} }},
                    ""bsonType"" : ""string""
                }}]
            }}");

            var subject = DropCollectionOperation.CreateEncryptedDropCollectionOperationIfConfigured(_collectionNamespace, encryptedFields, _messageEncoderSettings, null);
            var session = OperationTestHelper.CreateSession();

            var operations = ((CompositeWriteOperation <BsonDocument>)subject)._operations <BsonDocument>();

            // esc
            AssertDropCollectionCommand(
                operations[0],
                new CollectionNamespace(_collectionNamespace.DatabaseNamespace.DatabaseName, GetExpectedCollectionName(escCollectionStrElement)),
                encryptedFields: null,
                isMainOperation: false);
            // ecc
            AssertDropCollectionCommand(
                operations[1],
                new CollectionNamespace(_collectionNamespace.DatabaseNamespace.DatabaseName, GetExpectedCollectionName(eccCollectionStrElement)),
                encryptedFields: null,
                isMainOperation: false);
            // eco
            AssertDropCollectionCommand(
                operations[2],
                new CollectionNamespace(_collectionNamespace.DatabaseNamespace.DatabaseName, GetExpectedCollectionName(ecocCollectionStrElement)),
                encryptedFields: null,
                isMainOperation: false);

            // main
            AssertDropCollectionCommand(
                operations[3],
                _collectionNamespace,
                encryptedFields,
                isMainOperation: true);

            void AssertDropCollectionCommand((IWriteOperation <BsonDocument> Operation, bool IsMainOperation) operationInfo, CollectionNamespace collectionNamespace, BsonDocument encryptedFields, bool isMainOperation)
            {
                operationInfo.IsMainOperation.Should().Be(isMainOperation);
                var operation      = operationInfo.Operation.Should().BeOfType <DropCollectionOperation>().Subject;
                var result         = operation.CreateCommand(session);
                var expectedResult = new BsonDocument
                {
                    { "drop", collectionNamespace.CollectionName },
                };

                result.Should().Be(expectedResult);
            }

            string GetFirstElementWithCommaOrEmpty(string[] array) => array.First() != null ? $"{array.First()}," : string.Empty;

            string GetExpectedCollectionName(string[] array)
            {
                var first = array.First();
                var last  = array.Last();

                if (first != null)
                {
                    return(last);
                }
                else
                {
                    return($"enxcol_.{_collectionNamespace.CollectionName}.{last}");
                }
            }
        }