public void LoginFailsWithBaseMock()
        {
            // Arrange
            environment.Credential = new NetworkCredential("invalid-user", "invalid-password");

            var processEngine = Mock.Create<ProcessEngine>();
            Mock.Arrange(() => processEngine.Login(Arg.IsAny<NetworkCredential>()))
                .IgnoreInstance()
                .DoNothing()
                .MustBeCalled();
            Mock.Arrange(() => processEngine.IsLoggedIn())
                .IgnoreInstance()
                .Returns(false)
                .MustBeCalled();

            var sut = new ActivitiClient(environment.ServerBaseUri, environment.ApplicationName);

            // Act
            var result = sut.Login(environment.Credential.UserName, environment.Credential.Password);

            // Assert
            Mock.Assert(processEngine);
            Assert.IsFalse(result);
        }
        public void LoginSucceeds()
        {
            // Arrange
            var sut = new ActivitiClient(environment.ServerBaseUri, environment.ApplicationName);

            // Act
            var result = sut.Login(environment.Credential);

            // Assert
            Assert.IsTrue(result);
        }
        public void GetDefinitionIdByDefinitionKeySucceeds()
        {
            // Arrange
            var definitionKey = "com.swisscom.cms.agentbasedbackup.backupjob.v002.CheckBackupStatus";
            var sut = new ActivitiClient(environment.ServerBaseUri, environment.ApplicationName);
            sut.Login(environment.Credential);

            // Act
            var result = sut.GetDefinitionId(definitionKey);

            // Assert
            Assert.IsNotNull(result);
        }
        public void GetDefinitionIdByDefinitionKeyWithBaseMockSucceeds()
        {
            // Arrange
            var processEngine = Mock.Create<ProcessEngine>();
            Mock.Arrange(() => processEngine.Login(Arg.IsAny<NetworkCredential>()))
                .IgnoreInstance()
                .DoNothing()
                .MustBeCalled();
            Mock.Arrange(() => processEngine.IsLoggedIn())
                .IgnoreInstance()
                .Returns(true)
                .MustBeCalled();
            var workflowDefinitionId = "arbitrary-id";
            var data = new List<ProcessDefinitionResponseData>()
            {
                new ProcessDefinitionResponseData()
                {
                    id = workflowDefinitionId
                }
            };
            var processDefinitionsResponse = new ProcessDefinitionsResponse()
            {
                data = data
            };
            Mock.Arrange(() => processEngine.GetWorkflowDefinitionByKey(Arg.IsAny<string>(), Arg.IsAny<bool>()))
                .IgnoreInstance()
                .Returns(processDefinitionsResponse)
                .MustBeCalled();

            var definitionKey = "com.swisscom.cms.agentbasedbackup.backupjob.v002.CheckBackupStatus";
            var sut = new ActivitiClient(environment.ServerBaseUri, environment.ApplicationName);
            sut.Login(environment.Credential);

            // Act
            var result = sut.GetDefinitionId(definitionKey);

            // Assert
            Mock.Assert(processEngine);

            Assert.AreEqual(workflowDefinitionId, result);
        }
        public void InvokeWorkflowSucceeds()
        {
            // Arrange
            //var definitionKey = "arbitrary-process-definition-id";
            var definitionKey = "com.swisscom.cms.agentbasedbackup.backupjob.v002.CheckBackupStatus";
            var parameters = new DictionaryParameters()
            {
                { "nodeId", 12345 }
            };
            var sut = new ActivitiClient(environment.ServerBaseUri, environment.ApplicationName);
            sut.Login(environment.Credential);
            var definitionId = sut.GetDefinitionId(definitionKey);

            // Act
            var result = sut.InvokeWorkflowInstance(definitionId, new System.Collections.Hashtable(parameters));

            // Assert
            Assert.IsNotNull(result);
            Assert.IsNotNull(result.id);
            Assert.IsNotNull(result.processDefinitionId);
            Assert.IsNotNull(result.ended);
            Assert.IsNotNull(result.completed);
            Assert.IsNotNull(result.suspended);
        }