Example #1
0
        public async Task GetById_ShouldSuccess()
        {
            var client = this.factory.CreateClient();

            client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue(
                "Bearer",
                await AuthenticationUtilities.GetTestUserAccessTokenAsync(client));

            MessengerContext context = this.factory.Server.Host.Services.GetService(typeof(MessengerContext))
                                       as MessengerContext;

            await context.Users.AddRangeAsync(this.GenerateUsers(5));

            await context.SaveChangesAsync();

            var dbUser = await context.Users.Skip(2).FirstAsync();

            var response = await client.GetAsync($"/api/users/{dbUser.Id}");

            response.EnsureSuccessStatusCode();

            var user = response.Content.ReadAsAsync(typeof(UserViewModel)).Result as UserViewModel;

            Assert.NotNull(user);
            Assert.Equal(dbUser.UserName, user.UserName);
        }
        public async Task PutUpdate_ShouldSuccess()
        {
            var client = this.factory.CreateClient();

            client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue(
                "Bearer",
                await AuthenticationUtilities.GetTestUserAccessTokenAsync(client));

            MessengerContext context = this.factory.Server.Host.Services.GetService(typeof(MessengerContext))
                                       as MessengerContext;

            this.SeedDataForMessagesTesting(context);
            User testUser = await context.Users.FirstAsync();

            Message message = await context.Messages.Skip(1).FirstAsync();

            string newContent = "new content";

            var requestBody = new EditMessageViewModel {
                MessageId = message.MessageId, Content = newContent
            };
            var requestContent = new StringContent(JsonConvert.SerializeObject(requestBody), Encoding.UTF8, "application/json");
            var response       = await client.PutAsync($"/api/messages/{message.MessageId}", requestContent);

            response.EnsureSuccessStatusCode();

            Message updated = await context.Messages.SingleAsync(x => x.MessageId == message.MessageId);

            Assert.Equal(newContent, updated.Content);
        }
Example #3
0
        public async Task GetUserNameContains_ShouldSuccess()
        {
            var client = this.factory.CreateClient();

            client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue(
                "Bearer",
                await AuthenticationUtilities.GetTestUserAccessTokenAsync(client));

            MessengerContext context = this.factory.Server.Host.Services.GetService(typeof(MessengerContext))
                                       as MessengerContext;

            UserManager <User> userManager = this.factory.Server.Host.Services.GetService(typeof(UserManager <User>))
                                             as UserManager <User>;

            foreach (var item in this.GenerateUsers(5))
            {
                await userManager.CreateAsync(item);
            }

            var dbUser = await context.Users.Skip(2).FirstAsync();

            var searchString = dbUser.UserName.Substring(0, 2);

            var response = await client.GetAsync($"/api/users/UserNameContains/{searchString}");

            response.EnsureSuccessStatusCode();

            var users = response.Content.ReadAsAsync(typeof(IEnumerable <UserViewModel>)).Result as IEnumerable <UserViewModel>;

            Assert.True(users.Any(x => x.UserName == dbUser.UserName));
        }
