public void OriginalPlayerCanViewFriendAfterOtherPlayerAcceptsRequest()
        {
            authHelper.loginToAccount("userOne");

            SendFriendRequestRequest request = new SendFriendRequestRequest()
            {
                FriendId = authHelper.getAccountId("userTwo")
            };

            SendFriendRequestResponse response = client.SendFriendRequest(request);

            Assert.AreEqual(response.Status.IsSuccess, true);

            authHelper.loginToAccount("userTwo");

            AcceptFriendRequestRequest friendRequest = new AcceptFriendRequestRequest()
            {
                FriendId = authHelper.getAccountId("userOne"),
            };

            AcceptFriendRequestResponse acceptResponse = client.AcceptFriendRequest(friendRequest);

            Assert.AreEqual(acceptResponse.Status.IsSuccess, true);

            authHelper.loginToAccount("userOne");

            ViewFriendsResponse friendResponse = client.ViewFriends(new ViewFriendsRequest());

            Assert.AreEqual(friendResponse.Status.IsSuccess, true);
            Assert.AreEqual(1, friendResponse.Friends.Count);
            Assert.IsTrue(friendResponse.Friends.Any((friend) => friend.Id == authHelper.getAccountId("userTwo")));
        }
        public void BlockingAPlayerRemovesThemAsAFriend()
        {
            authHelper.loginToAccount("userOne");

            SendFriendRequestRequest request = new SendFriendRequestRequest()
            {
                FriendId = authHelper.getAccountId("userTwo")
            };

            SendFriendRequestResponse response = client.SendFriendRequest(request);

            Assert.AreEqual(response.Status.IsSuccess, true);

            authHelper.loginToAccount("userTwo");

            AcceptFriendRequestRequest friendRequest = new AcceptFriendRequestRequest()
            {
                FriendId = authHelper.getAccountId("userOne"),
            };

            AcceptFriendRequestResponse acceptResponse = client.AcceptFriendRequest(friendRequest);

            Assert.AreEqual(acceptResponse.Status.IsSuccess, true);

            ViewFriendsResponse friendResponse = client.ViewFriends(new ViewFriendsRequest());

            Assert.AreEqual(friendResponse.Status.IsSuccess, true);
            Assert.AreEqual(1, friendResponse.Friends.Count);
            Assert.IsTrue(friendResponse.Friends.Any((friend) => friend.Id == authHelper.getAccountId("userOne")));

            BlockPlayerRequest blockRequest = new BlockPlayerRequest()
            {
                UserIdToBlock = authHelper.getAccountId("userOne")
            };

            BlockPlayerResponse blockResponse = client.BlockPlayer(blockRequest);

            Assert.AreEqual(blockResponse.Status.IsSuccess, true);

            // Make sure the players are not friends.
            ViewFriendsResponse blockFriendListResponse = client.ViewFriends(new ViewFriendsRequest());

            Assert.AreEqual(blockFriendListResponse.Status.IsSuccess, true);
            Assert.AreEqual(0, blockFriendListResponse.Friends.Count);

            authHelper.loginToAccount("userOne");

            // Make sure the players are not friends.
            ViewFriendsResponse blockFriendListResponseUserOne = client.ViewFriends(new ViewFriendsRequest());

            Assert.AreEqual(blockFriendListResponseUserOne.Status.IsSuccess, true);
            Assert.AreEqual(0, blockFriendListResponseUserOne.Friends.Count);
        }
        public override async Task <AcceptFriendRequestResponse> AcceptFriendRequest(AcceptFriendRequestRequest request, ServerCallContext context)
        {
            DbUserModel dbUserModel = context.UserState["user"] as DbUserModel;

            if (dbUserModel == null)
            {
                return new AcceptFriendRequestResponse()
                       {
                           Status = ResponseFactory.createResponse(ResponseType.UNAUTHORIZED)
                       }
            }
            ;

            DbUserModel friend = await DbUserModel.GetUserFromGuid(request.FriendId);

            if (friend == null)
            {
                return new AcceptFriendRequestResponse()
                       {
                           Status = ResponseFactory.createResponse(ResponseType.PLAYER_DOES_NOT_EXIST)
                       }
            }
            ;

            if (!await dbUserModel.HasFriendRequestFrom(friend))
            {
                return new AcceptFriendRequestResponse()
                       {
                           Status = ResponseFactory.createResponse(ResponseType.FRIEND_REQUEST_DOES_NOT_EXIST)
                       }
            }
            ;

            return(new AcceptFriendRequestResponse()
            {
                Status = await dbUserModel.AcceptFriendRequestFrom(friend),
            });
        }
        public void PlayerCanAcceptAFriendRequest()
        {
            authHelper.loginToAccount("userOne");

            SendFriendRequestRequest request = new SendFriendRequestRequest()
            {
                FriendId = authHelper.getAccountId("userTwo")
            };

            SendFriendRequestResponse response = client.SendFriendRequest(request);

            Assert.AreEqual(response.Status.IsSuccess, true);

            authHelper.loginToAccount("userTwo");

            AcceptFriendRequestRequest friendRequest = new AcceptFriendRequestRequest()
            {
                FriendId = authHelper.getAccountId("userOne"),
            };

            AcceptFriendRequestResponse acceptResponse = client.AcceptFriendRequest(friendRequest);

            Assert.AreEqual(acceptResponse.Status.IsSuccess, true);
        }