internal override Task <ParseObject> FetchAsyncInternal(Task toAwait, CancellationToken cancellationToken) { return(base.FetchAsyncInternal(toAwait, cancellationToken).OnSuccess(t => { if (!CurrentUserController.IsCurrent(this)) { return Task <ParseObject> .FromResult(t.Result); } // If this is already the current user, refresh its state on disk. return SaveCurrentUserAsync(this).OnSuccess(_ => t.Result); }).Unwrap()); }
internal override Task SaveAsync(Task toAwait, CancellationToken cancellationToken) { lock (mutex) { if (ObjectId == null) { throw new InvalidOperationException("You must call SignUpAsync before calling SaveAsync."); } return(base.SaveAsync(toAwait, cancellationToken).OnSuccess(_ => { if (!CurrentUserController.IsCurrent(this)) { return Task.FromResult(0); } return SaveCurrentUserAsync(this); }).Unwrap()); } }
internal Task LogOutAsync(Task toAwait, CancellationToken cancellationToken) { string oldSessionToken = SessionToken; if (oldSessionToken == null) { return(Task.FromResult(0)); } // Cleanup in-memory session. MutateState(mutableClone => { mutableClone.ServerData.Remove("sessionToken"); }); var revokeSessionTask = ParseSession.RevokeAsync(oldSessionToken, cancellationToken); return(Task.WhenAll(revokeSessionTask, CurrentUserController.LogOutAsync(cancellationToken))); }
/// <summary> /// Setup the test /// </summary> public CurrentUserUnitTest() { DbContextOptions <DbAppContext> options = new DbContextOptions <DbAppContext>(); Mock <DbAppContext> dbAppContext = new Mock <DbAppContext>(null, options); /* * * Here you will need to mock up the context. * * ItemType fakeItem = new ItemType(...); * * Mock<DbSet<ItemType>> mockList = MockDbSet.Create(fakeItem); * * dbAppContext.Setup(x => x.ModelEndpoint).Returns(mockItem.Object); * */ CurrentUserService _service = new CurrentUserService(null, dbAppContext.Object); _CurrentUser = new CurrentUserController(_service); }
/// <summary> /// Removes null values from authData (which exist temporarily for unlinking) /// </summary> private void CleanupAuthData() { lock (mutex) { if (!CurrentUserController.IsCurrent(this)) { return; } var authData = AuthData; if (authData == null) { return; } foreach (var pair in new Dictionary <string, IDictionary <string, object> >(authData)) { if (pair.Value == null) { authData.Remove(pair.Key); } } } }
public CurrentUserControllerTests() { var userData = new List <User> { new User { email = "*****@*****.**", name = "John Doe", password = "******" }, }.AsQueryable(); var userMockSet = new Mock <DbSet <User> >(); userMockSet.As <IAsyncEnumerable <User> >().Setup(m => m.GetEnumerator()).Returns(new TestAsyncEnumerator <User>(userData.GetEnumerator())); userMockSet.As <IQueryable <User> >().Setup(m => m.Provider).Returns(new TestAsyncQueryProvider <User>(userData.Provider)); userMockSet.As <IQueryable <User> >().Setup(m => m.Expression).Returns(userData.Expression); userMockSet.As <IQueryable <User> >().Setup(m => m.ElementType).Returns(userData.ElementType); userMockSet.As <IQueryable <User> >().Setup(m => m.GetEnumerator()).Returns(userData.GetEnumerator()); _userRepositoryMock.Setup(m => m.Query()).Returns(userMockSet.Object.AsQueryable()); var mockCtx = new Mock <IdeasDbContext>(); mockCtx.SetupGet(c => c.Users).Returns(userMockSet.Object); _currentUserController = new CurrentUserController(_userRepositoryMock.Object); }
internal static Task <string> GetCurrentSessionTokenAsync(CancellationToken cancellationToken = default(CancellationToken)) { return(CurrentUserController.GetCurrentSessionTokenAsync(cancellationToken)); }
internal static void ClearInMemoryUser() { CurrentUserController.ClearFromMemory(); }
private static Task SaveCurrentUserAsync(ParseUser user, CancellationToken cancellationToken) { return(CurrentUserController.SetAsync(user, cancellationToken)); }
/// <summary> /// Gets the currently logged in ParseUser with a valid session, either from memory or disk /// if necessary, asynchronously. /// </summary> internal static Task <ParseUser> GetCurrentUserAsync(CancellationToken cancellationToken) { return(CurrentUserController.GetAsync(cancellationToken)); }
public void Setup() { ServiceCollection services = new(); services.AddDbContext <LibraryContext>( // using package Microsoft.EntityFrameworkCore.InMemory opt => opt.UseInMemoryDatabase(databaseName: "LibraryAPI"), ServiceLifetime.Scoped, ServiceLifetime.Scoped ); ServiceProvider serviceProvider = services.BuildServiceProvider(); testService = serviceProvider.GetService <CurrentUserService>(); resultService = serviceProvider.GetService <ResultService>(); var context = serviceProvider.GetService <LibraryContext>(); // Create in-memory data var user1 = new User { Id = Guid.NewGuid(), Username = "******", Password = "******", Role = UserRole.User }; var user2 = new User { Id = Guid.NewGuid(), Username = "******", Password = "******", Role = UserRole.User }; var user3 = new User { Id = Guid.NewGuid(), Username = "******", Password = "******", Role = UserRole.User }; context.Users.Add(user1); context.Users.Add(user2); context.Users.Add(user3); var cate1 = new Category { Id = Guid.NewGuid(), Name = "Fantasy" }; var cate2 = new Category { Id = Guid.NewGuid(), Name = "Action" }; var cate3 = new Category { Id = Guid.NewGuid(), Name = "Sci-fi" }; context.Categories.Add(cate1); context.Categories.Add(cate2); context.Categories.Add(cate3); var book1 = new Book { Id = bookId1, Title = "Frost", Author = "Erin LaTimer", CategoryId = cate1.Id }; var book2 = new Book { Id = bookId2, Title = "Flame", Author = "Erin LaTimer", CategoryId = cate1.Id }; var book3 = new Book { Id = bookId3, Title = "Harry Potter and the Philosopher's Stone", Author = "J.K. Rowling", CategoryId = cate1.Id }; var book4 = new Book { Id = bookId4, Title = "Ready Player One", Author = "Ernest Cline", CategoryId = cate2.Id }; var book5 = new Book { Id = bookId5, Title = "Ready Player Two", Author = "Ernest Cline", CategoryId = cate2.Id }; var book6 = new Book { Id = bookId6, Title = "Ender's Game", Author = "Orson Scott Card", CategoryId = cate3.Id }; context.Books.Add(book1); context.Books.Add(book2); context.Books.Add(book3); context.Books.Add(book4); context.Books.Add(book5); context.Books.Add(book6); controller = new CurrentUserController(testService, resultService); }
public CurrentUserControllerTests() { TimeService.UtcNow = new DateTime(2019, 2, 1, 12, 3, 0); _controller = new CurrentUserController(Db, UserEventsService, MockLogger.Get <CurrentUserController>(), TimeService); }