public async Task DeleteFriendshipByUserId_ShouldDeleteFriendship_OnExistingUserId()
        {
            var client = CreateClient();

            var alice = new User("1", "alice", "*****@*****.**");
            var bob   = new User("2", "bob", "*****@*****.**");

            await CreateTestUserAsync(alice);
            await CreateTestUserAsync(bob);
            await CreateTestFriendshipAsync(alice.Id, bob.Id);

            var query = new
            {
                friendId = bob.Id
            };

            var uri = UriHelpers.BuildUri(Delete.DeleteByUserId(alice.Id), new { query = JsonConvert.SerializeObject(query) });
            await client.DeleteAsync(uri);

            var response = await client.GetAsync(uri);

            var responseStr = await response.Content.ReadAsStringAsync();

            var responseArr = JsonConvert.DeserializeObject <ArrayResponse <FriendshipDto> >(responseStr);

            Assert.True(!responseArr.Items.Any());
        }
        public async Task DeleteFriendshipByUserId_ShouldDispatchNotificationEvent_OnExistingUserId()
        {
            var client = CreateClient();

            var alice = new User("1", "alice", "*****@*****.**");
            var bob   = new User("2", "bob", "*****@*****.**");

            await CreateTestUserAsync(alice);
            await CreateTestUserAsync(bob);
            await CreateTestFriendshipAsync(alice.Id, bob.Id);

            string eventName    = null;
            string eventMessage = null;

            TestEventBusFixture.EventBus.Subscribe(nameof(NotifyUsersIntegrationEvent), (e, m) =>
            {
                eventName    = e;
                eventMessage = m;
            });
            await Task.Delay(1000);

            var uri = UriHelpers.BuildUri(Delete.DeleteByUserId(alice.Id), new { friendId = bob.Id });
            await client.DeleteAsync(uri);

            await Task.Delay(1000);

            var message = JsonConvert.DeserializeObject <NotifyUsersIntegrationEvent>(eventMessage);

            Assert.Equal(nameof(NotifyUsersIntegrationEvent), eventName);
            Assert.Equal("FriendshipDeleted", message.ClientMethod);
            Assert.True(message.UserIds.Contains(alice.Id) && message.UserIds.Contains(bob.Id));

            await Task.Delay(1000);
        }
        public async Task GetFriendshipsByUserId_ShouldReturnFriendships_OnExistingUserId()
        {
            var client = CreateClient();

            var alice = new User("1", "alice", "*****@*****.**");
            var bob   = new User("2", "bob", "*****@*****.**");
            var sam   = new User("3", "sam", "*****@*****.**");

            await CreateTestUserAsync(alice);
            await CreateTestUserAsync(bob);
            await CreateTestUserAsync(sam);
            await CreateTestFriendshipAsync(alice.Id, bob.Id);
            await CreateTestFriendshipAsync(bob.Id, sam.Id);
            await CreateTestFriendshipAsync(sam.Id, alice.Id);

            var query = new
            {
                pagination = new
                {
                    limit  = 10,
                    offset = 0
                }
            };

            var uri      = UriHelpers.BuildUri(Get.FriendshipsByUserId(alice.Id), new { query = JsonConvert.SerializeObject(query) });
            var response = await client.GetAsync(uri);

            var responseStr = await response.Content.ReadAsStringAsync();

            var responseArr = JsonConvert.DeserializeObject <ArrayResponse <FriendshipDto> >(responseStr);

            Assert.True(response.StatusCode == HttpStatusCode.OK);
            Assert.True(responseArr.Items.Count() == 2);
            Assert.True(responseArr.Total == 2);
        }
        public async Task GetFriendshipRequestsByRequesteeAndRequesterIds_ShouldReturnEmptyList_OnNonexistingRequester()
        {
            var client = CreateClient();

            var alice = new User("1", "alice", "*****@*****.**");
            var bob   = new User("2", "bob", "*****@*****.**");

            await CreateTestUserAsync(alice);
            await CreateTestUserAsync(bob);

            var friendshipRequestId = await CreateTestFriendshipRequestAsync(alice.Id, bob.Id);

            var query = new
            {
                criteria   = new { requester = "gibberish" },
                pagination = new
                {
                    limit  = 10,
                    offset = 0
                }
            };

            var uri      = UriHelpers.BuildUri(Get.FriendshipRequestsByRequesteeId(alice.Id), new { query = JsonConvert.SerializeObject(query) });
            var response = await client.GetAsync(uri);

            var responseStr = await response.Content.ReadAsStringAsync();

            var responseArr = JsonConvert.DeserializeObject <ArrayResponse <FriendshipRequestDto> >(responseStr);

            Assert.True(response.StatusCode == HttpStatusCode.OK);
            Assert.True(!responseArr.Items.Any());
            Assert.True(responseArr.Total == 0);
        }
        public async Task GetFriendshipRequests_ShouldReturnEmptyList_OnNoMatchingCriteria()
        {
            var client = CreateClient();

            var query = new
            {
                criteria   = new { id = "gibberish" },
                pagination = new
                {
                    limit  = 10,
                    offset = 0
                }
            };

            var uri      = UriHelpers.BuildUri(Get.FriendshipRequests(), new { query = JsonConvert.SerializeObject(query) });
            var response = await client.GetAsync(uri);

            var responseStr = await response.Content.ReadAsStringAsync();

            var responseArr = JsonConvert.DeserializeObject <ArrayResponse <FriendshipRequestDto> >(responseStr);

            Assert.True(response.StatusCode == HttpStatusCode.OK);
            Assert.True(!responseArr.Items.Any());
            Assert.True(responseArr.Total == 0);
        }
        public (string, string) GeneratePasswordResetEmail(string userName, string token, string completionUrl)
        {
            var url = UriHelpers.BuildUri(completionUrl, new NameValueCollection()
            {
                { "UserName", userName },
                { "Token", token }
            }).ToString();

            return("Your password reset request",
                   $@"Click <a href=""{url}"">here</a> to reset your password.");
        }
        public (string, string) GenerateEmailConfirmationEmail(string userName, string token)
        {
            var emailConfirmationUrl = _configuration["EmailConfirmationUrl"];
            var url = UriHelpers.BuildUri(emailConfirmationUrl, new NameValueCollection()
            {
                { "UserName", userName },
                { "Token", token }
            }).ToString();

            return("Please confirm your email",
                   $@"Thank you for registering with SecureChat. Please click <a href=""{url}"">here</a> to confirm your email address.");
        }
        public string GenerateUrl(string baseUrl)
        {
            var urlHelper   = _urlHelperFactory.GetUrlHelper(_actionContextAccessor.ActionContext);
            var httpContext = _httpContextAccessor.HttpContext;

            var returnUrl = httpContext.Request.Query["returnUrl"];
            var loginUrl  = urlHelper.Link(nameof(AccountController.Login), new { returnUrl = returnUrl });

            return(UriHelpers.BuildUri(baseUrl, new NameValueCollection()
            {
                { "loginUrl", loginUrl }
            })
                   .ToString());
        }
        public async Task DeleteFriendshipByUserId_ShouldReturnNotFound_OnNonexistingUserId()
        {
            var client = CreateClient();

            var alice = new User("1", "alice", "*****@*****.**");
            var bob   = new User("2", "bob", "*****@*****.**");

            await CreateTestUserAsync(alice);
            await CreateTestUserAsync(bob);
            await CreateTestFriendshipAsync(alice.Id, bob.Id);

            var uri      = UriHelpers.BuildUri(Delete.DeleteByUserId(alice.Id), new { friendId = "gibberish" });
            var response = await client.DeleteAsync(uri);

            Assert.True(response.StatusCode == HttpStatusCode.NotFound);
        }
        public async Task DeleteFriendshipByUserId_ShouldReturnNoContent_OnExistingUserId()
        {
            var client = CreateClient();

            var alice = new User("1", "alice", "*****@*****.**");
            var bob   = new User("2", "bob", "*****@*****.**");

            await CreateTestUserAsync(alice);
            await CreateTestUserAsync(bob);
            await CreateTestFriendshipAsync(alice.Id, bob.Id);

            var query = new
            {
                friendId = bob.Id
            };

            var uri      = UriHelpers.BuildUri(Delete.DeleteByUserId(alice.Id), new { query = JsonConvert.SerializeObject(query) });
            var response = await client.DeleteAsync(uri);

            Assert.True(response.StatusCode == HttpStatusCode.NoContent);
        }
        public async Task GetFriendshipRequests_ShouldReturnListOfFriendshipRequests_OnMatchingCriteria()
        {
            var client = CreateClient();

            var alice = new User("1", "alice", "*****@*****.**");
            var bob   = new User("2", "bob", "*****@*****.**");

            await CreateTestUserAsync(alice);
            await CreateTestUserAsync(bob);

            var friendshipRequestId = await CreateTestFriendshipRequestAsync(alice.Id, bob.Id);

            var query = new
            {
                criteria   = new { id = friendshipRequestId },
                pagination = new
                {
                    limit  = 10,
                    offset = 0
                }
            };

            var uri      = UriHelpers.BuildUri(Get.FriendshipRequests(), new { query = JsonConvert.SerializeObject(query) });
            var response = await client.GetAsync(uri);

            var responseStr = await response.Content.ReadAsStringAsync();

            var responseArr = JsonConvert.DeserializeObject <ArrayResponse <FriendshipRequestDto> >(responseStr);

            Assert.True(response.StatusCode == HttpStatusCode.OK);
            Assert.True(responseArr.Items.Count() == 1);
            var friendshipRequest = responseArr.Items.First();

            Assert.True(friendshipRequest.Id == friendshipRequestId);
            Assert.True(friendshipRequest.Requester.Id == alice.Id);
            Assert.True(friendshipRequest.Requestee.Id == bob.Id);
            Assert.True(responseArr.Total == 1);
        }
