Example #1
0
class TestDeleteMessage(TestCase):
    def setUp(self):
        self.first_user = User(username="******")
        self.first_user.set_password('12345')
        self.first_user.save()
        self.second_user = User(username="******")
        self.second_user.set_password('12345')
        self.second_user.save()
        self.third_user = User(username="******")
        self.third_user.save()
        self.first_student = Student(user=self.first_user)
        self.first_student.save()
        self.second_student = Student(user=self.second_user)
        self.second_student.save()
        self.teacher = Professor(user=self.third_user)
        self.teacher.save()
        self.stage = Stage(id=1, name="Stage1", level=1)
        self.stage.save()
        self.lesson = Lesson(id=1, name="Lesson 1", stage_id=1)
        self.lesson.save()
        self.thread_lesson = Thread.objects.create(author=self.first_user,
                                                   lesson=self.lesson,
                                                   title="Thread 1",
                                                   id=1)
        self.thread_lesson.save()
        self.thread_id = self.thread_lesson.id
        self.message = Message.objects.create(
            author=self.first_user,
            content="Content of message",
            thread=self.thread_lesson,
            created_date=utc.localize(datetime.now()),
            modified_date=utc.localize(datetime.now()))
        self.message.save()
        self.c = Client()
        self.c.login(username='******', password='******')
        self.c2 = Client()
        self.c2.login(username='******', password='******')

    def test_delete_unknown_thread(self):
        response = self.c.post('/forum/thread/{}/delete/{}'.format(402552, 1))
        self.assertEquals(response.status_code, 404)

    def test_delete_unknown_message(self):
        response = self.c.post('/forum/thread/{}/delete/{}'.format(
            self.thread_lesson.id, 1138282))
        self.assertEquals(response.status_code, 404)

    def test_delete_message(self):
        response = self.c.post('/forum/thread/{}/delete/{}'.format(
            self.thread_lesson.id, self.message.id))

        self.assertEquals(response.status_code, 302)
        self.assertFalse(Message.objects.filter(pk=self.message.id).exists())

    def test_edit_message_unauthorized(self):
        response = self.c2.post('/forum/thread/{}/delete/{}'.format(
            self.thread_lesson.id, self.message.id))
        self.assertEquals(response.status_code, 403)
Example #2
0
    def setUp(self):
        self.user = User(username="******")
        self.user.save()
        self.second_user = User(username="******")
        self.second_user.save()
        self.teacher_user = User(username="******")
        self.teacher_user.save()
        self.second_teacher_user = User(username="******")
        self.second_teacher_user.save()

        self.student = Student(user=self.user)
        self.student.save()
        self.second_student = Student(user=self.second_user)
        self.second_student.save()
        self.teacher = Professor(user=self.teacher_user)
        self.teacher.save()
        self.second_teacher = Professor(user=self.second_teacher_user)
        self.second_teacher.save()

        self.stage = Stage(id=1, name="Stage1", level=1)
        self.stage.save()
        self.second_stage = Stage(id=2, name="Stage2", level=1)
        self.second_stage.save()

        self.lesson = Lesson(id=1, name="English", stage_id=1)
        self.lesson.save()
        self.lesson.students.add(self.student)
        self.lesson.students.add(self.second_student)
        self.lesson.professors.add(self.teacher)
        self.lesson.save()

        self.second_lesson = Lesson(id=2, name="French", stage_id=2)
        self.second_lesson.save()
        self.second_lesson.students.add(self.second_student)
        self.second_lesson.professors.add(self.teacher)
        self.second_lesson.save()

        self.thread = Thread(title="Help",
                             author=self.user,
                             recipient=self.teacher_user)
        self.thread.save()

        self.second_thread = Thread(title="Send help",
                                    author=self.second_user,
                                    lesson=self.second_lesson)
        self.second_thread.save()

        self.third_thread = Thread(title="Information regarding w/e",
                                   author=self.teacher_user,
                                   professor=self.teacher)
        self.third_thread.save()

        self.fourth_thread = Thread(title="Information regarding spam",
                                    author=self.teacher_user,
                                    professor=self.teacher)
        self.fourth_thread.save()
Example #3
0
    def setUp(self):
        self.user = User(username="******")
        self.user.set_password('12345')
        self.user.save()
        self.teacher_user = User(username="******")
        self.teacher_user.set_password('12345')
        self.teacher_user.save()

        self.student = Student(user=self.user)
        self.student.save()
        self.teacher = Professor(user=self.teacher_user)
        self.teacher.save()

        res1_content = {"title": "Res1"}
        self.res1 = Resource(added_by=self.teacher_user, content=res1_content)
        self.res1.save()

        self.section = Section(id=1, name="Section1")
        self.section.save()
        self.section.resource.add(self.res1)
        self.section.save()

        self.skill2 = Skill(id=2, name="Skill2", code="2")
        self.skill2.save()

        res2_content = {"title": "Res2"}
        self.res2 = Resource(added_by=self.teacher_user, content=res2_content)
        self.res2.save()

        self.skill3 = Skill(id=3, name="Skill3", code="3")
        self.skill3.save()
        self.skill3.resource.add(self.res2)
        self.skill3.save()

        self.skill4 = Skill(id=4, name="Skill4", code="4")
        self.skill4.section = self.section
        self.skill4.save()

        self.stage = Stage(id=1, name="Stage1", level=1)
        self.stage.save()
        self.stage.skills.add(self.skill3)
        self.stage.skills.add(self.skill4)
        self.stage.save()

        self.lesson = Lesson(id=1, name="English", stage_id=1)
        self.lesson.save()
        self.lesson.students.add(self.student)
        self.lesson.professors.add(self.teacher)
        self.lesson.save()

        self.s1 = Client()
        self.s1.login(username=self.user.username, password='******')

        self.t1 = Client()
        self.t1.login(username=self.teacher_user.username, password='******')