Example #4
0
        public async Task Post_ShouldSuccess()
        {
            var client = this.factory.CreateClient();

            client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue(
                "Bearer",
                await AuthenticationUtilities.GetTestUserAccessTokenAsync(client));

            MessengerContext context = this.factory.Server.Host.Services.GetService(typeof(MessengerContext))
                                       as MessengerContext;

            User user = this.GenerateUsers(1).Single();

            var requestBody = new UserCredentialsViewModel {
                Password = "******", UserName = user.UserName, Name = user.Name
            };
            var requestContent = new StringContent(JsonConvert.SerializeObject(requestBody), Encoding.UTF8, "application/json");
            var response       = await client.PostAsync($"/api/users", requestContent);

            response.EnsureSuccessStatusCode();

            UserManager <User> userManager = this.factory.Server.Host.Services.GetService(typeof(UserManager <User>))
                                             as UserManager <User>;

            var insertedUser = await userManager.FindByNameAsync(user.UserName);

            Assert.NotNull(insertedUser);
        }
        public async Task Delete_ShouldSuccess()
        {
            var client = this.factory.CreateClient();

            client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue(
                "Bearer",
                await AuthenticationUtilities.GetTestUserAccessTokenAsync(client));

            MessengerContext context = this.factory.Server.Host.Services.GetService(typeof(MessengerContext))
                                       as MessengerContext;

            this.SeedDataForMessagesTesting(context);
            User testUser = await context.Users.FirstAsync();

            Message message = await context.Messages.Skip(1).FirstAsync();

            int previousCount = await context.Messages.CountAsync();

            var response = await client.DeleteAsync($"/api/messages/{message.MessageId}");

            response.EnsureSuccessStatusCode();

            int currentCount = await context.Messages.CountAsync();

            Assert.NotEqual(previousCount, currentCount);
            Assert.Equal(previousCount, currentCount + 1);
            Assert.False(await context.Messages.AnyAsync(x => x.MessageId == message.MessageId));
        }
        public async Task GetByConversation_ShouldSuccess()
        {
            var client = this.factory.CreateClient();

            client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue(
                "Bearer",
                await AuthenticationUtilities.GetTestUserAccessTokenAsync(client));

            MessengerContext context = this.factory.Server.Host.Services.GetService(typeof(MessengerContext))
                                       as MessengerContext;

            this.SeedDataForMessagesTesting(context);
            User testUser = await context.Users.FirstAsync();

            Conversation testConversation = await context.Conversations.FirstAsync();

            var response = await client.GetAsync($"/api/messages/Conversation/{testConversation.ConversationId}");

            response.EnsureSuccessStatusCode();

            var messages = response.Content.ReadAsAsync(typeof(IEnumerable <EditMessageViewModel>)).Result as IEnumerable <EditMessageViewModel>;

            int messagesCount = await context.Messages.CountAsync(x => x.OwnerId == testUser.Id &&
                                                                  x.Conversation.ConversationId == testConversation.ConversationId);

            Assert.NotNull(messages);
            Assert.Equal(messagesCount, messages.Count());
        }
        public async Task GetById_ShouldSuccess()
        {
            var client = this.factory.CreateClient();

            client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue(
                "Bearer",
                await AuthenticationUtilities.GetTestUserAccessTokenAsync(client));

            MessengerContext context = this.factory.Server.Host.Services.GetService(typeof(MessengerContext))
                                       as MessengerContext;

            this.SeedDataForMessagesTesting(context);
            User testUser = await context.Users.FirstAsync();

            Message message = await context.Messages.Skip(1).FirstAsync();

            var response = await client.GetAsync($"/api/messages/{message.MessageId}");

            response.EnsureSuccessStatusCode();

            var responseMessage = response.Content.ReadAsAsync(typeof(EditMessageViewModel)).Result as EditMessageViewModel;

            Assert.NotNull(responseMessage);
            Assert.Equal(message.Content, message.Content);
        }
Example #8
0
        public async Task Delete_ShouldSuccess()
        {
            var client = this.factory.CreateClient();

            client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue(
                "Bearer",
                await AuthenticationUtilities.GetTestUserAccessTokenAsync(client));

            MessengerContext context = this.factory.Server.Host.Services.GetService(typeof(MessengerContext))
                                       as MessengerContext;

            await context.Users.AddRangeAsync(this.GenerateUsers(5));

            await context.SaveChangesAsync();

            var dbUser = await context.Users.Skip(2).FirstAsync();

            int previousCount = await context.Users.CountAsync();

            var response = await client.DeleteAsync($"/api/users/{dbUser.Id}");

            response.EnsureSuccessStatusCode();

            int currentCount = await context.Users.CountAsync();

            Assert.NotEqual(previousCount, currentCount);
            Assert.Equal(previousCount, currentCount + 1);
            Assert.False(await context.Users.AnyAsync(x => x.Id == dbUser.Id));
        }
Example #9
0
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddControllers();
            services.AddAuthentication(x =>
            {
                x.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
                x.DefaultChallengeScheme    = JwtBearerDefaults.AuthenticationScheme;
            })
            .AddJwtBearer(jwt =>
            {
                jwt.TokenValidationParameters = new Microsoft.IdentityModel.Tokens.TokenValidationParameters()
                {
                    ValidateAudience = false,
                    ValidateIssuer   = false,
                    IssuerSigningKey = AuthenticationUtilities.GetIssuerKey()
                };
            });

            services.AddSingleton <IHttpContextAccessor, HttpContextAccessor>();

            var contextInfo = new ContextInfo
            {
                ConnectionString = Configuration["StorageConnectionString"]
            };
            var contextProvider = new ContextProvider(contextInfo);

            ContextProvider.Instance = contextProvider;
        }