Esempio n. 12
0
        public async Task GetUsers_ShouldReturnListOfUsers_OnMatchingCriteria()
        {
            var client = CreateClient();
            var users  = new[]
            {
                new User("1", "Foo", "*****@*****.**"),
                new User("2", "Bar", "*****@*****.**"),
                new User("3", "Baz", "*****@*****.**")
            };

            foreach (var user in users)
            {
                await CreateTestUserAsync(user);
            }

            var query = new
            {
                criteria   = new { id = 1 },
                pagination = new
                {
                    limit  = 10,
                    offset = 0
                }
            };

            var uri      = UriHelpers.BuildUri(Get.Users(), new { query = JsonConvert.SerializeObject(query) });
            var response = await client.GetAsync(uri);

            var responseStr = await response.Content.ReadAsStringAsync();

            var responseObj = JsonConvert.DeserializeObject <ArrayResponse <UserDto> >(responseStr);

            Assert.True(response.StatusCode == HttpStatusCode.OK);
            Assert.True(responseObj.Items.Count() == 1);
            Assert.Contains(users.First().Id, responseObj.Items.Select(u => u.Id));
            Assert.True(responseObj.Total == 3);
        }
        public string GetUrl(string actionName, object queryParams)
        {
            var baseUrl = GetUrl(actionName);

            return(UriHelpers.BuildUri(baseUrl, queryParams).ToString());
        }