Example #4
0
def create_professor():
    user = create_appuser()

    professor = Professor(
        app_user=user,
        number=random.randrange(1, 10000000000),
        rank=random.choice([
            "assist", "assistinv", "full", "fullvis", "associ", "associnv",
            "assocagr"
        ]),
    )

    professor.save()
Example #5
0
    def test_public_professor_thread(self):
        user = User(username="******")
        user.save()

        professor_user = User(username="******")
        professor_user.save()
        professor = Professor(user=professor_user)
        professor.save()

        thread = Thread(title="Help", author=user, professor=professor)
        thread.clean()
        thread.save()

        self.assertTrue(thread.is_public_professor())
        self.assertFalse(thread.is_private())
        self.assertFalse(thread.is_public_lesson())
Example #6
0
    def test_invalid_thread_both_recipient_professor(self):
        user = User(username="******")
        user.save()

        recipient = User(username="******")
        recipient.save()

        professor_user = User(username="******")
        professor_user.save()
        professor = Professor(user=professor_user)
        professor.save()

        thread = Thread(title="Help",
                        author=user,
                        recipient=recipient,
                        professor=professor)

        with self.assertRaises(ValidationError):
            thread.clean()
Example #7
0
 def setUp(self):
     self.first_user = User(username="******")
     self.first_user.set_password('12345')
     self.first_user.save()
     self.second_user = User(username="******")
     self.second_user.set_password('12345')
     self.second_user.save()
     self.third_user = User(username="******")
     self.third_user.save()
     self.first_student = Student(user=self.first_user)
     self.first_student.save()
     self.second_student = Student(user=self.second_user)
     self.second_student.save()
     self.teacher = Professor(user=self.third_user)
     self.teacher.save()
     self.stage = Stage(id=1, name="Stage1", level=1)
     self.stage.save()
     self.lesson = Lesson(id=1, name="Lesson 1", stage_id=1)
     self.lesson.save()
     self.thread_lesson = Thread.objects.create(author=self.first_user,
                                                lesson=self.lesson,
                                                title="Thread 1",
                                                id=1)
     self.thread_lesson.save()
     self.thread_id = self.thread_lesson.id
     self.message = Message.objects.create(
         author=self.first_user,
         content="Content of message",
         thread=self.thread_lesson,
         created_date=utc.localize(datetime.now()),
         modified_date=utc.localize(datetime.now()))
     self.message.save()
     self.c = Client()
     self.c.login(username='******', password='******')
     self.c2 = Client()
     self.c2.login(username='******', password='******')
     self.file = SimpleUploadedFile('file.txt', b'OOOOOOOOOOOOOOOOOOOO')
     self.attachment = MessageAttachment.objects.create(
         name=self.file.name, file=self.file, message=self.message)
     self.attachment.save()
Example #8
0
 def setUp(self):
     self.user1 = User(username='******')
     self.user1.set_password('12345')
     self.user1.save()
     self.teacher = Professor(user=self.user1)
     self.teacher.save()
     self.user2 = User(username="******")
     self.user2.save()
     self.student = Student(user=self.user2)
     self.student.save()
     self.stage = Stage(id=1, name="Stage1", level=1)
     self.stage.save()
     self.lesson = Lesson(id=1, name="Lesson 1", stage_id=1)
     self.lesson.save()
     self.skill1 = Skill(code=422230,
                         name="Compter deux par deux",
                         description="")
     self.skill1.save()
     self.skill2 = Skill(code=422231,
                         name="Lacer ses chaussures",
                         description="")
     self.skill2.save()
     self.c = Client()
     self.c.login(username='******', password='******')
