public void DBQueryByAttributeExceptionOnMVNull() { Guid valueSourceObjectId = Guid.NewGuid(); DBQueryByValue match1 = new DBQueryByValue(ActiveConfig.DB.GetAttribute("mailAlternateAddresses"), ValueOperator.Equals, ActiveConfig.DB.GetAttribute("mailAlternateAddresses")); DBQueryGroup group = new DBQueryGroup(GroupOperator.All); group.AddChildQueryObjects(match1); try { MAObjectHologram valueSourceObject = ActiveConfig.DB.CreateMAObject(valueSourceObjectId, "person"); valueSourceObject.CommitCSEntryChange(); try { DBQueryBuilder queryBuilder = new DBQueryBuilder(group, 0, valueSourceObject); Assert.Fail("The expected exception was not thrown"); } catch (QueryValueNullException) { } } finally { ActiveConfig.DB.DeleteMAObjectPermanent(valueSourceObjectId); } }
public void DBQueryByAttributeMVToMVEquals() { Guid searchObjectId = Guid.NewGuid(); Guid valueSourceObjectId = Guid.NewGuid(); DBQueryByValue match1 = new DBQueryByValue(ActiveConfig.DB.GetAttribute("mailAlternateAddresses"), ValueOperator.Equals, ActiveConfig.DB.GetAttribute("mailAlternateAddresses")); DBQueryByValue match2 = new DBQueryByValue(ActiveConfig.DB.GetAttribute("objectId"), ValueOperator.Equals, searchObjectId); DBQueryGroup group = new DBQueryGroup(GroupOperator.All); group.AddChildQueryObjects(match1, match2); try { MAObjectHologram searchObject = ActiveConfig.DB.CreateMAObject(searchObjectId, "person"); searchObject.SetAttributeValue(ActiveConfig.DB.GetAttribute("mailAlternateAddresses"), new List <object>() { "*****@*****.**", "*****@*****.**", "*****@*****.**" }); searchObject.CommitCSEntryChange(); MAObjectHologram valueSourceObject = ActiveConfig.DB.CreateMAObject(valueSourceObjectId, "person"); valueSourceObject.SetAttributeValue(ActiveConfig.DB.GetAttribute("mailAlternateAddresses"), new List <object>() { "*****@*****.**", "*****@*****.**" }); valueSourceObject.CommitCSEntryChange(); List <MAObjectHologram> results = ActiveConfig.DB.GetMAObjectsFromDBQuery(group, valueSourceObject).ToList(); if (results.Count() != 1) { Assert.Fail("The incorrect number of results were returned"); } if (results.First().ObjectID != searchObjectId) { Assert.Fail("The incorrect object was returned"); } valueSourceObject.SetObjectModificationType(ObjectModificationType.Update, false); valueSourceObject.SetAttributeValue(ActiveConfig.DB.GetAttribute("mailAlternateAddresses"), new List <object>() { "*****@*****.**", "*****@*****.**" }); valueSourceObject.CommitCSEntryChange(); results = ActiveConfig.DB.GetMAObjectsFromDBQuery(group, valueSourceObject).ToList(); if (results.Count != 0) { Assert.Fail("The test returned an unexpected object"); } } finally { ActiveConfig.DB.DeleteMAObjectPermanent(searchObjectId); ActiveConfig.DB.DeleteMAObjectPermanent(valueSourceObjectId); } }
public void TestSerialization() { DBQueryByValue toSeralize = new DBQueryByValue(ActiveConfig.DB.GetAttribute("sn"), ValueOperator.Equals, ActiveConfig.DB.GetAttribute("firstName")); toSeralize.Description = "attribute"; DBQueryByValue deserialized = (DBQueryByValue)UnitTestControl.XmlSerializeRoundTrip <DBQueryByValue>(toSeralize); Assert.AreEqual(toSeralize.Description, deserialized.Description); Assert.AreEqual(toSeralize.Operator, deserialized.Operator); Assert.AreEqual(toSeralize.SearchAttribute, deserialized.SearchAttribute); Assert.AreEqual(toSeralize.ValueDeclarations[0].Declaration, deserialized.ValueDeclarations[0].Declaration); }
protected override void ProcessRecord() { Global.ThrowIfNotConnected(this); try { AcmaSchemaAttribute attribute = ActiveConfig.DB.GetAttribute(this.AttributeName); DBQueryByValue query = new DBQueryByValue(attribute, this.Operator, new ValueDeclaration()); WriteObject(query); } catch (Exception ex) { ErrorRecord error = new ErrorRecord(ex, "UnknownError", ErrorCategory.NotSpecified, this); ThrowTerminatingError(error); } }
public DBQueryByValueViewModel(DBQueryByValue model) : base(model) { this.Commands.AddItem("DeleteQuery", t => this.Delete()); this.typedModel = model; this.IgnorePropertyHasChanged.Add("DisplayName"); if (this.typedModel.ValueDeclarations == null) { this.typedModel.ValueDeclarations = new List <ValueDeclaration>(); } if (this.typedModel.ValueDeclarations.Count == 0) { this.typedModel.ValueDeclarations.Add(new ValueDeclaration()); } this.Declaration = new ValueDeclarationViewModel(this.typedModel.ValueDeclarations.First(), null); this.EnableCutCopy(); }
public void ExportCSEntryChangeAddResurrect() { Guid originalId = Guid.NewGuid(); Guid replacementId = Guid.NewGuid(); if (!ActiveConfig.XmlConfig.ClassConstructors.Contains("person")) { ActiveConfig.XmlConfig.ClassConstructors.Add(new ClassConstructor() { ObjectClass = ActiveConfig.DB.GetObjectClass("person") }); } ActiveConfig.XmlConfig.ClassConstructors["person"].ResurrectionParameters = new DBQueryGroup(); ActiveConfig.XmlConfig.ClassConstructors["person"].ResurrectionParameters.Operator = GroupOperator.Any; DBQueryByValue query = new DBQueryByValue(ActiveConfig.DB.GetAttribute("sapPersonId"), ValueOperator.Equals, ActiveConfig.DB.GetAttribute("sapPersonId")); ActiveConfig.XmlConfig.ClassConstructors["person"].ResurrectionParameters.DBQueries.Add(query); CSEntryChange csentry = CSEntryChange.Create(); csentry.DN = originalId.ToString(); csentry.ObjectModificationType = ObjectModificationType.Add; csentry.ObjectType = "person"; csentry.AttributeChanges.Add(AttributeChange.CreateAttributeAdd("mail", "*****@*****.**")); csentry.AttributeChanges.Add(AttributeChange.CreateAttributeAdd("mailAlternateAddresses", new List <object> { "*****@*****.**", "*****@*****.**" })); csentry.AttributeChanges.Add(AttributeChange.CreateAttributeAdd("unixUid", 44L)); csentry.AttributeChanges.Add(AttributeChange.CreateAttributeAdd("expiryDates", new List <object>() { 55L, 66L, 77L })); csentry.AttributeChanges.Add(AttributeChange.CreateAttributeAdd("directReports", new List <object>() { new Guid("{8FC92471-7835-4804-8BBB-0A5ED7078074}"), new Guid("{0EF7CC21-729E-4ED9-A3AF-8203796334C6}") })); csentry.AttributeChanges.Add(AttributeChange.CreateAttributeAdd("supervisor", new Guid("{2807ED76-E262-4EB4-ABD9-9629F3830F12}"))); csentry.AttributeChanges.Add(AttributeChange.CreateAttributeAdd("connectedToSap", true)); csentry.AttributeChanges.Add(AttributeChange.CreateAttributeAdd("objectSids", new List <object>() { new byte[] { 0, 1, 2, 3, 4, 5 }, new byte[] { 2, 4, 6, 8, 0 } })); csentry.AttributeChanges.Add(AttributeChange.CreateAttributeAdd("objectSid", new byte[] { 0, 1, 2, 3, 4 })); try { bool refretry; CSEntryExport.PutExportEntry(csentry, out refretry); AcmaSchemaObjectClass objectClass = ActiveConfig.DB.GetObjectClass("person"); MAObjectHologram originalObject = ActiveConfig.DB.GetMAObject(originalId, objectClass); originalObject.SetObjectModificationType(ObjectModificationType.Update, false); originalObject.SetAttributeValue(ActiveConfig.DB.GetAttribute("sapPersonId"), 7777L); originalObject.SetAttributeValue(ActiveConfig.DB.GetAttribute("accountName"), "jesus"); originalObject.DeletedTimestamp = DateTime.UtcNow.Ticks; originalObject.CommitCSEntryChange(); csentry = CSEntryChange.Create(); csentry.DN = replacementId.ToString(); csentry.ObjectModificationType = ObjectModificationType.Add; csentry.ObjectType = "person"; csentry.AttributeChanges.Add(AttributeChange.CreateAttributeAdd("mail", "*****@*****.**")); csentry.AttributeChanges.Add(AttributeChange.CreateAttributeAdd("sapPersonId", 7777L)); CSEntryExport.PutExportEntry(csentry, out refretry); MAObjectHologram newObject = ActiveConfig.DB.GetMAObjectOrDefault(replacementId); if (newObject == null) { Assert.Fail("The object with the new ID was not found"); } if (newObject.GetSVAttributeValue(ActiveConfig.DB.GetAttribute("accountName")) != "jesus") { Assert.Fail("The object was not resurrected"); } if (newObject.DeletedTimestamp != 0) { Assert.Fail("The object was not undeleted"); } originalObject = ActiveConfig.DB.GetMAObjectOrDefault(originalId); if (originalObject != null) { Assert.Fail("The original object still exists"); } } finally { ActiveConfig.DB.DeleteMAObjectPermanent(originalId); ActiveConfig.DB.DeleteMAObjectPermanent(replacementId); } }
protected override void ProcessRecord() { if (!this.IsConnectionStatusOk(false)) { return; } if (this.ID != null) { Guid? guidID; string stringID = this.ID as string; if (stringID != null) { guidID = new Guid(stringID); } else { guidID = this.ID as Guid?; if (guidID == null) { throw new ArgumentException("The ID must be a GUID object or a GUID in string format"); } } MAObjectHologram maobject = ActiveConfig.DB.GetMAObjectOrDefault(new Guid(stringID)); if (maobject == null) { return; } this.WriteObject(new AcmaPSObject(maobject)); return; } else if (this.AttributeValuePairs != null) { DBQueryGroup group = new DBQueryGroup(GroupOperator.All); foreach (object key in this.AttributeValuePairs.Keys) { DBQueryByValue query = new DBQueryByValue(ActiveConfig.DB.GetAttribute((string)key), ValueOperator.Equals, this.AttributeValuePairs[key]); group.AddChildQueryObjects(query); } IList <MAObjectHologram> results = ActiveConfig.DB.GetMAObjectsFromDBQuery(group).ToList(); if (results.Count == 0) { throw new NotFoundException(); } else if (results.Count > 1) { throw new InvalidOperationException("More than one object matched the given criteria. Use Get-AcmaObjects for returning multiple results"); } else { this.WriteObject(new AcmaPSObject(results.First())); return; } } else { DBQueryByValue query = new DBQueryByValue(ActiveConfig.DB.GetAttribute(this.AttributeName), ValueOperator.Equals, this.AttributeValue); IList <MAObjectHologram> results = ActiveConfig.DB.GetMAObjectsFromDBQuery(query).ToList(); if (results.Count == 0) { throw new NotFoundException(); } else if (results.Count > 1) { throw new InvalidOperationException("More than one object matched the given criteria. Use Get-AcmaObjects for returning multiple results"); } else { this.WriteObject(new AcmaPSObject(results.First())); return; } } }