コード例 #1
0
        public void Delete_Can_Delete_Record_By_Alternate_Key_Multi()
        {
            //Arrange
            var accountToDelete = new Entity("account")
            {
                Id                = Guid.NewGuid(),
                ["name"]          = "Your Company",
                ["accountnumber"] = "1234567890"
            };
            var metadata = AccountMetadata.GetEntityMetadata();

            metadata.SetSealedPropertyValue(
                nameof(metadata.Keys),
                new EntityKeyMetadata[] {
                new EntityKeyMetadata()
                {
                    KeyAttributes = new string[] { "name", "accountnumber" }
                }
            });
            _context.InitializeMetadata(metadata);
            _context.Initialize(accountToDelete);

            var keys = new KeyAttributeCollection
            {
                { "name", accountToDelete.GetAttributeValue <string>("name") },
                { "accountnumber", accountToDelete.GetAttributeValue <string>("accountnumber") }
            };


            //Act
            _service.Delete("account", keys);

            //Assert
            Assert.Empty(_context.CreateQuery("account"));
        }
コード例 #2
0
        public void Delete_Can_Delete_EarlyBound_Record_By_Alternate_Key_Multi()
        {
            //Arrange
            var accountToDelete = new Account()
            {
                Id            = Guid.NewGuid(),
                Name          = "Your Company",
                AccountNumber = "1234567890"
            };
            var metadata = AccountMetadata.GetEntityMetadata();

            metadata.SetSealedPropertyValue(
                nameof(metadata.Keys),
                new EntityKeyMetadata[] {
                new EntityKeyMetadata()
                {
                    KeyAttributes = new string[] { Account.Fields.Name, Account.Fields.AccountNumber }
                }
            });
            _context.InitializeMetadata(metadata);
            _context.Initialize(accountToDelete);

            var keys = new KeyAttributeCollection
            {
                { Account.Fields.Name, accountToDelete.Name },
                { Account.Fields.AccountNumber, accountToDelete.AccountNumber }
            };

            //Act
            _service.Delete <Account>(keys);

            //Assert
            Assert.Empty(_context.CreateQuery <Account>());
        }
コード例 #3
0
        public void TestAccountMetadataEncodesId(AccountMetadata metadata)
        {
            var encodedId       = WebEncoders.Base64UrlEncode(metadata.Id.ToByteArray());
            var encodedMetadata = JsonConvert.SerializeObject(metadata);

            Assert.Contains(encodedId.Enquote(), encodedMetadata);
            Assert.Contains(metadata.DisplayName.Enquote(), encodedMetadata);
            Assert.Contains(metadata.GravatarHash.Enquote(), encodedMetadata);
        }
コード例 #4
0
        public async Task <IActionResult> GetAccountMetadata(string id)
        {
            if (id.FalsifyAsIdentifier())
            {
                logger.LogWarning("Account id rejected; Origin: {0}", HttpContext.GetRemoteAddress());
                return(BadRequest());
            }
            var idInBinary = WebEncoders.Base64UrlDecode(id);
            var idBoxedInGuidForDatabase = new Guid(idInBinary);
            var account = await databaseService.GetAccountAsync(idBoxedInGuidForDatabase);

            var responseBody = new AccountMetadata(account.Id, account.DisplayName, account.Email.ToGravatarHash());

            return(Ok(responseBody));
        }
コード例 #5
0
        public void Clone_default_addCloneLabel_Adds_Clone_Label()
        {
            var metadata       = AccountMetadata.GetEntityMetadata();
            var entityMetadata = new EntityMetadataCollection()
            {
                metadata
            };

            _context.AddFakeMessageExecutor <RetrieveMetadataChangesRequest>(new RetrieveMetadataChangesRequestExecutor(entityMetadata));

            var clone = new Entity("account")
            {
                ["name"] = "Your Company"
            }.Clone(_service);

            Assert.Equal("Your Company (clone)", clone.GetAttributeValue <string>("name"));
        }
コード例 #6
0
        public void Clone_Ignores_Uniqueidentifier_Columns()
        {
            var metadata       = AccountMetadata.GetEntityMetadata();
            var entityMetadata = new EntityMetadataCollection()
            {
                metadata
            };

            _context.AddFakeMessageExecutor <RetrieveMetadataChangesRequest>(new RetrieveMetadataChangesRequestExecutor(entityMetadata));

            var clone = new Entity("account")
            {
                ["name"]      = "Your Company",
                ["processid"] = Guid.NewGuid()
            }.Clone(_service);

            Assert.Null(clone.GetAttributeValue <Guid?>("processid"));
        }
コード例 #7
0
        public void Clone_Correctly_Clones_Record_Without_columnsToRemove()
        {
            var metadata       = AccountMetadata.GetEntityMetadata();
            var entityMetadata = new EntityMetadataCollection()
            {
                metadata
            };

            _context.AddFakeMessageExecutor <RetrieveMetadataChangesRequest>(new RetrieveMetadataChangesRequestExecutor(entityMetadata));

            var clone = new Entity("account")
            {
                ["name"]             = "Your Company",
                ["primarycontactid"] = new EntityReference("contact", Guid.NewGuid())
            }.Clone(_service);

            Assert.NotNull(clone.GetAttributeValue <EntityReference>("primarycontactid"));
        }