Example #9
0
def registro_usuario(request, user=None):
    """Rotina para cadastrar usuário no sistema."""
    if not user:
        usuario = PFEUser.create()
    else:
        usuario = user

    email = request.POST.get('email', None)
    if email:
        usuario.email = email.strip()

    tipo_de_usuario = request.POST.get('tipo_de_usuario', None)
    if tipo_de_usuario == "estudante":  # (1, 'aluno')
        usuario.tipo_de_usuario = 1
    elif tipo_de_usuario == "professor":  # (2, 'professor')
        usuario.tipo_de_usuario = 2
    elif tipo_de_usuario == "parceiro":  # (3, 'parceiro')
        usuario.tipo_de_usuario = 3
    else:
        # (4, 'administrador')
        return ("Algum erro não identificado.", 401)

    # se for um usuário novo
    if not user:
        if usuario.tipo_de_usuario == 1 or usuario.tipo_de_usuario == 2:
            username = request.POST['email'].split("@")[0]
        elif usuario.tipo_de_usuario == 3:
            username = request.POST['email'].split("@")[0] + "." + \
                request.POST['email'].split("@")[1].split(".")[0]
        else:
            return ("Algum erro não identificado.", 401)

        if PFEUser.objects.exclude(pk=usuario.pk).filter(
                username=username).exists():
            return ('Username "%s" já está sendo usado.' % username, 401)

        usuario.username = username

    if 'nome' in request.POST and len(request.POST['nome'].split()) > 1:
        usuario.first_name = request.POST['nome'].split()[0]
        usuario.last_name = " ".join(request.POST['nome'].split()[1:])
    else:
        return ("Erro: Não inserido nome completo no formulário.", 401)

    if 'genero' in request.POST:
        if request.POST['genero'] == "masculino":
            usuario.genero = "M"
        elif request.POST['genero'] == "feminino":
            usuario.genero = "F"
    else:
        usuario.genero = "X"

    usuario.linkedin = request.POST.get('linkedin', None)
    usuario.tipo_lingua = request.POST.get('lingua', None)

    if 'ativo' in request.POST:
        if request.POST['ativo'] == "1":
            usuario.is_active = True
        else:
            usuario.is_active = False

    usuario.save()

    if usuario.tipo_de_usuario == 1:  # estudante

        if not hasattr(user, 'aluno'):
            estudante = Aluno.create(usuario)
        else:
            estudante = user.aluno

        estudante.matricula = request.POST.get('matricula', None)

        curso = request.POST.get('curso', None)
        if curso == "computacao":
            estudante.curso = 'C'  # ('C', 'Computação'),
        elif curso == "mecanica":
            estudante.curso = 'M'  # ('M', 'Mecânica'),
        elif curso == "mecatronica":
            estudante.curso = 'X'  # ('X', 'Mecatrônica'),
        else:
            return ("Algum erro não identificado.", 401)

        try:
            estudante.anoPFE = int(request.POST['ano'])
            estudante.semestrePFE = int(request.POST['semestre'])
        except (ValueError, OverflowError, MultiValueDictKeyError):
            return ("Erro na identificação do ano e semestre.", 401)

        estudante.save()

    elif usuario.tipo_de_usuario == 2:  # professor

        if not hasattr(user, 'professor'):
            professor = Professor.create(usuario)
        else:
            professor = user.professor

        dedicacao = request.POST.get('dedicacao', None)
        if dedicacao == "ti":  # ("TI", "Tempo Integral"),
            professor.dedicacao = 'TI'
        elif dedicacao == "tp":  # ("TP", 'Tempo Parcial'),
            professor.dedicacao = 'TP'
        else:
            return ("Algum erro não identificado.", 401)

        professor.areas = request.POST.get('areas', None)
        professor.website = request.POST.get('website', None)
        professor.lattes = request.POST.get('lattes', None)

        professor.save()

        content_type = ContentType.objects.get_for_model(Professor)

        try:
            permission = Permission.objects.get(
                codename='change_professor',
                content_type=content_type,
            )
            usuario.user_permissions.add(permission)
        except Permission.DoesNotExist:
            pass  # não encontrada a permissão

        try:  # <Permission: users | Professor | Professor altera valores>
            permission = Permission.objects.get(
                codename='altera_professor',
                content_type=content_type,
            )
            usuario.user_permissions.add(permission)
        except Permission.DoesNotExist:
            pass  # não encontrada a permissão

        usuario.save()

    elif usuario.tipo_de_usuario == 3:  # Parceiro

        if not hasattr(user, 'parceiro'):
            parceiro = Parceiro.create(usuario)
        else:
            parceiro = user.parceiro

        parceiro.cargo = request.POST.get('cargo', None)
        parceiro.telefone = request.POST.get('telefone', None)
        parceiro.celular = request.POST.get('celular', None)
        parceiro.skype = request.POST.get('skype', None)
        parceiro.observacao = request.POST.get('observacao', None)

        try:
            tmp_pk = int(request.POST['organizacao'])
            parceiro.organizacao = Organizacao.objects.get(pk=tmp_pk)
        except (ValueError, OverflowError, Organizacao.DoesNotExist):
            return ("Organização não encontrada.", 401)

        parceiro.principal_contato = 'principal_contato' in request.POST

        parceiro.save()

        content_type = ContentType.objects.get_for_model(Parceiro)
        permission = Permission.objects.get(
            codename='change_parceiro',
            content_type=content_type,
        )
        usuario.user_permissions.add(permission)
        usuario.save()

    if user:
        return ("Usuário atualizado na base de dados.", 200)

    return ("Usuário inserido na base de dados.", 200)
