public void Constructor_AllParametersAreSet_ObjectIsInstantiated()
        {
            // Arrange
            var serviceConfiguration = new Mock <IRESTServiceConfiguration>();

            serviceConfiguration.Setup(s => s.IsValid()).Returns(true);

            var systemInformationSenderConfigurationProvider =
                new Mock <IRESTBasedSystemInformationSenderConfigurationProvider>();

            systemInformationSenderConfigurationProvider.Setup(s => s.GetConfiguration()).Returns(serviceConfiguration.Object);

            var client            = new Mock <IRestClient>();
            var restClientFactory = new Mock <IRESTClientFactory>();

            restClientFactory.Setup(r => r.GetRESTClient(It.IsAny <string>())).Returns(client.Object);

            var requestFactory = new Mock <IRESTRequestFactory>();

            // Act
            var systemInformationSender = new RESTBasedSystemInformationSender(
                systemInformationSenderConfigurationProvider.Object, restClientFactory.Object, requestFactory.Object);

            // Assert
            Assert.IsNotNull(systemInformationSender);
        }
        public void Send_RequestCannotBeCreated_FatalSystemInformationSenderExceptionIsThrown()
        {
            // Arrange
            var systemInformation = new SystemInformation();

            var configuration = new Mock <IRESTServiceConfiguration>();

            configuration.Setup(c => c.Hostaddress).Returns("127.0.0.1");
            configuration.Setup(c => c.Hostname).Returns("localhost");
            configuration.Setup(c => c.ResourcePath).Returns("api/systeminformation");
            configuration.Setup(c => c.IsValid()).Returns(true);

            var systemInformationSenderConfigurationProvider =
                new Mock <IRESTBasedSystemInformationSenderConfigurationProvider>();

            systemInformationSenderConfigurationProvider.Setup(s => s.GetConfiguration()).Returns(configuration.Object);

            var client            = new Mock <IRestClient>();
            var restClientFactory = new Mock <IRESTClientFactory>();

            restClientFactory.Setup(r => r.GetRESTClient(It.IsAny <string>())).Returns(client.Object);

            IRestRequest request        = null;
            var          requestFactory = new Mock <IRESTRequestFactory>();

            requestFactory.Setup(r => r.CreatePutRequest(It.IsAny <string>(), It.IsAny <string>())).Returns(request);

            var systemInformationSender = new RESTBasedSystemInformationSender(
                systemInformationSenderConfigurationProvider.Object, restClientFactory.Object, requestFactory.Object);

            // Act
            systemInformationSender.Send(systemInformation);
        }
        public void Send_ServiceConfigurationProviderReturnsNull_SystemInformationSenderSetupExceptionIsThrown()
        {
            // Arrange
            var systemInformation = new SystemInformation();
            IRESTServiceConfiguration serviceConfiguration = null;

            var systemInformationSenderConfigurationProvider =
                new Mock <IRESTBasedSystemInformationSenderConfigurationProvider>();

            systemInformationSenderConfigurationProvider.Setup(s => s.GetConfiguration()).Returns(serviceConfiguration);

            var restClientFactory = new Mock <IRESTClientFactory>();
            var requestFactory    = new Mock <IRESTRequestFactory>();

            var systemInformationSender = new RESTBasedSystemInformationSender(systemInformationSenderConfigurationProvider.Object, restClientFactory.Object, requestFactory.Object);

            // Act
            systemInformationSender.Send(systemInformation);
        }
        public void Send_ResponseContainsException_SendSystemInformationFailedExceptionIsThrown()
        {
            // Arrange
            var systemInformation = new SystemInformation();

            var configuration = new Mock <IRESTServiceConfiguration>();

            configuration.Setup(c => c.Hostaddress).Returns("127.0.0.1");
            configuration.Setup(c => c.Hostname).Returns("localhost");
            configuration.Setup(c => c.ResourcePath).Returns("api/systeminformation");
            configuration.Setup(c => c.IsValid()).Returns(true);

            var systemInformationSenderConfigurationProvider =
                new Mock <IRESTBasedSystemInformationSenderConfigurationProvider>();

            systemInformationSenderConfigurationProvider.Setup(s => s.GetConfiguration()).Returns(configuration.Object);

            var response = new Mock <IRestResponse <SystemInformation> >();

            response.Setup(r => r.ErrorException).Returns(new Exception("Some exception"));

            var client = new Mock <IRestClient>();

            client.Setup(c => c.Execute <SystemInformation>(It.IsAny <IRestRequest>())).Returns(response.Object);
            var restClientFactory = new Mock <IRESTClientFactory>();

            restClientFactory.Setup(r => r.GetRESTClient(It.IsAny <string>())).Returns(client.Object);

            var request        = new Mock <IRestRequest>();
            var requestFactory = new Mock <IRESTRequestFactory>();

            requestFactory.Setup(r => r.CreatePutRequest(It.IsAny <string>(), It.IsAny <string>())).Returns(request.Object);

            var systemInformationSender = new RESTBasedSystemInformationSender(
                systemInformationSenderConfigurationProvider.Object, restClientFactory.Object, requestFactory.Object);

            // Act
            systemInformationSender.Send(systemInformation);
        }