Example #10
0
 public async Task <IActionResult> AddUserToChat(string userUUID, string chatUUID, CancellationToken ct = default)
 {
     if (!AuthenticationUtilities.IsAllowedChat(User))
     {
         return(BadRequest("User has been banned from Chat"));
     }
     return(Ok(await _chatService.AddUserToChatAsync(userUUID, chatUUID, ct)));
 }
 public async Task <IActionResult> GetComment(int commentId, CancellationToken ct = default)
 {
     if (!AuthenticationUtilities.IsAllowedFeed(User))
     {
         return(BadRequest("User has been banned from Feed"));
     }
     return(Ok(await _feedService.GetCommentByIdAsync(commentId, ct)));
 }
 public async Task <IActionResult> GetMyDTOPosts(string uuid = "", CancellationToken ct = default)
 {
     if (!AuthenticationUtilities.IsAllowedFeed(User))
     {
         return(BadRequest("User has been banned from Feed"));
     }
     return(Ok(await _feedService.GetAllDTOPostsForUserAsync(!string.IsNullOrEmpty(uuid) ? uuid : AuthenticationUtilities.GetUUIDFromIdentity(User), ct)));
 }
 public async Task <IActionResult> CreateNewAditLog([FromBody] AditLog aditLog, CancellationToken ct = default)
 {
     if (!AuthenticationUtilities.IsAllowedFeed(User))
     {
         return(BadRequest("User has been banned from Feed"));
     }
     return(Ok(await _feedService.UploadNewAditLogAsync(aditLog, ct)));
 }
 public async Task <IActionResult> GetAditLogsAsync(int teamId = 0, CancellationToken ct = default)
 {
     if (!AuthenticationUtilities.IsAllowedFeed(User))
     {
         return(BadRequest("User has been banned from Feed"));
     }
     return(Ok(await _feedService.GetAllAditLogsAsync(teamId, ct)));
 }
Example #15
0
 public async Task <IActionResult> GetMessageById(string messageUUID, CancellationToken ct = default)
 {
     if (!AuthenticationUtilities.IsAllowedChat(User))
     {
         return(BadRequest("User has been banned from Chat"));
     }
     return(Ok(await _chatService.GetMessageByIdAsync(messageUUID, ct)));
 }
Example #16
0
 public async Task <IActionResult> GetMessagesForChat(string chatUUID, long startfrom, int limit = 20, CancellationToken ct = default)
 {
     if (!AuthenticationUtilities.IsAllowedChat(User))
     {
         return(BadRequest("User has been banned from Chat"));
     }
     return(Ok(await _chatService.GetMessagesForChatAsync(chatUUID, startfrom, limit, ct)));
 }
        public async Task <IActionResult> UpdateDetailsForUser(string uuid, [FromBody] UserDetails details, CancellationToken ct = default)
        {
            if (!AuthenticationUtilities.IsSameUserOrPrivileged(User, uuid))
            {
                return(Unauthorized("You do not have access to this endpoint"));
            }

            return(Ok(await _userRepository.UpdateUserDetailsAsync(uuid, details, ct)));
        }
Example #18
0
        public async Task <IActionResult> ReportUser([FromBody] ChatMessageReport report, CancellationToken ct = default)
        {
            if (!AuthenticationUtilities.IsAllowedChat(User))
            {
                return(BadRequest("User has been banned from Chat"));
            }
            await _chatService.ReportMessageAsync(report, ct);

            return(Ok());
        }
Example #19
0
        public async Task <IActionResult> BotMessage([FromBody] ChatBotRequest request, CancellationToken ct = default)
        {
            if (!AuthenticationUtilities.IsAllowedChat(User))
            {
                return(BadRequest("User has been banned from Chat"));
            }
            string uuid = AuthenticationUtilities.GetUUIDFromIdentity(User);

            return(Ok(await _chatBot.GetResponseForCommand(request.input, uuid, request.version)));
        }
        public async Task <IActionResult> ReportUser([FromBody] FeedReport report, CancellationToken ct = default)
        {
            if (!AuthenticationUtilities.IsAllowedFeed(User))
            {
                return(BadRequest("User has been banned from Feed"));
            }
            await _feedService.ReportPostAsync(report, ct);

            return(Ok());
        }
Example #21
0
        public async Task <IActionResult> MarkChatAsRead(string chatUUID, CancellationToken ct = default)
        {
            if (!AuthenticationUtilities.IsAllowedChat(User))
            {
                return(BadRequest("User has been banned from Chat"));
            }
            await _chatService.MarkChatAsReadAsync(AuthenticationUtilities.GetUUIDFromIdentity(User), chatUUID, ct);

            return(Ok());
        }