Example #10
0
    def setUp(self):
        self.user = User(username="******")
        self.user.set_password('12345')
        self.user.save()
        self.second_user = User(username="******")
        self.second_user.set_password('12345')
        self.second_user.save()
        self.teacher_user = User(username="******")
        self.teacher_user.save()
        self.second_teacher_user = User(username="******")
        self.second_teacher_user.save()

        self.student = Student(user=self.user)
        self.student.save()
        self.second_student = Student(user=self.second_user)
        self.second_student.save()
        self.teacher = Professor(user=self.teacher_user)
        self.teacher.save()
        self.second_teacher = Professor(user=self.second_teacher_user)
        self.second_teacher.save()

        self.skill1 = Skill(id=1, name="Skill1", code="1")
        self.skill1.save()

        self.skill2 = Skill(id=2, name="Skill2", code="2")
        self.skill2.save()

        self.section = Section(id=1, name="Section1")
        self.section.save()

        self.skill3 = Skill(id=3, name="Skill3", code="3")
        self.skill3.section = self.section
        self.skill3.save()

        self.skill4 = Skill(id=4, name="Skill4", code="4")
        self.skill4.section = self.section
        self.skill4.save()

        self.stage = Stage(id=1, name="Stage1", level=1)
        self.stage.save()
        self.stage.skills.add(self.skill1)
        self.stage.skills.add(self.skill2)
        self.stage.save()

        self.second_stage = Stage(id=2, name="Stage2", level=1)
        self.second_stage.save()
        self.second_stage.skills.add(self.skill3)
        self.second_stage.skills.add(self.skill4)
        self.second_stage.save()

        self.lesson = Lesson(id=1, name="English", stage_id=1)
        self.lesson.save()
        self.lesson.students.add(self.student)
        self.lesson.students.add(self.second_student)
        self.lesson.professors.add(self.teacher)
        self.lesson.save()

        self.second_lesson = Lesson(id=2, name="French", stage_id=2)
        self.second_lesson.save()
        self.second_lesson.students.add(self.second_student)
        self.second_lesson.professors.add(self.teacher)
        self.second_lesson.save()

        self.thread = Thread(title="Help",
                             author=self.user,
                             recipient=self.teacher_user)
        self.thread.save()

        self.second_thread = Thread(title="Send help",
                                    author=self.second_user,
                                    lesson=self.second_lesson)
        self.second_thread.save()

        self.third_thread = Thread(title="Information regarding w/e",
                                   author=self.teacher_user,
                                   professor=self.teacher)
        self.third_thread.save()

        self.fourth_thread = Thread(title="Information regarding spam",
                                    author=self.teacher_user,
                                    professor=self.teacher)
        self.fourth_thread.save()

        self.c1 = Client()
        self.c1.login(username=self.user.username, password='******')

        self.c2 = Client()
        self.c2.login(username=self.second_user.username, password='******')
Example #11
0
class TestMisc(TestCase):
    def setUp(self):
        self.user = User(username="******")
        self.user.set_password('12345')
        self.user.save()
        self.second_user = User(username="******")
        self.second_user.set_password('12345')
        self.second_user.save()
        self.teacher_user = User(username="******")
        self.teacher_user.save()
        self.second_teacher_user = User(username="******")
        self.second_teacher_user.save()

        self.student = Student(user=self.user)
        self.student.save()
        self.second_student = Student(user=self.second_user)
        self.second_student.save()
        self.teacher = Professor(user=self.teacher_user)
        self.teacher.save()
        self.second_teacher = Professor(user=self.second_teacher_user)
        self.second_teacher.save()

        self.skill1 = Skill(id=1, name="Skill1", code="1")
        self.skill1.save()

        self.skill2 = Skill(id=2, name="Skill2", code="2")
        self.skill2.save()

        self.section = Section(id=1, name="Section1")
        self.section.save()

        self.skill3 = Skill(id=3, name="Skill3", code="3")
        self.skill3.section = self.section
        self.skill3.save()

        self.skill4 = Skill(id=4, name="Skill4", code="4")
        self.skill4.section = self.section
        self.skill4.save()

        self.stage = Stage(id=1, name="Stage1", level=1)
        self.stage.save()
        self.stage.skills.add(self.skill1)
        self.stage.skills.add(self.skill2)
        self.stage.save()

        self.second_stage = Stage(id=2, name="Stage2", level=1)
        self.second_stage.save()
        self.second_stage.skills.add(self.skill3)
        self.second_stage.skills.add(self.skill4)
        self.second_stage.save()

        self.lesson = Lesson(id=1, name="English", stage_id=1)
        self.lesson.save()
        self.lesson.students.add(self.student)
        self.lesson.students.add(self.second_student)
        self.lesson.professors.add(self.teacher)
        self.lesson.save()

        self.second_lesson = Lesson(id=2, name="French", stage_id=2)
        self.second_lesson.save()
        self.second_lesson.students.add(self.second_student)
        self.second_lesson.professors.add(self.teacher)
        self.second_lesson.save()

        self.thread = Thread(title="Help",
                             author=self.user,
                             recipient=self.teacher_user)
        self.thread.save()

        self.second_thread = Thread(title="Send help",
                                    author=self.second_user,
                                    lesson=self.second_lesson)
        self.second_thread.save()

        self.third_thread = Thread(title="Information regarding w/e",
                                   author=self.teacher_user,
                                   professor=self.teacher)
        self.third_thread.save()

        self.fourth_thread = Thread(title="Information regarding spam",
                                    author=self.teacher_user,
                                    professor=self.teacher)
        self.fourth_thread.save()

        self.c1 = Client()
        self.c1.login(username=self.user.username, password='******')

        self.c2 = Client()
        self.c2.login(username=self.second_user.username, password='******')

    def test_get_skills_user(self):
        skills, sections = get_skills(FakeRequest(self.user))
        self.assertEquals(len(skills), 2)

        self.assertListEqual(skills, [self.skill1, self.skill2])
        self.assertEquals(len(sections), 0)

    def test_get_skills_second_user(self):
        skills, sections = get_skills(FakeRequest(self.second_user))
        self.assertEquals(len(skills), 4)
        self.assertListEqual(
            skills, [self.skill1, self.skill2, self.skill3, self.skill4])

        self.assertEqual(len(sections), 1)
        self.assertEqual(sections[0], self.skill3.section)

    def test_get_professors_user(self):
        response = self.c1.get('/forum/write/professors/')
        json_data = json.loads(response.content)
        data = json_data["data"]

        professor = data[0]
        self.assertEquals(len(data), 1)
        self.assertEquals(
            professor, {
                "id": self.teacher.id,
                "username": self.teacher.user.username,
                "first_name": self.teacher.user.first_name,
                "last_name": self.teacher.user.last_name
            })

    def test_get_professors_second_user(self):
        response = self.c2.get('/forum/write/professors/')
        json_data = json.loads(response.content)
        data = json_data["data"]
        professor = data[0]
        self.assertEquals(len(data), 1)
        self.assertEquals(
            professor, {
                "id": self.teacher.id,
                "username": self.teacher.user.username,
                "first_name": self.teacher.user.first_name,
                "last_name": self.teacher.user.last_name
            })

    def test_get_lessons_user(self):
        response = self.c1.get('/forum/write/lessons/')
        json_data = json.loads(response.content)
        data = json_data["data"]
        self.assertEquals(len(data), 1)

        lesson = data[0]
        self.assertEqual(lesson["id"], self.lesson.id)
        self.assertEqual(lesson["name"], self.lesson.name)

    def test_get_lessons_second_user(self):
        response = self.c2.get('/forum/write/lessons/')
        json_data = json.loads(response.content)
        data = json_data["data"]

        self.assertEquals(len(data), 2)

        lesson = data[0]
        self.assertEqual(lesson["id"], self.lesson.id)
        self.assertEqual(lesson["name"], self.lesson.name)

        lesson2 = data[1]
        self.assertEqual(lesson2["id"], self.second_lesson.id)
        self.assertEqual(lesson2["name"], self.second_lesson.name)

    def test_get_users(self):
        response = self.c1.get('/forum/write/users/')
        json_data = json.loads(response.content)
        data = json_data["data"]
        users = User.objects.all()
        for i, user in enumerate(data):
            self.assertEquals(
                user, {
                    'id': users[i].id,
                    'username': users[i].username,
                    'first_name': users[i].first_name,
                    'last_name': users[i].last_name
                })
