public void ComPluginRuntimeHandler_Test_WhenValidMethod_ExpectReturn() { //------------Setup for test-------------------------- var svc = CreatePluginService(); CreateComPluginSource(); var mock = new Mock <INamedPipeClientStreamWrapper>(); var memoryStream = new MemoryStream(); var list = new List <string>() { "Home" }; memoryStream.WriteByte(Encoding.ASCII.GetBytes(list.SerializeToJsonString(new KnownTypesBinder()))[0]); mock.Setup(wrapper => wrapper.GetInternalStream()).Returns(memoryStream); //------------Execute Test-------------------------- - var isolated = new ComPluginRuntimeHandler(mock.Object); var args = new ComPluginInvokeArgs { ClsId = adodbConnectionClassId, Fullname = svc.Namespace, Method = "ToString", Parameters = svc.Method.Parameters, Is32Bit = true }; var run = isolated.Test(args, out string outString); Assert.IsNotNull(run); Assert.IsNotNull(outString); }
public void BuildValuedTypeParams_GivenValid_ShouldPassThrough() { //---------------Set up test pack------------------- var pipeMock = new Mock <INamedPipeClientStreamWrapper>(); var memoryStream = new MemoryStream(); var serializeObject = JsonConvert.SerializeObject(GetType()); memoryStream.WriteByte(Encoding.ASCII.GetBytes(serializeObject)[0]); pipeMock.Setup(wrapper => wrapper.GetInternalStream()).Returns(memoryStream); var client = IpcClient.GetIPCExecutor(pipeMock.Object); var type = typeof(ComPluginRuntimeHandler); var methodInfo = type.GetMethod("BuildValuedTypeParams", BindingFlags.Static | BindingFlags.NonPublic); ComPluginInvokeArgs args = new ComPluginInvokeArgs { ClsId = adodbConnectionClassId, Is32Bit = false, Method = "ToString", Parameters = new List <MethodParameter>() { new MethodParameter() { Value = "hi", TypeName = typeof(string).FullName } } }; //---------------Assert Precondition---------------- Assert.IsNotNull(client); //---------------Execute Test ---------------------- var enumerable = methodInfo.Invoke("BuildValuedTypeParams", new object[] { args }) as IEnumerable <object>; //---------------Test Result ----------------------- Assert.AreEqual(1, enumerable?.Count()); }
public void TryBuildValuedTypeParams_GivenValidObjectparam_ShouldPassThrough() { //---------------Set up test pack------------------- var type = typeof(ComPluginRuntimeHandler); var methodInfo = type.GetMethod("TryBuildValuedTypeParams", BindingFlags.Static | BindingFlags.NonPublic); var args = new ComPluginInvokeArgs { ClsId = adodbConnectionClassId, Is32Bit = false, Method = "ToString", Parameters = new List <MethodParameter>() { new MethodParameter() { Value = new Human().SerializeToJsonString(new DefaultSerializationBinder()) , TypeName = typeof(Human).FullName } } }; //---------------Execute Test ---------------------- var enumerable = methodInfo.Invoke("TryBuildValuedTypeParams", new object[] { args }) as IEnumerable <object>; //---------------Test Result ----------------------- Assert.AreEqual(1, enumerable?.Count()); }
protected void ExecuteService(int update, out ErrorResultTO errors, IPluginAction method, IDSFDataObject dataObject) { errors = new ErrorResultTO(); var itrs = new List <IWarewolfIterator>(5); IWarewolfListIterator itrCollection = new WarewolfListIterator(); var source = ResourceCatalog.GetResource <ComPluginSource>(dataObject.WorkspaceID, SourceId); var methodParameters = Inputs?.Select(a => new MethodParameter { EmptyToNull = a.EmptyIsNull, IsRequired = a.RequiredField, Name = a.Name, Value = a.Value, TypeName = a.TypeName }).ToList() ?? new List <MethodParameter>(); BuildParameterIterators(update, methodParameters.ToList(), itrCollection, itrs, dataObject); var args = new ComPluginInvokeArgs { ClsId = source.ClsId, Is32Bit = source.Is32Bit, Method = method.Method, AssemblyName = Namespace?.AssemblyName, Parameters = methodParameters }; try { TryExecute(update, dataObject, itrs, itrCollection, methodParameters, args); } catch (Exception e) { errors.AddError(e.Message); } }
protected void ExecuteService(int update, out ErrorResultTO errors, IPluginAction method, IDSFDataObject dataObject) { errors = new ErrorResultTO(); var itrs = new List <IWarewolfIterator>(5); IWarewolfListIterator itrCollection = new WarewolfListIterator(); var source = ResourceCatalog.GetResource <ComPluginSource>(dataObject.WorkspaceID, SourceId); var methodParameters = Inputs?.Select(a => new MethodParameter { EmptyToNull = a.EmptyIsNull, IsRequired = a.RequiredField, Name = a.Name, Value = a.Value, TypeName = a.TypeName }).ToList() ?? new List <MethodParameter>(); BuildParameterIterators(update, methodParameters.ToList(), itrCollection, itrs, dataObject); var args = new ComPluginInvokeArgs { ClsId = source.ClsId, Is32Bit = source.Is32Bit, Method = method.Method, AssemblyName = Namespace?.AssemblyName, Parameters = methodParameters }; try { if (Inputs == null || Inputs.Count == 0) { PerfromExecution(update, dataObject, args); } else { while (itrCollection.HasMoreData()) { int pos = 0; foreach (var itr in itrs) { string injectVal = itrCollection.FetchNextValue(itr); var param = methodParameters.ToList()[pos]; param.Value = param.EmptyToNull && (injectVal == null || string.Compare(injectVal, string.Empty, StringComparison.InvariantCultureIgnoreCase) == 0) ? null : injectVal; pos++; } PerfromExecution(update, dataObject, args); } } } catch (Exception e) { errors.AddError(e.Message); } }
public void ComPluginRuntimeHandler_Run_WhenNullParameters_ExpectException() { //------------Setup for test-------------------------- var svc = CreatePluginService(); var source = CreateComPluginSource(); //------------Execute Test--------------------------- using (var isolated = new Isolated<ComPluginRuntimeHandler>()) { var args = new ComPluginInvokeArgs { ClsId = source.ClsId, AssemblyName = "Foo", Fullname = svc.Namespace, Method = svc.Method.Name, Parameters = null }; isolated.Value.Run(args); } }
public void ComPluginRuntimeHandler_Test_WhenInvalidMethod_ExpectNoReturn() { //------------Setup for test-------------------------- var svc = CreatePluginService(); CreateComPluginSource(); //------------Execute Test-------------------------- - var isolated = new ComPluginRuntimeHandler(); var args = new ComPluginInvokeArgs { ClsId = adodbConnectionClassId, Fullname = svc.Namespace, Method = "InvalidName", Parameters = svc.Method.Parameters }; var run = isolated.Test(args, out string outString); Assert.IsNotNull(run); Assert.IsNull(outString); }
private void PerfromExecution(int update, IDSFDataObject dataObject, ComPluginInvokeArgs args) { if (!IsObject) { int i = 0; foreach (var serviceOutputMapping in Outputs) { OutputDescription.DataSourceShapes[0].Paths[i].OutputExpression = DataListUtil.AddBracketsToValueIfNotExist(serviceOutputMapping.MappedTo); i++; } var outputFormatter = OutputFormatterFactory.CreateOutputFormatter(OutputDescription); args.OutputFormatter = outputFormatter; } Common.Utilities.PerformActionInsideImpersonatedContext(Common.Utilities.ServerUser, () => { _result = ComPluginServiceExecutionFactory.InvokeComPlugin(args).ToString(); }); ResponseManager = new ResponseManager { OutputDescription = OutputDescription, Outputs = Outputs, IsObject = IsObject, ObjectName = ObjectName }; ResponseManager.PushResponseIntoEnvironment(_result, update, dataObject, false); }
void PerformExecution(int update, IDSFDataObject dataObject, ComPluginInvokeArgs args) { if (!IsObject) { var i = 0; foreach (var serviceOutputMapping in Outputs) { OutputDescription.DataSourceShapes[0].Paths[i].OutputExpression = DataListUtil.AddBracketsToValueIfNotExist(serviceOutputMapping.MappedTo); i++; } var outputFormatter = OutputFormatterFactory.CreateOutputFormatter(OutputDescription); args.OutputFormatter = outputFormatter; } ExecuteInsideImpersonatedContext(args); ResponseManager = _responseManagerFactory.New(OutputDescription); ResponseManager.Outputs = Outputs; ResponseManager.IsObject = IsObject; ResponseManager.ObjectName = ObjectName; ResponseManager.PushResponseIntoEnvironment(_result, update, dataObject, false); }
protected override void ExecuteInsideImpersonatedContext(ComPluginInvokeArgs args) { _comPluginInvokeArgs = args; _result = "some result"; }
private void TryExecute(int update, IDSFDataObject dataObject, List <IWarewolfIterator> itrs, IWarewolfListIterator itrCollection, List <MethodParameter> methodParameters, ComPluginInvokeArgs args) { if (Inputs == null || Inputs.Count == 0) { PerfromExecution(update, dataObject, args); } else { while (itrCollection.HasMoreData()) { var pos = 0; foreach (var itr in itrs) { var injectVal = itrCollection.FetchNextValue(itr); var param = methodParameters.ToList()[pos]; param.Value = param.EmptyToNull && (injectVal == null || string.Compare(injectVal, string.Empty, StringComparison.InvariantCultureIgnoreCase) == 0) ? null : injectVal; pos++; } PerfromExecution(update, dataObject, args); } } }
protected virtual void ExecuteInsideImpersonatedContext(ComPluginInvokeArgs args) { Common.Utilities.PerformActionInsideImpersonatedContext(Common.Utilities.ServerUser, () => { _result = ComPluginServiceExecutionFactory.InvokeComPlugin(args).ToString(); }); }