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(); }