public async Task F06_02_Delete_User_Redis_failed()
        {
            // Arrange
            var deleteMessage = new QueryUserMessage {
                Id = 1
            };
            var fakeRedisRepo = Substitute.For <IRedisUserRepository>();

            fakeRedisRepo.Delete(1).ReturnsForAnyArgs(_ => throw new Exception());
            var serviceImpl = GetServiceImpl(fakeRedisRepo: fakeRedisRepo);

            // Action
            var actualResponseCode = (await serviceImpl.Delete(deleteMessage, null)).Code;
            var actualUserResponse = await GetServiceImpl().Get(new QueryUserMessage {
                Id = deleteMessage.Id
            }, null);

            // Assert
            Assert.AreEqual(ResponseCode.GeneralError, actualResponseCode);
            Assert.IsNotNull(actualUserResponse.Data);
            Assert.IsEmpty(actualUserResponse.Message);
            await fakeRedisRepo.Received(1).Delete(1);
        }
        public async Task F06_00_Delete_User()
        {
            // Arrange
            var createMessage = CreateUserMessage();
            var serviceImpl   = GetServiceImpl();
            var createdUser   = await serviceImpl.Create(createMessage, null);

            var deleteMessage = new QueryUserMessage {
                Id = createdUser.Id
            };

            // Action
            var actualResponseCode = (await serviceImpl.Delete(deleteMessage, null)).Code;
            var actualUserResponse = await GetServiceImpl().Get(new QueryUserMessage {
                Id = deleteMessage.Id
            }, null);

            // Assert
            Assert.AreEqual(ResponseCode.Success, actualResponseCode);
            Assert.AreEqual(ResponseCode.NotFound, actualUserResponse.Code);
            Assert.IsNull(actualUserResponse.Data);
            Assert.IsEmpty(actualUserResponse.Message);
        }
        /// <summary>
        /// Queries the list of <see cref="T:Aneka.Security.UserCredentials"/> instances for
        /// the given list of <paramref name="users"/>.
        /// </summary>
        /// <param name="users">The list of users whose <see cref="T:Aneka.Security.UserCredentials"/>
        /// is to be queried</param>
        /// <returns>A list of <see cref="T:Aneka.Security.UserCredentials"/> instances</returns>
        public IList<UserCredentials> QueryUserCredentials(IList<string> users)
        {
            List<UserCredentials> userCredentials = new List<UserCredentials>();

            QueryUserMessage queryUserMsg = new QueryUserMessage();
            queryUserMsg.SecurityToken = securityToken;
            queryUserMsg.Users = users;

            // Send query message
            Message response = MessageDispatcher.SendMessage(ClientName, this.serviceAddress.Uri, queryUserMsg);

            // Check query response
            if (response is QueryUserResponseMessage)
            {
                userCredentials = ((QueryUserResponseMessage)response).Credentials;
            }
            else if (response is ErrorMessage)
            {
                throw new ApplicationException("Error while quering user information. " + ((ErrorMessage)response).Cause.Message);
            }
            else
            {
                throw new ApplicationException("Failed to query user information");
            }

            return userCredentials;
        }