Exemplo n.º 1
0
        public async Task <IActionResult> GetHash([FromBody] IdStringFormModel model)
        {
            var result = new ResultModel();

            if (ModelState.IsValid)
            {
                var userId = User.GetUserId();

                var data = await _db.Channels.Include(i => i.Users).FirstOrDefaultAsync(i => i.Hash == model.Id);

                if (data != null)
                {
                    // if the user is owner or member of the channel, then let him in
                    if (data.OwnerId == userId || data.Users.Any(i => i.UserId == userId))
                    {
                        result.Succeeded = true;
                        result.Data      = FillTheModel(data);
                    }
                    else
                    {
                        if (!string.IsNullOrEmpty(data.Password))
                        {
                            result.Prompt  = true;
                            result.Data    = data.Id;
                            result.Message = "Enter Password";
                        }
                        else
                        {
                            _db.ChannelUsers.Add(new ChannelUser()
                            {
                                UserId    = userId,
                                ChannelId = data.Id,
                                State     = (int)UserStates.Joined
                            });

                            var affected = await _db.SaveChangesAsync();

                            if (affected == 1)
                            {
                                result.Data      = FillTheModel(data);
                                result.Succeeded = true;
                            }
                        }
                    }
                }
            }

            return(Json(result));
        }
        public async Task GetHashWithInvalidData()
        {
            _client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", MockData.AuthKey);
            IdStringFormModel model = new IdStringFormModel();

            model.Id = "invalid";

            var response = await _client.PostAsync("/api/Channel/GetHash",
                                                   new StringContent(JsonConvert.SerializeObject(model), System.Text.Encoding.UTF8, "application/json"));

            response.EnsureSuccessStatusCode();
            var content = await response.Content.ReadAsStringAsync();

            var result = JsonConvert.DeserializeObject <TResultModel <ListModel> >(content);

            Assert.False(result.Succeeded);
            _client.DefaultRequestHeaders.Clear();
        }