Example #12
0
class TestPostThread(TestCase):
    def setUp(self):
        self.user1 = User(username='******')
        self.user1.set_password('12345')
        self.user1.save()
        self.teacher = Professor(user=self.user1)
        self.teacher.save()
        self.user2 = User(username="******")
        self.user2.save()
        self.student = Student(user=self.user2)
        self.student.save()
        self.stage = Stage(id=1, name="Stage1", level=1)
        self.stage.save()
        self.lesson = Lesson(id=1, name="Lesson 1", stage_id=1)
        self.lesson.save()
        self.skill1 = Skill(code=422230,
                            name="Compter deux par deux",
                            description="")
        self.skill1.save()
        self.skill2 = Skill(code=422231,
                            name="Lacer ses chaussures",
                            description="")
        self.skill2.save()
        self.c = Client()
        self.c.login(username='******', password='******')

    def test_post_valid_new_public_thread(self):
        new_thread = {
            "title": "titre_1",
            "visibdata": str(self.teacher.id),
            "skills": [422230, 422231],
            "content": "message_1",
            "visibility": "public"
        }
        response = self.c.post('/forum/write/', data=new_thread)
        new_thread = Thread.objects.order_by('-pk')[0]
        last_msg = Message.objects.order_by('-pk')[0]
        self.assertEquals(response.status_code, 302)
        self.assertEquals(new_thread.title, "titre_1")
        self.assertEquals(last_msg.content, "message_1")

    def test_post_valid_new_private_thread(self):
        new_thread = {
            "title": "titre_2",
            "visibdata": str(self.user2.id),
            "skills": [422230, 422231],
            "content": "message_2",
            "visibility": "private"
        }
        response = self.c.post('/forum/write/', data=new_thread)
        new_thread = Thread.objects.order_by('-pk')[0]
        last_msg = Message.objects.order_by('-pk')[0]
        self.assertEquals(response.status_code, 302)
        self.assertEquals(new_thread.title, "titre_2")
        self.assertEquals(last_msg.content, "message_2")

    def test_post_valid_new_class_thread(self):
        new_thread = {
            "title": "titre_3",
            "visibdata": str(self.lesson.id),
            "skills": [422230, 422231],
            "content": "message_3",
            "visibility": "class"
        }
        response = self.c.post('/forum/write/', data=new_thread)
        new_thread = Thread.objects.order_by('-pk')[0]
        last_msg = Message.objects.order_by('-pk')[0]
        self.assertEquals(response.status_code, 302)
        self.assertEquals(new_thread.title, "titre_3")
        self.assertEquals(last_msg.content, "message_3")

    def test_post_invalid_new_thread_blank_req_fields(self):
        thread_cnt_before = Thread.objects.all().count()
        msg_cnt_before = Message.objects.all().count()
        new_thread = {
            "title": "",
            "visibdata": "",
            "skills": "",
            "content": "",
            "visibility": ""
        }
        response = self.c.post('/forum/write/', data=new_thread)
        self.assertEquals(response.status_code, 200)
        self.assertEquals(thread_cnt_before, Thread.objects.all().count())
        self.assertEquals(msg_cnt_before, Message.objects.all().count())

    def test_post_invalid_new_thread_unknown_skills(self):
        thread_cnt_before = Thread.objects.all().count()
        msg_cnt_before = Message.objects.all().count()
        new_thread = {
            "title": "titre_5",
            "visibdata": str(self.lesson.id),
            "skills": ["l", "m"],
            "content": "message_5",
            "visibility": "class"
        }
        response = self.c.post('/forum/write/', data=new_thread)
        self.assertEquals(response.status_code, 200)
        self.assertEquals(thread_cnt_before, Thread.objects.all().count())
        self.assertEquals(msg_cnt_before, Message.objects.all().count())

    def test_post_invalid_new_private_thread_unknown_recipient(self):
        thread_cnt_before = Thread.objects.all().count()
        msg_cnt_before = Message.objects.all().count()
        new_thread = {
            "title": "titre_6",
            "visibdata": "unknown",
            "skills": "422230 422231",
            "content": "message_6",
            "visibility": "private"
        }
        response = self.c.post('/forum/write/', data=new_thread)
        self.assertEquals(response.status_code, 200)
        self.assertEquals(thread_cnt_before, Thread.objects.all().count())
        self.assertEquals(msg_cnt_before, Message.objects.all().count())

    def test_post_invalid_new_class_thread_unknown_class(self):
        thread_cnt_before = Thread.objects.all().count()
        msg_cnt_before = Message.objects.all().count()
        new_thread = {
            "title": "titre_7",
            "visibdata": "unknown",
            "skills": [422230, 422231],
            "content": "message_7",
            "visibility": "class"
        }
        response = self.c.post('/forum/write/', data=new_thread)
        self.assertEquals(response.status_code, 200)
        self.assertEquals(thread_cnt_before, Thread.objects.all().count())
        self.assertEquals(msg_cnt_before, Message.objects.all().count())

    def test_post_invalid_new_public_thread_unknown_professor(self):
        thread_cnt_before = Thread.objects.all().count()
        msg_cnt_before = Message.objects.all().count()
        new_thread = {
            "title": "titre_8",
            "visibdata": "unknown",
            "skills": [422230, 422231],
            "content": "message_7",
            "visibility": "public"
        }
        response = self.c.post('/forum/write/', data=new_thread)
        self.assertEquals(response.status_code, 200)
        self.assertEquals(thread_cnt_before, Thread.objects.all().count())
        self.assertEquals(msg_cnt_before, Message.objects.all().count())
