Esempio n. 1
0
        public async Task Update(AddressBook addressBook)
        {
            if (context.Entry(addressBook).State == EntityState.Detached)
            {
                context.AddressBooks.Add(addressBook);
            }

            await context.SaveChangesAsync();
        }
Esempio n. 2
0
        public void Dispose()
        {
            var createdNotifications =
                context.NotificationApplications.Where(n => !preRunNotifications.Contains(n.Id))
                .Select(n => n.Id)
                .ToArray();

            foreach (var createdNotification in createdNotifications)
            {
                DatabaseDataDeleter.DeleteDataForNotification(createdNotification, context);
            }

            context.Entry(ownerUser).State  = EntityState.Deleted;
            context.Entry(sharedUser).State = EntityState.Deleted;
            context.SaveChanges();

            context.Dispose();
        }
Esempio n. 3
0
        public async Task UpdateOrganisation_BusinessType_Should_Not_Remove_Organisation()
        {
            //Create new user
            var newUser = UserFactory.Create(userId, "testFirst", "testLast", "9999", "*****@*****.**");

            //Create new org
            var country = context.Countries.Single(c => c.IsoAlpha2Code.Equals("gb"));
            var address = TestAddress(country);
            var org     = new Organisation("SFW Ltd", BusinessType.LimitedCompany);

            try
            {
                context.Users.Add(newUser);
                await context.SaveChangesAsync();

                context.Organisations.Add(org);
                await context.SaveChangesAsync();

                //Assign org to user
                newUser.LinkToOrganisation(org);
                await context.SaveChangesAsync();

                //Hold OrgID of newly created entity
                var oldOrgId = org.Id;

                //Update org with change in Business Type
                org = new Organisation("Name Changed", BusinessType.SoleTrader);
                context.Organisations.Add(org);
                await context.SaveChangesAsync();

                //Update user with newly created org2
                var user = await context.Users.SingleAsync(u => u.Id == newUser.Id);

                user.UpdateOrganisationOfUser(org);
                await context.SaveChangesAsync();

                Assert.True(user.Organisation.Id == org.Id);

                //Both Orgs should have different OrgIds
                Assert.False(oldOrgId == org.Id);

                //Check if old org exists
                var oldExists = context.Organisations.Any(x => x.Id == oldOrgId);
                Assert.True(oldExists);

                //Check if new org exists
                var newExists = context.Organisations.Any(x => x.Id == org.Id);
                Assert.True(newExists);
            }
            finally
            {
                context.DeleteOnCommit(org);

                context.Entry(newUser).State = EntityState.Deleted;
                context.SaveChanges();
            }
        }
Esempio n. 4
0
        public async Task RandomExternalUserAccessThrowsException()
        {
            var notification = NotificationApplicationFactory.Create(Guid.NewGuid(), NotificationType.Recovery,
                                                                     UKCompetentAuthority.England, 20181);
            var aspnetInternalUser = UserFactory.Create(Guid.NewGuid(), "Internal", "Internal Last", "12345",
                                                        "*****@*****.**");
            var aspnetSharedUser = UserFactory.Create(Guid.NewGuid(), "External", "Shared", "12345",
                                                      "*****@*****.**");
            var localArea = new LocalArea(Guid.NewGuid(), "Test Area", (int)UKCompetentAuthority.England);

            context.NotificationApplications.Add(notification);
            context.Users.Add(aspnetInternalUser);
            context.Users.Add(aspnetSharedUser);
            context.LocalAreas.Add(localArea);
            await context.SaveChangesAsync();

            var internalUser = new InternalUser(aspnetInternalUser.Id, "test", UKCompetentAuthority.England,
                                                localArea.Id);
            //Shared user is different to the user context.
            var sharedUser = new SharedUser(notification.Id, aspnetSharedUser.Id, DateTimeOffset.Now);

            context.SharedUser.Add(sharedUser);
            await context.SaveChangesAsync();

            context.InternalUsers.Add(internalUser);
            await context.SaveChangesAsync();

            await Assert.ThrowsAsync <SecurityException>(() => context.GetNotificationApplication(notification.Id));

            context.DeleteOnCommit(internalUser);
            context.DeleteOnCommit(sharedUser);
            await context.SaveChangesAsync();

            context.Entry(aspnetInternalUser).State = EntityState.Deleted;
            context.Entry(aspnetSharedUser).State   = EntityState.Deleted;
            context.Entry(localArea).State          = EntityState.Deleted;
            await context.SaveChangesAsync();

            context.DeleteOnCommit(notification);
            await context.SaveChangesAsync();
        }
        public async Task InternalUserSameCompetentAuthorityAccess()
        {
            // Setup.
            var notification = NotificationApplicationFactory.Create(Guid.NewGuid(), NotificationType.Recovery,
                                                                     UKCompetentAuthority.England, 20181);
            var aspnetInternalUser = UserFactory.Create(Guid.NewGuid(), "Internal", "Internal Last", "12345",
                                                        "*****@*****.**");
            var localArea = new LocalArea(Guid.NewGuid(), "Test Area", (int)UKCompetentAuthority.England);

            context.NotificationApplications.Add(notification);
            context.Users.Add(aspnetInternalUser);
            context.LocalAreas.Add(localArea);
            await context.SaveChangesAsync();

            var internalUser = new InternalUser(aspnetInternalUser.Id, "test", UKCompetentAuthority.England,
                                                localArea.Id);

            context.InternalUsers.Add(internalUser);
            await context.SaveChangesAsync();

            A.CallTo(() => userContext.UserId).Returns(Guid.Parse(internalUser.UserId));

            var authorization = new NotificationApplicationAuthorization(context, userContext);

            // Assert.
            // There's no assertion for 'does not throw exception' so just executing it as normal.
            await authorization.EnsureAccessAsync(notification.Id);

            // Clear data.
            context.DeleteOnCommit(internalUser);
            await context.SaveChangesAsync();

            context.Entry(aspnetInternalUser).State = EntityState.Deleted;
            context.Entry(localArea).State          = EntityState.Deleted;
            await context.SaveChangesAsync();

            context.DeleteOnCommit(notification);
            await context.SaveChangesAsync();
        }