public ISimpleStorageService GetSimpleStorageService()
 {
     if (simpleStorageService == null)
     {
         simpleStorageService = new SimpleStorageService(
             Environment.GetEnvironmentVariable(ConfigurationConstants.AwsKeyId),
             Environment.GetEnvironmentVariable(ConfigurationConstants.AwsSecretKey),
             Environment.GetEnvironmentVariable(ConfigurationConstants.BucketKey));
     }
     return(simpleStorageService);
 }
        public void PutObject_SerializesData_True()
        {
            // Arrange
            var s3Mock  = new Mock <IAmazonS3>();
            var service = new SimpleStorageService(string.Empty, string.Empty, string.Empty);

            var stream     = new MemoryStream();
            var serializer = new LambdaRestSerializer();

            string serializedContentFromService = null;
            string serializedContentFromTest    = null;
            var    mockRequests = new List <AlexaRequest>()
            {
                new AlexaRequest()
                {
                    UID            = "1",
                    MainText       = "Hello there",
                    TitleText      = "Test 1",
                    UpdateDate     = DateTime.Now,
                    RedirectionUrl = "http://www.google.com"
                },
                new AlexaRequest()
                {
                    UID            = "2",
                    MainText       = "Bye",
                    TitleText      = "Test 2",
                    UpdateDate     = DateTime.Now.AddHours(-1),
                    RedirectionUrl = "http://www.amazon.com"
                }
            };

            serializer.Serialize <List <AlexaRequest> >(mockRequests, stream);
            stream.Position           = 0;
            serializedContentFromTest = new StreamReader(stream).ReadToEnd();

            // Act
            s3Mock
            .Setup(x => x.PutObjectAsync(It.IsAny <PutObjectRequest>(), It.IsAny <CancellationToken>()))
            .Callback((PutObjectRequest request, CancellationToken token) =>
            {
                serializedContentFromService = request.ContentBody;
            })
            .Returns(Task.FromResult(new PutObjectResponse()
            {
                HttpStatusCode = HttpStatusCode.OK
            }));

            service.Client = s3Mock.Object;

            service.PutObject <List <AlexaRequest> >(mockRequests, It.IsAny <string>());

            // Assert
            Assert.Equal(serializedContentFromTest, serializedContentFromService);
        }
        public static IDisposable StartService(int servicePort)
        {
            var container     = IoCFactory.NewContainer();
            var topology      = new Topology(new int[0]);
            var configuration = new Configuration(topology)
            {
                CurrentNodePort  = servicePort,
                OtherShardsPorts = new int[0]
            };

            container.Configure(c => c.For <IConfiguration>().Use(configuration));
            return(SimpleStorageService.Start(string.Format("http://+:{0}/", servicePort), container));
        }
        public void PutObject_WithError_ThrowsError()
        {
            // Arrange
            var s3Mock  = new Mock <IAmazonS3>();
            var service = new SimpleStorageService(string.Empty, string.Empty, string.Empty);

            // Act
            s3Mock.Setup(x => x.PutObjectAsync(It.IsAny <PutObjectRequest>(), It.IsAny <CancellationToken>())).Throws(new Exception());

            service.Client = s3Mock.Object;

            // Assert
            Assert.Throws <Exception>(() => service.PutObject <string>(It.IsAny <string>(), It.IsAny <string>()));
        }
        public void PutObject_WithOk_True()
        {
            // Arrange
            var s3Mock  = new Mock <IAmazonS3>();
            var service = new SimpleStorageService(string.Empty, string.Empty, string.Empty);

            // Act
            s3Mock.Setup(x => x.PutObjectAsync(It.IsAny <PutObjectRequest>(), It.IsAny <CancellationToken>())).Returns(Task.FromResult(new PutObjectResponse()
            {
                HttpStatusCode = HttpStatusCode.OK
            }));

            service.Client = s3Mock.Object;

            // Assert
            Assert.True(service.PutObject <string>(It.IsAny <string>(), It.IsAny <string>()));
        }
        private ContractDeployment GetContractDeployment <T>() where T : ContractDeploymentMessage, new()
        {
            T contract = new T();
            ContractDeployment      deployment = null;
            WatchContractDeployment watchContractDeployment = null;
            SimpleStorageDeployment simpleStorageDeployment = null;

            if (contract is WatchContractDeployment)
            {
                watchContractDeployment = contract as WatchContractDeployment;
            }
            else if (contract is SimpleStorageDeployment)
            {
                simpleStorageDeployment = contract as SimpleStorageDeployment;
            }
            try {
                deployment = this.context.ContractDeployments.Where(s => s.ByteCode == contract.ByteCode && s.ServerUrl == this.url).First();
            } catch (InvalidOperationException ex) {
                logger.LogError($"contract does not currently exist: {ex}");
            }
            if (deployment == null)
            {
                deployment = new ContractDeployment();
                if (watchContractDeployment != null)
                {
                    watchContractDeployment.GasPrice = 0;
                    TransactionReceipt receipt = WatchContractService.DeployContractAndWaitForReceiptAsync(web3, watchContractDeployment).GetAwaiter().GetResult();
                    deployment.DeploymentAddress = receipt.ContractAddress;
                    deployment.ByteCode          = watchContractDeployment.ByteCode;
                }
                else if (simpleStorageDeployment != null)
                {
                    simpleStorageDeployment.GasPrice = 0;
                    TransactionReceipt receipt = SimpleStorageService.DeployContractAndWaitForReceiptAsync(web3, simpleStorageDeployment).GetAwaiter().GetResult();
                    deployment.DeploymentAddress = receipt.ContractAddress;
                    deployment.ByteCode          = simpleStorageDeployment.ByteCode;
                }
                deployment.ServerUrl = this.url;
                this.context.Add(deployment);
                this.context.SaveChanges();
            }
            return(deployment);
        }
        private void setupSimpleStorageContractCall()
        {
            ContractDeployment deployment = GetContractDeployment <SimpleStorageDeployment>();

            simpleStorageService = new SimpleStorageService(web3, deployment.DeploymentAddress);
        }