Example #1
0
        private void AddReservationNoOverlap(User user)
        {
            var server = new Server();
            var room   = new Room("room1", "here", 1, true, false, 1);

            server.database.Users.Add(user);
            server.database.Rooms.Add(room);
            server.database.SaveChanges();
            var controller = new ReservationsController(server.database);

            controller.SetUserIdentity(user);
            var startdate   = new DateTime(2000, 1, 1);
            var enddate     = new DateTime(2000, 3, 1);
            var description = "Reservation";
            var result      = controller.AddReservation(server.EmailService, startdate, enddate, description, room.Id);

            Assert.IsType <OkObjectResult>(result);
            Assert.Equal((result as OkObjectResult).Value, server.database.Reservations.First().Id.ToString());

            Assert.True(server.database.Participants.Where(x => x.UserID == user.Id).Where(x => x.IsOwner).Count() == 1);
            Assert.True(server.database.Participants.Count() == 1);

            Assert.True(server.database.Reservations.Where(x => x.StartDate == startdate).Where(x => x.EndDate == enddate).Where(x => x.Description == description).Where(x => x.Room == room).Count() == 1);
            Assert.True(server.database.Reservations.Count() == 1);
        }
Example #2
0
        private void ChangeReservationOverlapUnAuthorized(User actor, User owner)
        {
            var server = new Server();
            var room1  = new Room("room1", "here", 1, true, false, 1);

            if (actor == owner)
            {
                server.database.Users.Add(actor);
            }
            else
            {
                server.database.Users.Add(actor);
                server.database.Users.Add(owner);
            }
            server.database.Rooms.Add(room1);
            server.database.SaveChanges();
            var controller = new ReservationsController(server.database);

            controller.SetUserIdentity(owner);
            var startdate   = new DateTime(2000, 1, 1);
            var enddate     = new DateTime(2000, 3, 1);
            var description = "Reservation";

            var otherstartdate = new DateTime(2001, 1, 1);
            var otherenddate   = new DateTime(2001, 3, 1);

            var tempresult = controller.AddReservation(server.EmailService, startdate, enddate, description, room1.Id);

            Assert.IsType <OkObjectResult>(tempresult); //IF this is not true, then the addreservation does not work.
            controller.SetUserIdentity(actor);
            tempresult = controller.AddReservation(server.EmailService, otherstartdate, otherenddate, description, room1.Id);
            Assert.IsType <OkObjectResult>(tempresult);

            var reservation      = server.database.Participants.Where(x => x.UserID == owner.Id).First().Reservation;
            var otherreservation = server.database.Participants.Where(x => x.UserID == actor.Id).First().Reservation;

            var newstartdate = new DateTime(2000, 2, 1);
            var neweneddate  = new DateTime(2000, 4, 1);

            var result = controller.ChangeReservation(server.EmailService, otherreservation.Id, newstartdate, neweneddate, null, null, null, true);

            Assert.IsType <UnauthorizedResult>(result);
            Assert.Equal(enddate, reservation.EndDate);
            Assert.Equal(startdate, reservation.StartDate);
            Assert.Equal(otherenddate, otherreservation.EndDate);
            Assert.Equal(otherstartdate, otherreservation.StartDate);
        }
        private void ChangeReservationNoOverlapUnauthorized(User actor, User owner, DateTime?newStartTime, DateTime?newEndTime, string newDescription, Room newRoom, bool Force, bool?isActive)
        {
            var server = new Server();
            var room1  = new Room("room1", "here", 1, true, false, 1);

            if (actor == owner)
            {
                server.database.Users.Add(actor);
            }
            else
            {
                server.database.Users.Add(actor);
                server.database.Users.Add(owner);
            }
            server.database.Rooms.Add(room1);
            if (newRoom != null)
            {
                server.database.Rooms.Add(newRoom);
            }
            server.database.SaveChanges();
            var controller = new ReservationsController(server.database);

            controller.SetUserIdentity(owner);
            var startdate   = new DateTime(2000, 1, 1);
            var enddate     = new DateTime(2000, 3, 1);
            var description = "Reservation";

            var tempresult = controller.AddReservation(server.EmailService, startdate, enddate, description, room1.Id);

            Assert.IsType <OkObjectResult>(tempresult); //IF this is not true, then the addreservation does not work.
            controller.SetUserIdentity(actor);
            var reservation = server.database.Reservations.First();

            var result = controller.ChangeReservation(server.EmailService, reservation.Id, newStartTime, newEndTime, newDescription, newRoom == null ? null : (int?)newRoom.Id, isActive, Force);

            Assert.IsType <UnauthorizedResult>(result);
            Assert.Equal(startdate, reservation.StartDate);
            Assert.Equal(enddate, reservation.EndDate);
            Assert.Equal(description, reservation.Description);
            Assert.Equal(room1, reservation.Room);
            Assert.Equal(true, reservation.Active);
        }
        private void OverlapDifferentRooms(Role ActorRole, Role OtherOwnerRole, bool IsMutable, bool Force)
        {
            var Actor            = new User(ActorRole, "a", true);
            var OtherOwner       = new User(OtherOwnerRole, "b", true);
            var server           = new Server();
            var room1            = new Room("room", "here", 1, true, false, 1);
            var room2            = new Room("room", "here", 1, true, false, 1);
            var startdate1       = new DateTime(2000, 1, 1);
            var enddate1         = new DateTime(2000, 1, 3);
            var otherreservation = new Reservation(startdate1, enddate1, true, IsMutable, "OtherReservation", room1);

            server.database.Users.Add(Actor);
            server.database.Users.Add(OtherOwner);
            server.database.Rooms.Add(room1);
            server.database.Rooms.Add(room2);

            server.database.Reservations.Add(otherreservation);
            server.database.Participants.Add(new Participant(otherreservation, OtherOwner, true, new DateTime(2000, 1, 1)));
            server.database.SaveChanges();

            var controller = new ReservationsController(server.database);

            controller.SetUserIdentity(Actor);

            var startdate2  = new DateTime(2000, 1, 2);
            var enddate2    = new DateTime(2000, 1, 4);
            var description = "Reservation";

            var result = controller.AddReservation(server.EmailService, startdate2, enddate2, description, room2.Id, Force);

            Assert.IsType <OkObjectResult>(result);
            var madereservation = server.database.Participants.Where(x => x.UserID == Actor.Id).First().Reservation;

            Assert.True(otherreservation.StartDate == startdate1 && otherreservation.EndDate == enddate1);
            Assert.True(otherreservation.Participants.First().User == OtherOwner);
            Assert.True(madereservation.StartDate == startdate2 && madereservation.EndDate == enddate2);
            Assert.True(madereservation.Participants.First().User == Actor);
        }
        private Tuple <Server, IActionResult> AddReservationOverlap(User Actor, User OtherOwner, bool IsMutable, bool Force)
        {
            var server           = new Server();
            var room             = new Room("room", "here", 1, true, false, 1);
            var otherreservation = new Reservation(new DateTime(2000, 1, 1), new DateTime(2000, 1, 3), true, IsMutable, "OtherReservation", room);

            server.database.Users.Add(Actor);
            server.database.Users.Add(OtherOwner);
            server.database.Rooms.Add(room);

            server.database.Reservations.Add(otherreservation);
            server.database.Participants.Add(new Participant(otherreservation, OtherOwner, true, new DateTime(2000, 1, 1)));
            server.database.SaveChanges();

            var controller = new ReservationsController(server.database);

            controller.SetUserIdentity(Actor);

            var startdate   = new DateTime(2000, 1, 2);
            var enddate     = new DateTime(2000, 1, 4);
            var description = "Reservation";

            return(new Tuple <Server, IActionResult>(server, controller.AddReservation(server.EmailService, startdate, enddate, description, room.Id, Force)));
        }