Example #13
0
class TestAttachment(TestCase):
    def setUp(self):
        self.first_user = User(username="******")
        self.first_user.set_password('12345')
        self.first_user.save()
        self.second_user = User(username="******")
        self.second_user.set_password('12345')
        self.second_user.save()
        self.third_user = User(username="******")
        self.third_user.save()
        self.first_student = Student(user=self.first_user)
        self.first_student.save()
        self.second_student = Student(user=self.second_user)
        self.second_student.save()
        self.teacher = Professor(user=self.third_user)
        self.teacher.save()
        self.stage = Stage(id=1, name="Stage1", level=1)
        self.stage.save()
        self.lesson = Lesson(id=1, name="Lesson 1", stage_id=1)
        self.lesson.save()
        self.thread_lesson = Thread.objects.create(author=self.first_user,
                                                   lesson=self.lesson,
                                                   title="Thread 1",
                                                   id=1)
        self.thread_lesson.save()
        self.thread_id = self.thread_lesson.id
        self.message = Message.objects.create(
            author=self.first_user,
            content="Content of message",
            thread=self.thread_lesson,
            created_date=utc.localize(datetime.now()),
            modified_date=utc.localize(datetime.now()))
        self.message.save()
        self.c = Client()
        self.c.login(username='******', password='******')
        self.c2 = Client()
        self.c2.login(username='******', password='******')
        self.file = SimpleUploadedFile('file.txt', b'OOOOOOOOOOOOOOOOOOOO')
        self.attachment = MessageAttachment.objects.create(
            name=self.file.name, file=self.file, message=self.message)
        self.attachment.save()

    def test_reply_thread_with_attachment(self):
        content = 'content of the new message'
        file = SimpleUploadedFile('file.png',
                                  b'AAAAAAAA',
                                  content_type='image/png')
        response = self.c.post('/forum/thread/{}'.format(self.thread_id),
                               data={
                                   'content': content,
                                   'file': file
                               })

        messages = Message.objects.all().filter(thread=self.thread_lesson)

        self.assertEquals(messages.last().content, content)
        self.assertTrue(messages.last().attachments()[0])
        self.assertEquals(response.status_code, 302)

    def test_reply_parent_message_with_attachment(self):
        content = 'content of the new message'
        response = self.c.post('/forum/thread/{}'.format(self.thread_id),
                               data={'content': content})

        messages = Message.objects.all().filter(thread=self.thread_lesson)

        self.assertEquals(messages.last().content, content)
        self.assertEquals(response.status_code, 302)  # 302 because redirects

        file = SimpleUploadedFile('file1',
                                  b'AAAAAAAA',
                                  content_type='image/png')
        content = 'content'
        response = self.c.post('/forum/thread/{}?reply_to={}'.format(
            self.thread_id,
            messages.last().id),
                               data={
                                   'content': content,
                                   'file': file
                               })
        self.assertEquals(response.status_code, 302)

    def test_edit_message_and_attachment(self):
        new_content = "New Content"
        new_file = SimpleUploadedFile('file.png',
                                      b'AAAAAAAA',
                                      content_type='image/png')
        response = self.c.post('/forum/thread/{}/edit/{}'.format(
            self.thread_lesson.id, self.message.id),
                               data={
                                   "content": new_content,
                                   "file": new_file
                               })

        self.assertEquals(response.status_code, 302)
        self.assertEquals(
            Message.objects.get(pk=self.message.id).content, new_content)
        self.assertFalse(
            Message.objects.get(pk=self.message.id).attachments()[0].file ==
            self.attachment.file)

    def test_delete_message_and_attachments(self):
        response = self.c.post('/forum/thread/{}/delete/{}'.format(
            self.thread_lesson.id, self.message.id))

        self.assertEquals(response.status_code, 302)
        self.assertFalse(Message.objects.filter(pk=self.message.id).exists())
        self.assertFalse(
            MessageAttachment.objects.filter(pk=self.attachment.id).exists())
