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());
        }
Esempio n. 4
0
        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);
            }
        }
Esempio n. 5
0
        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);

        }
Esempio n. 8
0
        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);
        }
Esempio n. 9
0
        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);
        }
Esempio n. 10
0
 protected override void ExecuteInsideImpersonatedContext(ComPluginInvokeArgs args)
 {
     _comPluginInvokeArgs = args;
     _result = "some result";
 }
Esempio n. 11
0
        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);
                }
            }
        }
Esempio n. 12
0
 protected virtual void ExecuteInsideImpersonatedContext(ComPluginInvokeArgs args)
 {
     Common.Utilities.PerformActionInsideImpersonatedContext(Common.Utilities.ServerUser, () => { _result = ComPluginServiceExecutionFactory.InvokeComPlugin(args).ToString(); });
 }