Beispiel #1
0
        public async Task apiParticipateTest()
        {
            memMoq.Setup(m => m.CreateEntry(It.IsAny <object>())).Returns(new Mock <ICacheEntry>().Object);
            UserContext _context = GetContext();

            LogIn(users[1]);
            // open no participants, but user[1] is Admin
            int c;

            c = GetGroupPartCount(groups[0].Id);
            JsonResult res = await controller.apiParticipate(groups[0].Id);

            Assert.AreEqual(c, GetGroupPartCount(groups[0].Id));
            Assert.IsInstanceOf <JsonError>(res.Value);

            // closed, user[1] is already
            c   = GetGroupPartCount(groups[1].Id);
            res = await controller.apiParticipate(groups[1].Id);

            Assert.AreEqual(c - 1, GetGroupPartCount(groups[1].Id));
            res = await controller.apiParticipate(groups[1].Id);

            Assert.AreEqual(c, GetGroupPartCount(groups[1].Id));

            // private, user[1] is already
            c   = GetGroupPartCount(groups[2].Id);
            res = await controller.apiParticipate(groups[2].Id);

            Assert.AreEqual(c - 1, GetGroupPartCount(groups[2].Id));
            res = await controller.apiParticipate(groups[2].Id);

            Assert.IsInstanceOf <JsonError>(res.Value); // private group
            Assert.AreEqual(c - 1, GetGroupPartCount(groups[2].Id));
            // restore implicit
            _context.Group.Find(groups[2].Id).Participants.Add(new GroupUser(users[1], _context.Group.Find(groups[2].Id)));
            _context.SaveChanges();

            LogIn(users[2]);
            // open
            c   = GetGroupPartCount(groups[0].Id);
            res = await controller.apiParticipate(groups[0].Id);

            Assert.AreEqual(c + 1, GetGroupPartCount(groups[0].Id));
            Assert.AreEqual(c + 1 + groups[0].Admins.Count, new List <UserModel>((IEnumerable <UserModel>)res.Value.GetType().GetProperty("Participants").GetValue(res.Value)).Count);
            Assert.True((bool)res.Value.GetType().GetProperty("IsParticipant").GetValue(res.Value));
            res = await controller.apiParticipate(groups[0].Id);

            Assert.AreEqual(c, GetGroupPartCount(groups[0].Id));
            // closed, already
            c   = GetGroupPartCount(groups[1].Id);
            res = await controller.apiParticipate(groups[1].Id);

            Assert.AreEqual(c - 1, GetGroupPartCount(groups[1].Id));
            Assert.False((bool)res.Value.GetType().GetProperty("IsParticipant").GetValue(res.Value));
            res = await controller.apiParticipate(groups[1].Id);

            Assert.AreEqual(c, GetGroupPartCount(groups[1].Id));
            // private
            c   = GetGroupPartCount(groups[2].Id);
            res = await controller.apiParticipate(groups[2].Id);

            Assert.AreEqual(c, GetGroupPartCount(groups[2].Id));
            Assert.IsInstanceOf <JsonError>(res.Value);

            res = await controller.apiParticipate(1000);

            Assert.IsInstanceOf <JsonError>(res.Value);
        }