Example #14
0
class TestPostReply(TestCase):
    def setUp(self):
        self.first_user = User(username="******")
        self.first_user.set_password('12345')
        self.first_user.save()
        self.second_user = User(username="******")
        self.second_user.set_password('12345')
        self.second_user.save()
        self.third_user = User(username="******")
        self.third_user.save()
        self.first_student = Student(user=self.first_user)
        self.first_student.save()
        self.second_student = Student(user=self.second_user)
        self.second_student.save()
        self.teacher = Professor(user=self.third_user)
        self.teacher.save()
        self.stage = Stage(id=1, name="Stage1", level=1)
        self.stage.save()
        self.lesson = Lesson(id=1, name="Lesson 1", stage_id=1)
        self.lesson.save()
        self.thread_lesson = Thread.objects.create(author=self.first_user,
                                                   lesson=self.lesson,
                                                   title="Thread 1",
                                                   id=1)
        self.thread_lesson.save()
        self.thread_id = self.thread_lesson.id
        self.message = Message.objects.create(
            author=self.first_user,
            content="Content of message",
            thread=self.thread_lesson,
            created_date=utc.localize(datetime.now()),
            modified_date=utc.localize(datetime.now()))
        self.message.save()
        self.c = Client()
        self.c.login(username='******', password='******')
        self.c2 = Client()
        self.c2.login(username='******', password='******')

    def test_get_thread_page(self):
        response = self.c.get('/forum/thread/{}'.format(self.thread_id))
        self.assertEquals(response.status_code, 200)

    def test_reply_thread(self):
        content = 'content of the new message'
        response = self.c.post('/forum/thread/{}'.format(self.thread_id),
                               data={'content': content})

        messages = Message.objects.all().filter(thread=self.thread_lesson)

        self.assertEquals(messages.last().content, content)
        self.assertEquals(response.status_code, 302)  # 302 because redirects

    def test_reply_thread(self):
        response = self.c.post('/forum/thread/{}'.format(self.thread_id))

        self.assertEquals(response.status_code, 400)  # 302 because redirects

    def test_reply_parent_message(self):
        content = 'content of the new message'
        response = self.c.post('/forum/thread/{}'.format(self.thread_id),
                               data={'content': content})

        messages = Message.objects.all().filter(thread=self.thread_lesson)

        self.assertEquals(messages.last().content, content)
        self.assertEquals(response.status_code, 302)  # 302 because redirects

        content = 'content'
        response = self.c.post('/forum/thread/{}?reply_to={}'.format(
            self.thread_id,
            messages.last().id),
                               data={'content': content})
        self.assertEquals(response.status_code, 302)

    def test_reply_unknown_parent_message(self):
        content = 'content'
        response = self.c.post('/forum/thread/{}?reply_to=155'.format(
            self.thread_id),
                               data={'content': content})
        self.assertEquals(response.status_code, 404)
