public void SearchConditionIsCorrect ( int userId, MFPermissionsExpressionType permission ) { // Create the search builder. var mfSearchBuilder = this.GetSearchBuilder(); // Add the search condition for whether the user has the required permissions. mfSearchBuilder.UserHasPermissionTo(userId, permission); // If there's anything other than one condition then fail. if (mfSearchBuilder.Conditions.Count != 1) { Assert.Inconclusive("Only one search condition should exist"); } // Retrieve the just-added condition. var condition = mfSearchBuilder.Conditions[mfSearchBuilder.Conditions.Count]; // Ensure the condition type is correct. Assert.AreEqual(MFConditionType.MFConditionTypeEqual, condition.ConditionType); // Ensure the expression type is correct. Assert.AreEqual(MFExpressionType.MFExpressionTypePermissions, condition.Expression.Type); // Ensure the status value is correct. Assert.AreEqual(permission, condition.Expression.DataPermissionsType); // Ensure that the typed value is correct. Assert.AreEqual(MFDataType.MFDatatypeLookup, condition.TypedValue.DataType); Assert.AreEqual(userId, condition.TypedValue.GetLookupID()); }
/// <summary> /// Adds a <see cref="SearchCondition"/> to the collection for whether the specified user has the specified permission on an object. /// </summary> /// <param name="searchBuilder">The <see cref="MFSearchBuilder"/> to add the condition to.</param> /// <param name="userId">The ID of the user in question.</param> /// <param name="permission">The permission that the user should have on the object.</param> /// <param name="conditionType">What type of search to execute (defaults to <see cref="MFConditionType.MFConditionTypeEqual"/>).</param> /// <returns>The <paramref name="searchBuilder"/> provided, for chaining.</returns> public static MFSearchBuilder UserHasPermissionTo ( this MFSearchBuilder searchBuilder, int userId, MFPermissionsExpressionType permission, MFConditionType conditionType = MFConditionType.MFConditionTypeEqual ) { // Sanity. if (null == searchBuilder) { throw new ArgumentNullException(nameof(searchBuilder)); } // We can only handle certain condition types; throw for others. if (conditionType != MFConditionType.MFConditionTypeEqual && conditionType != MFConditionType.MFConditionTypeNotEqual) { throw new ArgumentException ( $"The condition type {conditionType} is not supported for permission-based search conditions.", nameof(conditionType) ); } // Create the search condition. var searchCondition = new SearchCondition { ConditionType = conditionType }; // Set up the permission expression. searchCondition.Expression.SetPermissionExpression ( permission ); // Set the condition value to the lookup. var lookup = new MFilesAPI.Lookup() { ObjectType = (int)MFBuiltInValueList.MFBuiltInValueListUsers, Item = userId }; searchCondition.TypedValue.SetValue(MFDataType.MFDatatypeLookup, lookup); // Add the search condition to the collection. searchBuilder.Conditions.Add(-1, searchCondition); // Return the search builder for chaining. return(searchBuilder); }
public void SetPermissionExpression(MFPermissionsExpressionType PermissionsExpressionType) { throw new NotImplementedException(); }