public void Can_Add_Update_ModifyMembers_Group() { var members = _context.Query <IntegrationUserTest>().Select(u => u.DistinguishedName).ToList(); members.Count.Should().Be.GreaterThan(0); var group = new IntegrationGroupTest { Member = new Collection <string>(members.GetRange(0, members.Count - 1)) }; group.SetDistinguishedName("TestGroup"); var added = _context.AddAndGet(group); var addedQueried = _context.Query <IntegrationGroupTest>() .Where(c => c.DistinguishedName == added.DistinguishedName) .Select(c => c) .Single(); added.OriginalValues["CommonName"].Should().Be.EqualTo("TestGroup"); added.OriginalValues["Member"].As <Collection <string> >().Should().Have.Count.EqualTo(members.Count - 1); added.OriginalValues["distinguishedname"].Should().Be.EqualTo(added.DistinguishedName); added.OriginalValues["CommonName"].Should().Be.EqualTo(addedQueried.OriginalValues["CommonName"]); added.OriginalValues["Member"].As <Collection <string> >() .Should().Have.SameSequenceAs(addedQueried.OriginalValues["Member"].As <Collection <string> >()); added.OriginalValues["distinguishedname"].Should() .Be.EqualTo(addedQueried.OriginalValues["distinguishedname"]); foreach (var member in members.GetRange(0, members.Count - 1)) { added.Member.Should().Contain(member); } int removedIndex = members.IndexOf(added.Member[0]); added.Member.Should().Not.Contain(members.Last()); added.Member.RemoveAt(0); added.Member.Add(members.Last()); var updated = _context.UpdateAndGet(added); updated.Should().Not.Be.EqualTo(added); updated.Member.Count.Should().Be.EqualTo(members.Count - 1); updated.Member.Should().Not.Contain(members[removedIndex]); updated.Member.Should().Contain(members.Last()); updated.OriginalValues["CommonName"].Should().Be.EqualTo("TestGroup"); updated.OriginalValues["distinguishedname"].Should().Be.EqualTo(added.DistinguishedName); updated.OriginalValues["CommonName"].Should().Be.EqualTo(addedQueried.OriginalValues["CommonName"]); updated.OriginalValues["Member"].As <Collection <string> >() .Should().Have.SameSequenceAs(updated.Member); updated.OriginalValues["distinguishedname"].Should() .Be.EqualTo(addedQueried.OriginalValues["distinguishedname"]); _context.Delete(updated.DistinguishedName); }
public void Can_Modify_Individual_Members_Group() { var members = _context.Query <IntegrationUserTest>().Select(u => u.DistinguishedName).ToList(); members.Count.Should().Be.GreaterThan(2); var group = new IntegrationGroupTest { Member = new Collection <string>(members.Skip(1).ToArray()) }; group.SetDistinguishedName("TestGroup"); try { var added = _context.AddAndGet(group); added.Member.Should().Not.Contain(members.First()).And.Have.Count.EqualTo(members.Count - 1); _context.AddAttribute(group.DistinguishedName, "member", members.First()); added = _context.GetByDN <IntegrationGroupTest>(group.DistinguishedName); added.Member.Should().Contain(members.First()).And.Have.Count.EqualTo(members.Count); _context.DeleteAttribute(group.DistinguishedName, "member", members.First()); added = _context.GetByDN <IntegrationGroupTest>(group.DistinguishedName); added.Member.Should().Not.Contain(members.First()).And.Have.Count.EqualTo(members.Count - 1); } finally { try { _context.Delete(group.DistinguishedName); } finally { } } }