public void Not_supported_private_key_creation() { //ARRANGE var client = PrepareClient <AppSettings>((options) => { var addressGenerator = new Mock <IAddressGenerator>(); var transactionSigner = new Mock <ITransactionSigner>(); addressGenerator.Setup(x => x.CreateAddressAsync()) .ThrowsAsync(new OperationNotSupportedException("Address creation is not supported")); options.IntegrationName = $"{nameof(SignServiceClientTests)}+{nameof(Can_create_private_key)}"; options.AddressGeneratorFactory = (context) => addressGenerator.Object; options.TransactionSignerFactory = (context) => transactionSigner.Object; }); //ACT && ASSERT var base64EncryptionKey = MyPublicKey; var request = new CreateAddressRequest(base64EncryptionKey); Assert.ThrowsAsync <NotImplementedWebApiException>(async() => { CreateAddressResponse result = await client.CreateAddressAsync(request); result?.PrivateKey?.DecryptToString(MyPrivateKey); }); }
/// <summary> /// Unmarshaller the response from the service to the response class. /// </summary> /// <param name="context"></param> /// <returns></returns> public override AmazonWebServiceResponse Unmarshall(JsonUnmarshallerContext context) { CreateAddressResponse response = new CreateAddressResponse(); context.Read(); int targetDepth = context.CurrentDepth; while (context.ReadAtDepth(targetDepth)) { if (context.TestExpression("AddressId", targetDepth)) { var unmarshaller = StringUnmarshaller.Instance; response.AddressId = unmarshaller.Unmarshall(context); continue; } } return(response); }
public async Task <ActionResult <CreateAddressResponse> > CreateAddress(CreateAddressRequest request) { var creationResult = await _addressGenerator.CreateAddressAsync(); if (creationResult == null) { throw new InvalidOperationException("Not null creation result object expected"); } var encryptedPrivateKey = creationResult.PrivateKey.Encrypt(request.EncryptionPublicKey); var response = new CreateAddressResponse ( encryptedPrivateKey, creationResult.Address, creationResult.AddressContext ); return(Ok(response)); }
public CreateAddressResponse SaveAddress(CreateAddressRequest addressRequest) { var createAddressResponse = new CreateAddressResponse(); var address = _messageMapper.MapToAddress(addressRequest.Address); try { _addressRepository.SaveAddress(address); var addressDto = _messageMapper.MapToAddressDto(address); createAddressResponse.Address = addressDto; createAddressResponse.Messages.Add("Successfully saved the address"); createAddressResponse.StatusCode = HttpStatusCode.Created; } catch (Exception e) { var error = e.ToString(); createAddressResponse.Messages.Add(error); createAddressResponse.StatusCode = HttpStatusCode.InternalServerError; } return(createAddressResponse); }
public async Task Can_create_private_key() { //ARRANGE var address = Guid.NewGuid().ToString(); var privateKey = Guid.NewGuid().ToString(); var addressContext = "AddressContext"; var client = PrepareClient <AppSettings>((options) => { Mock <IAddressGenerator> addressGenerator = new Mock <IAddressGenerator>(); Mock <ITransactionSigner> transactionSigner = new Mock <ITransactionSigner>(); addressGenerator.Setup(x => x.CreateAddressAsync()) .ReturnsAsync(new AddressCreationResult( address, privateKey, Base64String.Encode(addressContext))); options.IntegrationName = $"{nameof(SignServiceClientTests)}+{nameof(Can_create_private_key)}"; options.AddressGeneratorFactory = (context) => addressGenerator.Object; options.TransactionSignerFactory = (context) => transactionSigner.Object; }); //ACT var base64EncryptionKey = MyPublicKey; var request = new CreateAddressRequest(base64EncryptionKey); CreateAddressResponse result = await client.CreateAddressAsync(request); var decryptedPk = result?.PrivateKey?.DecryptToString(MyPrivateKey); //ASSERT Assert.True(result != null); Assert.True(!string.IsNullOrEmpty(result.Address.Value)); Assert.True(result.Address.Value == address); Assert.True(decryptedPk == privateKey); Assert.True(result.AddressContext?.DecodeToString() == addressContext); }