コード例 #1
0
        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));
            }
        }
コード例 #2
0
        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));
        }
コード例 #3
0
        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));
        }
コード例 #4
0
        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));
        }
コード例 #5
0
        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);
        }
コード例 #6
0
        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));
        }