private PowerShellScriptPluginConfiguration UpdateConfiguration(DictionaryParameters parameters) { Contract.Requires(parameters.IsValid()); // check for endpoint var configurationBase = SchedulerPluginConfigurationBase.Convert<SchedulerPluginConfigurationBase>(parameters); Contract.Assert(configurationBase.IsValid()); var configurationManager = new PowerShellScriptPluginConfigurationManager(configurationBase.Endpoints); parameters.Add("ComputerName", configurationManager.GetComputerName()); parameters.Add("ConfigurationName", configurationManager.GetConfigurationNameTemplate()); parameters.Add("ScriptBase", configurationManager.GetScriptBase()); parameters.Add("Credential", configurationManager.GetCredentials()); var message = new StringBuilder(); message.AppendLine("PowerShellScriptPlugin.UpdatingConfiguration ..."); message.AppendLine(); foreach(KeyValuePair<string, object> item in parameters) { message.AppendFormat("{0}: '{1}'", item.Key, item.Value ?? item.Value.ToString()); message.AppendLine(); } message.AppendLine(); message.AppendLine("PowerShellScriptPlugin.UpdatingConfiguration COMPLETED."); Logger.WriteLine(message.ToString()); configuration = PowerShellScriptPluginConfiguration.Convert<PowerShellScriptPluginConfiguration>(parameters, true); Contract.Assert(configuration.IsValid()); return configuration; }
public void InvokeWithMissingWorkingDirectoryThrowsContractException() { // Arrange var parameters = new DictionaryParameters(); parameters.Add("CommandLine", "arbitrary-string"); parameters.Add("missing-parameter-WorkingDirectory", "arbitrary-string"); parameters.Add("Credential", CredentialCache.DefaultCredentials); var jobResult = new JobResult(); // Act var sut = new ProgrammePlugin(); var result = sut.Invoke(parameters, jobResult); // Assert // N/A }
public void AddThrowsArgumentException() { // Arrange var sut = new DictionaryParameters() { { "Key1.1", "arbitrary-value1-1" } , { "Key1.2", 11L } , { "DuplicateKey", "arbitrary-value" } }; var objectToMerge = new DictionaryParameters() { { "Key2.1", "arbitrary-value-2.1" } , { "Key2.2", 22L } , { "DuplicateKey", "arbitrary-value" } }; // Act var result = sut.Add(objectToMerge); // Assert // N/A }
public DictionaryParameters Convert <TAttribute>(ConvertibleBaseDto convertibleDto, bool includeAllProperties) where TAttribute : ConversionKeyBaseAttribute { // create Dto to be returned var dictionaryParameters = new DictionaryParameters(); // get all defined properties in Dto var propertyInfos = convertibleDto .GetType() .GetProperties ( BindingFlags.Static | BindingFlags.Instance | BindingFlags.Public | BindingFlags.FlattenHierarchy ); Contract.Assert(null != propertyInfos); foreach (var propertyInfo in propertyInfos) { // get annotation of property var attribute = (TAttribute)Attribute.GetCustomAttribute(propertyInfo, typeof(TAttribute)); // skip if no attribute found ... if (null == attribute) { // but add property if we should include all properties if (includeAllProperties) { dictionaryParameters.Add(propertyInfo.Name, propertyInfo.GetValue(convertibleDto, null)); } continue; } // assert that we do not have the annotated property in our dictionary Contract.Assert(!dictionaryParameters.ContainsKey(attribute.Name)); // add value to dictionary dictionaryParameters.Add(attribute.Name, propertyInfo.GetValue(convertibleDto, null)); } return(dictionaryParameters); }
public void GetAndSetConfigurationSucceeds() { // Arrange var configuration = new DictionaryParameters(); var key1 = "arbitrary-key1"; var value1 = "arbitrary-value"; configuration.Add(key1, value1); var key2 = "arbitrary-key2"; var value2 = 42; configuration.Add(key2, value2); var key3 = "arbitrary-key3"; var value3 = new object(); configuration.Add(key3, value3); // Act var sut = new DefaultPlugin(); sut.Configuration = configuration; // Assert Assert.AreEqual(configuration, sut.Configuration); }
public void InvokeConfigurationSucceeds() { // Arrange var parameters = new DictionaryParameters(); var key1 = "arbitrary-key1"; var value1 = "arbitrary-value"; parameters.Add(key1, value1); var key2 = "arbitrary-key2"; var value2 = 42; parameters.Add(key2, value2); var key3 = "arbitrary-key3"; var value3 = new object(); parameters.Add(key3, value3); var jobResult = new JobResult(); var schedulerPluginBase = Mock.Create<SchedulerPluginBase>(); Mock.Arrange(() => schedulerPluginBase.Invoke(Arg.IsAny<DictionaryParameters>(), Arg.IsAny<IInvocationResult>())) .IgnoreInstance() .CallOriginal() .MustBeCalled(); // Act var sut = new DefaultPlugin(); sut.Initialise(new DictionaryParameters(), new Logger(), true); var result = sut.Invoke(parameters, jobResult); // Assert Assert.IsTrue(result); Assert.IsNotNull(jobResult); Assert.IsTrue(jobResult.Description.Contains(key1)); Assert.IsTrue(jobResult.Description.Contains(value1.ToString())); Assert.IsTrue(jobResult.Description.Contains(key2)); Assert.IsTrue(jobResult.Description.Contains(value2.ToString())); Assert.IsTrue(jobResult.Description.Contains(key3)); Assert.IsTrue(jobResult.Description.Contains(value3.ToString())); Mock.Assert(schedulerPluginBase); }
public void ConvertFromDictionaryParametersToSchedulerPluginConfigurationBaseSucceeds() { var uri = new Uri("http://www.example.com/"); var credentials = CredentialCache.DefaultNetworkCredentials; var appclusiveEndpoints = new AppclusiveEndpoints(uri, credentials); var sut = new DictionaryParameters(); sut.Add(typeof(AppclusiveEndpoints).ToString(), appclusiveEndpoints); // Act var result = SchedulerPluginConfigurationBase.Convert<SchedulerPluginConfigurationBase>(sut); // Assert Assert.IsTrue(result.IsValid()); Assert.IsNotNull(result.Endpoints); }
// this method is provided to facilitate calling from PowerShell public static DictionaryParameters Merge(DictionaryParameters left, DictionaryParameters right, MergeOptions mergeOption) { Contract.Requires(null != left); Contract.Requires(null != right); var mergedDictionary = Merge <string, object>(left, right, mergeOption); if (null == mergedDictionary) { return(null); } var result = new DictionaryParameters(); foreach (var kvp in mergedDictionary) { result.Add(kvp.Key, kvp.Value); } return(result); }
public void DictionaryParametersReplaceExistingKeysFalseSucceeds() { var source = new DictionaryParameters() { { "key1", "value1" } , { "key2", "value2" } }; var objectToMerge = new DictionaryParameters() { { "key1", "value1-new" } , { "key3", "value3" } }; var result = source.Add(objectToMerge, false); Assert.IsTrue(result.ContainsKey("key1")); Assert.AreEqual("value1", result["key1"]); Assert.IsTrue(result.ContainsKey("key2")); Assert.IsTrue(result.ContainsKey("key3")); }
public void AddSucceeds() { // Arrange var sut = new DictionaryParameters() { { "Key1.1", "arbitrary-value1-1" } , { "Key1.2", 11L } }; var objectToMerge = new DictionaryParameters() { { "Key2.1", "arbitrary-value-2.1" } , { "Key2.2", 22L } }; // Act var result = sut.Add(objectToMerge); // Assert Assert.AreEqual(4, result.Keys.Count); }
private ActivitiPluginConfiguration UpdateConfiguration(DictionaryParameters parameters) { Contract.Requires(parameters.IsValid()); // check for endpoint var configurationBase = SchedulerPluginConfigurationBase.Convert<SchedulerPluginConfigurationBase>(parameters); Contract.Assert(configurationBase.IsValid()); var endpoints = configurationBase.Endpoints; // ManagementUri //Type : json //Value : {"ServerUri":"http://www.example.com:9080/activiti-rest/service/"} //ManagementCredentialId : 6 //Id : 9 //Tid : ad8f50df-2a5d-4ea5-9fcc-05882f16a9fe //Name : biz.dfch.PS.Activiti.Client.Setting //Description : //CreatedById : 1 //ModifiedById : 1 //Created : 12/15/2015 11:46:45 AM +01:00 //Modified : 12/15/2015 11:46:45 AM +01:00 //RowVersion : {0, 0, 0, 0...} //ManagementCredential : //Tenant : //CreatedBy : //ModifiedBy : var configurationManager = new ActivitiPluginConfigurationManager(); // get Activiti server var managementUri = configurationManager .GetManagementUri(endpoints.Core.ManagementUris, configurationManager.GetManagementUriName()); var activitiPluginConfigurationManagementUri = BaseDto .DeserializeObject<ActivitiPluginConfigurationManagementUri>(managementUri.Value); parameters.Add("ServerBaseUri", activitiPluginConfigurationManagementUri.ServerUri); // get Activiti credentials var managementCredential = configurationManager .GetManagementCredential(endpoints.Core.ManagementCredentials, managementUri.ManagementCredentialId.Value); var networkCredential = configurationManager.GetCredential(managementCredential); parameters.Add("Credential", networkCredential); configuration = ActivitiPluginConfiguration.Convert<ActivitiPluginConfiguration>(parameters, true); Contract.Assert(configuration.IsValid()); // log in to server client = new ActivitiClient(configuration.ServerBaseUri, applicationName); client.Login(configuration.Credential); return configuration; }
public ScheduledJobsWorkerConfiguration(IConfigurationLoader loader, string[] args) { var parameters = new DictionaryParameters(); if(null != args) { for(var c = 0; c < args.Count(); c++) { var arg = args[c]; parameters.Add(string.Format("args{0}", c), arg); } } loader.Initialise(this, parameters); return; }
public void InitialiseSucceeds() { // Arrange var client = Mock.Create<ActivitiClient>(); Mock.Arrange(() => client.Login(Arg.IsAny<NetworkCredential>())) .IgnoreInstance() .Returns(true) .MustBeCalled(); var serverBaseUri = new Uri("http://www.example.com:9080/activiti-rest/service/"); var managementCredentialId = 5; var managementUriName = SchedulerAppSettings.Keys.EXTERNAL_WORKFLOW_MANAGEMENT_URI_NAME; var managementUri = new ManagementUri() { Id = 42 , Name = managementUriName , ManagementCredentialId = managementCredentialId , Value = string.Format("{{\"ServerUri\":\"{0}\"}}", serverBaseUri) }; var managementUris = new List<ManagementUri>() { managementUri }; var dataServiceQueryManagementUris = Mock.Create<DataServiceQuery<ManagementUri>>(); Mock.Arrange(() => dataServiceQueryManagementUris.Where(e => e.Name == managementUriName)) .IgnoreInstance() .Returns(managementUris.AsQueryable()) .MustBeCalled(); var encryptedPassword = "******"; var managementCredential = new ManagementCredential() { Id = managementCredentialId , Name = managementUriName , Username = Username , Password = Password , EncryptedPassword = encryptedPassword }; var managementCredentials = new List<ManagementCredential>() { managementCredential }; var dataServiceQueryManagementCredentials = Mock.Create<DataServiceQuery<ManagementCredential>>(); Mock.Arrange(() => dataServiceQueryManagementCredentials.Where(e => e.Id == managementCredentialId)) .IgnoreInstance() .Returns(managementCredentials.AsQueryable()) .MustBeCalled(); var endpoints = Mock.Create<AppclusiveEndpoints>(Constructor.Mocked); var apiCore = Mock.Create<Api.Core.Core>(Constructor.Mocked); endpoints.Core = apiCore; var parameters = new DictionaryParameters(); parameters.Add(typeof(AppclusiveEndpoints).ToString(), endpoints); Mock.SetupStatic(typeof(ConfigurationManager)); Mock.Arrange(() => ConfigurationManager.AppSettings[Arg.IsAny<string>()]) .Returns(managementUriName) .MustBeCalled(); var logger = new Logger(); var sut = new ActivitiPlugin(); // Act var result = sut.Initialise(parameters, logger, true); // Assert Mock.Assert(() => ConfigurationManager.AppSettings[Arg.IsAny<string>()]); Mock.Assert(client); Assert.IsTrue(result); Assert.IsTrue(sut.IsInitialised); Assert.IsTrue(sut.IsActive); }
public void UpdateConfigurationSucceeds() { // Arrange Mock.SetupStatic(typeof(ConfigurationManager)); Mock.Arrange(() => ConfigurationManager.AppSettings[Arg.IsAny<string>()]) .Returns(SchedulerAppSettings.Keys.EXTERNAL_WORKFLOW_MANAGEMENT_URI_NAME) .MustBeCalled(); var client = Mock.Create<ActivitiClient>(); Mock.Arrange(() => client.Login(Arg.IsAny<NetworkCredential>())) .IgnoreInstance() .Returns(true) .MustBeCalled(); var serverBaseUri = new Uri("http://www.example.com:9080/activiti-rest/service/"); var managementCredentialId = 5; var managementUriName = SchedulerAppSettings.Keys.EXTERNAL_WORKFLOW_MANAGEMENT_URI_NAME; var managementUri = new ManagementUri() { Id = 42 , Name = managementUriName , ManagementCredentialId = managementCredentialId , Value = string.Format("{{\"ServerUri\":\"{0}\"}}", serverBaseUri) }; var managementUris = new List<ManagementUri>() { managementUri }; var dataServiceQueryManagementUris = Mock.Create<DataServiceQuery<ManagementUri>>(); Mock.Arrange(() => dataServiceQueryManagementUris.Where(e => e.Name == managementUriName)) .IgnoreInstance() .Returns(managementUris.AsQueryable()) .MustBeCalled(); var encryptedPassword = "******"; var managementCredential = new ManagementCredential() { Id = managementCredentialId , Name = managementUriName , Username = Username , Password = Password , EncryptedPassword = encryptedPassword }; var managementCredentials = new List<ManagementCredential>() { managementCredential }; var dataServiceQueryManagementCredentials = Mock.Create<DataServiceQuery<ManagementCredential>>(); Mock.Arrange(() => dataServiceQueryManagementCredentials.Where(e => e.Id == managementCredentialId)) .IgnoreInstance() .Returns(managementCredentials.AsQueryable()) .MustBeCalled(); var endpoints = Mock.Create<AppclusiveEndpoints>(Constructor.Mocked); var apiCore = Mock.Create<Api.Core.Core>(Constructor.Mocked); endpoints.Core = apiCore; var parameters = new DictionaryParameters(); parameters.Add(typeof(AppclusiveEndpoints).ToString(), endpoints); var sut = new ActivitiPlugin(); Mock.NonPublic.Arrange<string>(sut, "managementUriName") .IgnoreInstance() .Returns(managementUriName); // Act sut.Configuration = parameters; // Assert Mock.Arrange(() => ConfigurationManager.AppSettings[Arg.IsAny<string>()]); Mock.Assert(client); Mock.Assert(endpoints); Mock.Assert(dataServiceQueryManagementUris); Mock.Assert(dataServiceQueryManagementCredentials); Assert.IsTrue(sut.Configuration.ContainsKey("ServerBaseUri")); var actualServerBaseUri = sut.Configuration["ServerBaseUri"] as Uri; Assert.IsNotNull(actualServerBaseUri); Assert.AreEqual(serverBaseUri, actualServerBaseUri); Assert.IsTrue(sut.Configuration.ContainsKey("Credential")); var actualCredential = sut.Configuration["Credential"] as NetworkCredential; Assert.IsNotNull(actualCredential); Assert.AreEqual(Username, actualCredential.UserName); Assert.AreEqual(Password, actualCredential.Password); }
public void LogSucceeds() { // Arrange var client = Mock.Create<ActivitiClient>(); Mock.Arrange(() => client.Login(Arg.IsAny<NetworkCredential>())) .IgnoreInstance() .Returns(true) .MustBeCalled(); var managementUriName = SchedulerAppSettings.Keys.EXTERNAL_WORKFLOW_MANAGEMENT_URI_NAME; var serverBaseUri = new Uri("http://www.example.com:9080/activiti-rest/service/"); var managementCredentialId = 5; var managementUri = new ManagementUri() { Id = 42 , Name = managementUriName , ManagementCredentialId = managementCredentialId , Value = string.Format("{{\"ServerUri\":\"{0}\"}}", serverBaseUri) }; var encryptedPassword = "******"; var managementCredential = new ManagementCredential() { Id = managementCredentialId , Name = managementUriName , Username = Username , Password = Password , EncryptedPassword = encryptedPassword }; var activitiPluginConfigurationManager = Mock.Create<ActivitiPluginConfigurationManager>(); Mock.Arrange(() => activitiPluginConfigurationManager.GetManagementUriName()) .IgnoreInstance() .Returns(managementUriName) .MustBeCalled(); Mock.Arrange(() => activitiPluginConfigurationManager.GetManagementUri(Arg.IsAny<DataServiceQuery<ManagementUri>>(), Arg.IsAny<string>())) .IgnoreInstance() .Returns(managementUri) .MustBeCalled(); Mock.Arrange(() => activitiPluginConfigurationManager.GetManagementCredential(Arg.IsAny<DataServiceQuery<ManagementCredential>>(), Arg.IsAny<long>())) .IgnoreInstance() .Returns(managementCredential) .MustBeCalled(); var endpoints = Mock.Create<AppclusiveEndpoints>(Constructor.Mocked); var apiCore = Mock.Create<Api.Core.Core>(Constructor.Mocked); endpoints.Core = apiCore; var parameters = new DictionaryParameters(); parameters.Add(typeof(AppclusiveEndpoints).ToString(), endpoints); var message = "arbitrary-message"; var logger = new Logger(); var sut = new ActivitiPlugin(); sut.Initialise(parameters, logger, true); // Act sut.Logger.WriteLine(message); // Assert Mock.Assert(client); Mock.Assert(activitiPluginConfigurationManager); }
public void InvokeWithInvalidTypeCredentialThrowsContractException() { // Arrange var parameters = new DictionaryParameters(); parameters.Add("CommandLine", "arbitrary-string"); parameters.Add("WorkingDirectory", "arbitrary-string"); parameters.Add("Credential", new object()); var jobResult = new JobResult(); // Act var sut = new ProgrammePlugin(); var result = sut.Invoke(parameters, jobResult); // Assert // N/A }
public void InvokeSucceeds() { // Arrange var commandLine = "arbitrary-string"; var workingDirectory = "arbitrary-string"; var credential = new NetworkCredential("arbitrary-user", "arbitrary-password", "arbitrary-domain"); var parameters = new DictionaryParameters(); parameters.Add("JobId", 42); parameters.Add("CommandLine", commandLine); parameters.Add("WorkingDirectory", workingDirectory); parameters.Add("Credential", credential); var jobResult = new JobResult(); Mock.SetupStatic(typeof(biz.dfch.CS.Utilities.Process)); Mock.Arrange( () => biz.dfch.CS.Utilities.Process.StartProcess( Arg.Is<string>(commandLine), Arg.Is<string>(workingDirectory), Arg.Is<NetworkCredential>(credential)) ) .Returns(default(Dictionary<string, string>)) .OccursOnce(); // Act var sut = new ProgrammePlugin(); sut.Initialise(new DictionaryParameters(), new Logger(), true); var result = sut.Invoke(parameters, jobResult); // Assert Mock.Assert( () => biz.dfch.CS.Utilities.Process.StartProcess( Arg.Is<string>(commandLine), Arg.Is<string>(workingDirectory), Arg.Is<NetworkCredential>(credential)) ); Assert.IsTrue(result); Assert.IsTrue(jobResult.Succeeded); Assert.AreEqual(0, jobResult.Code); }
public void InvokeFails() { // Arrange var commandLine = "arbitrary-string"; var workingDirectory = "arbitrary-string"; var credential = new NetworkCredential("arbitrary-user", "arbitrary-password", "arbitrary-domain"); var parameters = new DictionaryParameters(); parameters.Add("JobId", 42); parameters.Add("CommandLine", commandLine); parameters.Add("WorkingDirectory", workingDirectory); parameters.Add("Credential", credential); var jobResult = new JobResult(); Mock.SetupStatic(typeof(biz.dfch.CS.Utilities.Process)); Mock.Arrange( () => biz.dfch.CS.Utilities.Process.StartProcess( Arg.Is<string>(commandLine), Arg.Is<string>(workingDirectory), Arg.Is<NetworkCredential>(credential)) ) .Throws<InvalidOperationException>() .OccursOnce(); // Act var sut = new ProgrammePlugin(); sut.Initialise(new DictionaryParameters(), new Logger(), true); var result = sut.Invoke(parameters, jobResult); // Assert Mock.Assert( () => biz.dfch.CS.Utilities.Process.StartProcess( Arg.Is<string>(commandLine), Arg.Is<string>(workingDirectory), Arg.Is<NetworkCredential>(credential)) ); Assert.IsFalse(result); Assert.IsFalse(jobResult.Succeeded); Assert.AreNotEqual(0, jobResult.Code); Assert.IsFalse(string.IsNullOrWhiteSpace(jobResult.Message)); Assert.IsFalse(string.IsNullOrWhiteSpace(jobResult.Description)); }