Example #22
0
 public async Task <IActionResult> AddMessageToChat(string chatUUID, [FromBody] ChatMessage message, CancellationToken ct = default)
 {
     if (!ModelState.IsValid)
     {
         return(BadRequest("Invalid message details"));
     }
     if (!AuthenticationUtilities.IsAllowedChat(User))
     {
         return(BadRequest("User has been banned from Chat"));
     }
     return(Ok(await _chatService.AddMessageToChatAsync(message, chatUUID, ct)));
 }
 public async Task <IActionResult> GetFeed(long startfrom, int limit = 10, int teamId = 0, CancellationToken ct = default)
 {
     if (!AuthenticationUtilities.IsAllowedFeed(User))
     {
         return(BadRequest("User has been banned from Feed"));
     }
     if (startfrom == 0)
     {
         startfrom = DateTime.UtcNow.Millisecond;
     }
     return(Ok(await _feedService.GetAllAsync(startfrom, teamId, limit, ct)));
 }
Example #24
0
 public async Task <IActionResult> UploadChatAttachment(string chatUUID, CancellationToken ct = default)
 {
     if (HttpContext.Request.Form.Files.Count > 0)
     {
         return(Ok(await _chatService.UploadChatAttachmentAsync(HttpContext.Request.Form.Files[0], chatUUID, ct)));
     }
     if (!AuthenticationUtilities.IsAllowedChat(User))
     {
         return(BadRequest("User has been banned from Chat"));
     }
     return(BadRequest("No files specified"));
 }
Example #25
0
 public async Task <IActionResult> CreateChat([FromBody] Chat chat, CancellationToken ct = default)
 {
     if (!ModelState.IsValid)
     {
         return(BadRequest("Invalid chat object"));
     }
     if (!AuthenticationUtilities.IsAllowedChat(User))
     {
         return(BadRequest("User has been banned from Chat"));
     }
     return(Ok(await _chatService.CreateNewChatAsync(chat, ct)));
 }
Example #26
0
 public async Task <IActionResult> EditChat([FromBody] ChatEditDetails details, CancellationToken ct = default)
 {
     if (!ModelState.IsValid)
     {
         return(BadRequest("Invalid chat details"));
     }
     if (!AuthenticationUtilities.IsAllowedChat(User))
     {
         return(BadRequest("User has been banned from Chat"));
     }
     return(Ok(await _chatService.EditChatAsync(details, ct)));
 }
 public async Task <IActionResult> UploadFeedMediaAttachment()
 {
     if (!AuthenticationUtilities.IsAllowedFeed(User))
     {
         return(BadRequest("User has been banned from Feed"));
     }
     if (HttpContext.Request.Form.Files.Count > 0)
     {
         return(Ok(await _feedService.UploadMediaAttachmentAsync(HttpContext.Request.Form.Files[0])));
     }
     return(BadRequest());
 }
        public async Task <IActionResult> CommentOnPost([FromBody] FeedComment comment, CancellationToken ct = default)
        {
            if (!AuthenticationUtilities.IsAllowedFeed(User))
            {
                return(BadRequest("User has been banned from Feed"));
            }
            if (!AuthenticationUtilities.IsSameUser(User, comment.UserUUID))
            {
                return(Unauthorized("You do not have access to comment for this user"));
            }

            return(Ok(await _feedService.AddCommentToPostAsync(comment, ct)));
        }
        public async Task <IActionResult> UploadAditLogAttachment(bool isVideo = false, CancellationToken ct = default)
        {
            if (!AuthenticationUtilities.IsAllowedFeed(User))
            {
                return(BadRequest("User has been banned from Feed"));
            }
            if (HttpContext.Request.Form.Files.Count >= 1)
            {
                return(Ok(await _feedService.UploadAditLogMediaAsync(HttpContext.Request.Form.Files.FirstOrDefault(), isVideo, ct: ct)));
            }

            return(BadRequest("No files uploaded"));
        }
        public async Task <IActionResult> ToggleLikeForPost(int feedPostId, string userUUID, CancellationToken ct = default)
        {
            if (!AuthenticationUtilities.IsSameUser(User, userUUID))
            {
                return(Unauthorized("You do not have access to Like for this user"));
            }
            if (!AuthenticationUtilities.IsAllowedFeed(User))
            {
                return(BadRequest("User has been banned from Feed"));
            }
            await _feedService.ToggleLikeForPostAsync(feedPostId, userUUID, ct);

            return(Ok());
        }