Example #15
0
class TestGetDashboard(TestCase):
    def setUp(self):
        self.user = User(username="******")
        self.user.save()
        self.second_user = User(username="******")
        self.second_user.save()
        self.teacher_user = User(username="******")
        self.teacher_user.save()
        self.second_teacher_user = User(username="******")
        self.second_teacher_user.save()

        self.student = Student(user=self.user)
        self.student.save()
        self.second_student = Student(user=self.second_user)
        self.second_student.save()
        self.teacher = Professor(user=self.teacher_user)
        self.teacher.save()
        self.second_teacher = Professor(user=self.second_teacher_user)
        self.second_teacher.save()

        self.stage = Stage(id=1, name="Stage1", level=1)
        self.stage.save()
        self.second_stage = Stage(id=2, name="Stage2", level=1)
        self.second_stage.save()

        self.lesson = Lesson(id=1, name="English", stage_id=1)
        self.lesson.save()
        self.lesson.students.add(self.student)
        self.lesson.students.add(self.second_student)
        self.lesson.professors.add(self.teacher)
        self.lesson.save()

        self.second_lesson = Lesson(id=2, name="French", stage_id=2)
        self.second_lesson.save()
        self.second_lesson.students.add(self.second_student)
        self.second_lesson.professors.add(self.teacher)
        self.second_lesson.save()

        self.thread = Thread(title="Help",
                             author=self.user,
                             recipient=self.teacher_user)
        self.thread.save()

        self.second_thread = Thread(title="Send help",
                                    author=self.second_user,
                                    lesson=self.second_lesson)
        self.second_thread.save()

        self.third_thread = Thread(title="Information regarding w/e",
                                   author=self.teacher_user,
                                   professor=self.teacher)
        self.third_thread.save()

        self.fourth_thread = Thread(title="Information regarding spam",
                                    author=self.teacher_user,
                                    professor=self.teacher)
        self.fourth_thread.save()

    # TODO
    def test_forum_dashboard(self):
        factory = RequestFactory()
        request = factory.get("/forum/")
        request.user = self.user
        response = forum_dashboard(request)
        self.assertEquals(response.status_code, 200)

    def test_private_dashboard_empty(self):
        user = User(username="******")
        user.save()
        result = private_threads(user)
        expected = set()
        self.assertEquals(expected, result)

    def test_private_dashboard(self):
        result = private_threads(self.user)
        expected = set()
        expected.add(self.thread)
        self.assertEquals(expected, result)

    def test_public_class_dashboard_empty(self):
        user = User(username="******")
        user.save()
        student = Student(user=user)
        student.save()
        result = public_class_threads(student)
        expected = set()
        self.assertEquals(expected, result)

    def test_public_class_dashboard(self):
        result = public_class_threads(self.second_student)
        expected = set()
        expected.add(self.second_thread)
        self.assertEquals(expected, result)

    def test_public_teacher_dashboard_empty(self):
        user = User(username="******")
        user.save()
        student = Student(user=user)
        student.save()
        result = public_teacher_threads_student(student)
        expected = set()
        self.assertEquals(expected, result)

    def test_public_class_dashboard_teacher(self):
        result = public_teacher_threads_student(self.teacher)
        expected = set()
        expected.add(self.third_thread)
        expected.add(self.fourth_thread)
        self.assertEquals(expected, result)

    def test_get_thread_set_teacher(self):
        result = get_thread_set(self.teacher_user)
        expected = set()
        expected.add(self.thread)
        expected.add(self.second_thread)
        expected.add(self.third_thread)
        expected.add(self.fourth_thread)
        self.assertEquals(expected, result)
Example #16
0
class TestResources(TestCase):
    def setUp(self):
        self.user = User(username="******")
        self.user.set_password('12345')
        self.user.save()
        self.teacher_user = User(username="******")
        self.teacher_user.set_password('12345')
        self.teacher_user.save()

        self.student = Student(user=self.user)
        self.student.save()
        self.teacher = Professor(user=self.teacher_user)
        self.teacher.save()

        res1_content = {"title": "Res1"}
        self.res1 = Resource(added_by=self.teacher_user, content=res1_content)
        self.res1.save()

        self.section = Section(id=1, name="Section1")
        self.section.save()
        self.section.resource.add(self.res1)
        self.section.save()

        self.skill2 = Skill(id=2, name="Skill2", code="2")
        self.skill2.save()

        res2_content = {"title": "Res2"}
        self.res2 = Resource(added_by=self.teacher_user, content=res2_content)
        self.res2.save()

        self.skill3 = Skill(id=3, name="Skill3", code="3")
        self.skill3.save()
        self.skill3.resource.add(self.res2)
        self.skill3.save()

        self.skill4 = Skill(id=4, name="Skill4", code="4")
        self.skill4.section = self.section
        self.skill4.save()

        self.stage = Stage(id=1, name="Stage1", level=1)
        self.stage.save()
        self.stage.skills.add(self.skill3)
        self.stage.skills.add(self.skill4)
        self.stage.save()

        self.lesson = Lesson(id=1, name="English", stage_id=1)
        self.lesson.save()
        self.lesson.students.add(self.student)
        self.lesson.professors.add(self.teacher)
        self.lesson.save()

        self.s1 = Client()
        self.s1.login(username=self.user.username, password='******')

        self.t1 = Client()
        self.t1.login(username=self.teacher_user.username, password='******')

    def test_get_all_resources(self):
        response = self.s1.get('/forum/write/resources/')
        json_data = json.loads(response.content)
        data = json_data["data"]

        self.assertEquals(len(data), 2)

        correct_ids = [self.res1.id, self.res2.id]
        self.assertTrue(data[0]["id"] in correct_ids)
        self.assertTrue(data[1]["id"] in correct_ids)

    def test_get_section_resources(self):
        response = self.s1.get(
            '/forum/write/resources/?section={0}&skills[]={1}'.format(
                self.section.id, 0))
        json_data = json.loads(response.content)
        data = json_data["data"]

        self.assertEquals(len(data), 1)

        self.assertEquals(data[0]["title"], self.res1.content['title'])

    def test_get_skills_resources(self):
        response = self.s1.get(
            '/forum/write/resources/?skills[]={0}&section={1}'.format(
                self.skill3.id, 0))
        json_data = json.loads(response.content)
        data = json_data["data"]

        self.assertEquals(len(data), 1)

        self.assertEquals(data[0]["title"], self.res2.content['title'])