public async Task <IActionResult> SendNewMessage([FromBody] NewEncryptedPacketModel newMessage) { if (userRepository.GetById(newMessage.ReceiverId) == null) { ModelState.AddModelError("error", "Receiver does not exist"); return(BadRequest(ModelState)); } // convert model to EncryptedPacket EncryptedPacket encryptedPacket = new EncryptedPacket { DataType = newMessage.DataType, EncryptedData = newMessage.EncryptedData, EncryptedSessionKey = newMessage.EncryptedSessionKey, Hmac = newMessage.Hmac, Iv = newMessage.Iv, ReceiverId = newMessage.ReceiverId, Signature = newMessage.Signature, SenderId = (await GetUserAsync().ConfigureAwait(false)).Id, SendDateTime = DateTime.Now, IsMeantForReceiver = newMessage.MeantForReceiver }; // try to add to database try { encryptedPacketRepository.Add(encryptedPacket); return(Ok()); } catch (ArgumentException e) { return(BadRequest(e.Message)); } }
public async Task SendNewMessage_Should_Return_Ok() { NewEncryptedPacketModel encryptedPacket = ValidEncryptedPacket; HttpResponseMessage result = await Client.PostAsync(NewMessagePath, Stringify(encryptedPacket)); Assert.That(result.StatusCode, Is.EqualTo(HttpStatusCode.OK)); }
public async Task SendNewMessage_Should_Return_Bad_Request_If_EncryptedSessionKey_Is_Empty() { NewEncryptedPacketModel encryptedPacket = ValidEncryptedPacket; encryptedPacket.EncryptedSessionKey = null; HttpResponseMessage result = await Client.PostAsync(NewMessagePath, Stringify(encryptedPacket)); Assert.That(result.StatusCode, Is.EqualTo(HttpStatusCode.BadRequest)); }
public async Task SendNewMessage_Should_Return_Bad_Request_If_Receiver_Does_Not_exist() { NewEncryptedPacketModel encryptedPacket = ValidEncryptedPacket; encryptedPacket.ReceiverId = -5; HttpResponseMessage result = await Client.PostAsync(NewMessagePath, Stringify(encryptedPacket)); Assert.That(result.StatusCode, Is.EqualTo(HttpStatusCode.BadRequest)); }
public async Task GetMessagesAsSender_Should_Return_List_Of_StrippedDownEncryptedPackets() { NewEncryptedPacketModel packet = ValidEncryptedPacket; packet.MeantForReceiver = false; HttpResponseMessage response = await Client.GetAsync(AsSenderPath); string responseString = await response.Content.ReadAsStringAsync(); //response = list van strippeddown of null Assert.That(() => JsonConvert.DeserializeObject <List <StrippedDownEncryptedPacket> >(responseString), Throws.Nothing); }
public async Task GetMessagesAsSender_Should_Return_List_Of_StrippedDownEncryptedPackets_With_2_Values() { // add two encrypted messages NewEncryptedPacketModel packet = ValidEncryptedPacket; packet.MeantForReceiver = false; await Client.PostAsync(NewMessagePath, Stringify(packet)); await Client.PostAsync(NewMessagePath, Stringify(packet)); HttpResponseMessage response = await Client.GetAsync(AsSenderPath); string responseString = await response.Content.ReadAsStringAsync(); var list = JsonConvert.DeserializeObject <List <StrippedDownEncryptedPacket> >(responseString); Assert.That(list.Count, Is.EqualTo(2)); }