Code Duplication    Length = 122-123 lines in 2 locations

backend/tracim_backend/tests/functional/test_user.py 1 location

@@ 788-910 (lines=123) @@
785
        # folder subcontent modification does not change folder order
786
        assert res[6]['content_id'] == main_folder.content_id
787
788
    def test_api__get_read_status__ok__200__user_itself(self):
789
790
        # init DB
791
        dbsession = get_tm_session(self.session_factory, transaction.manager)
792
        admin = dbsession.query(models.User) \
793
            .filter(models.User.email == '[email protected]') \
794
            .one()
795
        workspace_api = WorkspaceApi(
796
            current_user=admin,
797
            session=dbsession,
798
            config=self.app_config
799
800
        )
801
        workspace = WorkspaceApi(
802
            current_user=admin,
803
            session=dbsession,
804
            config=self.app_config,
805
        ).create_workspace(
806
            'test workspace',
807
            save_now=True
808
        )
809
        workspace2 = WorkspaceApi(
810
            current_user=admin,
811
            session=dbsession,
812
            config=self.app_config,
813
        ).create_workspace(
814
            'test workspace2',
815
            save_now=True
816
        )
817
        uapi = UserApi(
818
            current_user=admin,
819
            session=dbsession,
820
            config=self.app_config,
821
        )
822
        gapi = GroupApi(
823
            current_user=admin,
824
            session=dbsession,
825
            config=self.app_config,
826
        )
827
        groups = [gapi.get_one_with_name('users')]
828
        test_user = uapi.create_user(
829
            email='[email protected]',
830
            password='pass',
831
            name='bob',
832
            groups=groups,
833
            timezone='Europe/Paris',
834
            lang='fr',
835
            do_save=True,
836
            do_notify=False,
837
        )
838
        rapi = RoleApi(
839
            current_user=admin,
840
            session=dbsession,
841
            config=self.app_config,
842
        )
843
        rapi.create_one(test_user, workspace, UserRoleInWorkspace.READER, False)
844
        api = ContentApi(
845
            current_user=admin,
846
            session=dbsession,
847
            config=self.app_config,
848
        )
849
        main_folder_workspace2 = api.create(content_type_list.Folder.slug, workspace2, None, 'Hepla', '', True)  # nopep8
850
        main_folder = api.create(content_type_list.Folder.slug, workspace, None, 'this is randomized folder', '', True)  # nopep8
851
        # creation order test
852
        firstly_created = api.create(content_type_list.Page.slug, workspace, main_folder, 'creation_order_test', '', True)  # nopep8
853
        secondly_created = api.create(content_type_list.Page.slug, workspace, main_folder, 'another creation_order_test', '', True)  # nopep8
854
        # update order test
855
        firstly_created_but_recently_updated = api.create(content_type_list.Page.slug, workspace, main_folder, 'update_order_test', '', True)  # nopep8
856
        secondly_created_but_not_updated = api.create(content_type_list.Page.slug, workspace, main_folder, 'another update_order_test', '', True)  # nopep8
857
        with new_revision(
858
            session=dbsession,
859
            tm=transaction.manager,
860
            content=firstly_created_but_recently_updated,
861
        ):
862
            firstly_created_but_recently_updated.description = 'Just an update'
863
        api.save(firstly_created_but_recently_updated)
864
        # comment change order
865
        firstly_created_but_recently_commented = api.create(content_type_list.Page.slug, workspace, main_folder, 'this is randomized label content', '', True)  # nopep8
866
        secondly_created_but_not_commented = api.create(content_type_list.Page.slug, workspace, main_folder, 'this is another randomized label content', '', True)  # nopep8
867
        comments = api.create_comment(workspace, firstly_created_but_recently_commented, 'juste a super comment', True)  # nopep8
868
        content_workspace_2 = api.create(content_type_list.Page.slug, workspace2, main_folder_workspace2, 'content_workspace_2', '', True)  # nopep8
869
        dbsession.flush()
870
        transaction.commit()
871
872
        self.testapp.authorization = (
873
            'Basic',
874
            (
875
                '[email protected]',
876
                'pass'
877
            )
878
        )
879
        selected_contents_id = [
880
            firstly_created_but_recently_commented.content_id,
881
            firstly_created_but_recently_updated.content_id,
882
            firstly_created.content_id,
883
            main_folder.content_id,
884
        ]
885
        url = '/api/v2/users/{user_id}/workspaces/{workspace_id}/contents/read_status?contents_ids={cid1}&contents_ids={cid2}&contents_ids={cid3}&contents_ids={cid4}'.format(  # nopep8
886
              workspace_id=workspace.workspace_id,
887
              cid1=selected_contents_id[0],
888
              cid2=selected_contents_id[1],
889
              cid3=selected_contents_id[2],
890
              cid4=selected_contents_id[3],
891
              user_id=test_user.user_id,
892
        )
893
        res = self.testapp.get(
894
            url=url,
895
            status=200,
896
        )
897
        res = res.json_body
898
        assert len(res) == 4
899
        for elem in res:
900
            assert isinstance(elem['content_id'], int)
901
            assert isinstance(elem['read_by_user'], bool)
902
        # comment is newest than page2
903
        assert res[0]['content_id'] == firstly_created_but_recently_commented.content_id
904
        # last updated content is newer than other one despite creation
905
        # of the other is more recent
906
        assert res[1]['content_id'] == firstly_created_but_recently_updated.content_id
907
        # creation order is inverted here as last created is last active
908
        assert res[2]['content_id'] == firstly_created.content_id
909
        # folder subcontent modification does not change folder order
910
        assert res[3]['content_id'] == main_folder.content_id
911
912
    def test_api__get_read_status__err__403__other_user(self):
913

backend/tracim_backend/tests/functional/test_account.py 1 location

@@ 356-477 (lines=122) @@
353
    """
354
    Tests for /api/v2/users/{user_id}/workspaces/{workspace_id}/contents/read_status # nopep8
355
    """
356
    def test_api__get_read_status__ok__200__nominal(self):
357
358
        # init DB
359
        dbsession = get_tm_session(self.session_factory, transaction.manager)
360
        admin = dbsession.query(models.User) \
361
            .filter(models.User.email == '[email protected]') \
362
            .one()
363
        workspace_api = WorkspaceApi(
364
            current_user=admin,
365
            session=dbsession,
366
            config=self.app_config
367
368
        )
369
        workspace = WorkspaceApi(
370
            current_user=admin,
371
            session=dbsession,
372
            config=self.app_config,
373
        ).create_workspace(
374
            'test workspace',
375
            save_now=True
376
        )
377
        workspace2 = WorkspaceApi(
378
            current_user=admin,
379
            session=dbsession,
380
            config=self.app_config,
381
        ).create_workspace(
382
            'test workspace2',
383
            save_now=True
384
        )
385
        uapi = UserApi(
386
            current_user=admin,
387
            session=dbsession,
388
            config=self.app_config,
389
        )
390
        gapi = GroupApi(
391
            current_user=admin,
392
            session=dbsession,
393
            config=self.app_config,
394
        )
395
        groups = [gapi.get_one_with_name('users')]
396
        test_user = uapi.create_user(
397
            email='[email protected]',
398
            password='pass',
399
            name='bob',
400
            groups=groups,
401
            timezone='Europe/Paris',
402
            lang='fr',
403
            do_save=True,
404
            do_notify=False,
405
        )
406
        rapi = RoleApi(
407
            current_user=admin,
408
            session=dbsession,
409
            config=self.app_config,
410
        )
411
        rapi.create_one(test_user, workspace, UserRoleInWorkspace.READER, False)
412
        api = ContentApi(
413
            current_user=admin,
414
            session=dbsession,
415
            config=self.app_config,
416
        )
417
        main_folder_workspace2 = api.create(content_type_list.Folder.slug, workspace2, None, 'Hepla', '', True)  # nopep8
418
        main_folder = api.create(content_type_list.Folder.slug, workspace, None, 'this is randomized folder', '', True)  # nopep8
419
        # creation order test
420
        firstly_created = api.create(content_type_list.Page.slug, workspace, main_folder, 'creation_order_test', '', True)  # nopep8
421
        secondly_created = api.create(content_type_list.Page.slug, workspace, main_folder, 'another creation_order_test', '', True)  # nopep8
422
        # update order test
423
        firstly_created_but_recently_updated = api.create(content_type_list.Page.slug, workspace, main_folder, 'update_order_test', '', True)  # nopep8
424
        secondly_created_but_not_updated = api.create(content_type_list.Page.slug, workspace, main_folder, 'another update_order_test', '', True)  # nopep8
425
        with new_revision(
426
            session=dbsession,
427
            tm=transaction.manager,
428
            content=firstly_created_but_recently_updated,
429
        ):
430
            firstly_created_but_recently_updated.description = 'Just an update'
431
        api.save(firstly_created_but_recently_updated)
432
        # comment change order
433
        firstly_created_but_recently_commented = api.create(content_type_list.Page.slug, workspace, main_folder, 'this is randomized label content', '', True)  # nopep8
434
        secondly_created_but_not_commented = api.create(content_type_list.Page.slug, workspace, main_folder, 'this is another randomized label content', '', True)  # nopep8
435
        comments = api.create_comment(workspace, firstly_created_but_recently_commented, 'juste a super comment', True)  # nopep8
436
        content_workspace_2 = api.create(content_type_list.Page.slug, workspace2, main_folder_workspace2, 'content_workspace_2', '', True)  # nopep8
437
        dbsession.flush()
438
        transaction.commit()
439
440
        self.testapp.authorization = (
441
            'Basic',
442
            (
443
                '[email protected]',
444
                'pass'
445
            )
446
        )
447
        selected_contents_id = [
448
            firstly_created_but_recently_commented.content_id,
449
            firstly_created_but_recently_updated.content_id,
450
            firstly_created.content_id,
451
            main_folder.content_id,
452
        ]
453
        url = '/api/v2/users/me/workspaces/{workspace_id}/contents/read_status?contents_ids={cid1}&contents_ids={cid2}&contents_ids={cid3}&contents_ids={cid4}'.format(  # nopep8
454
              workspace_id=workspace.workspace_id,
455
              cid1=selected_contents_id[0],
456
              cid2=selected_contents_id[1],
457
              cid3=selected_contents_id[2],
458
              cid4=selected_contents_id[3],
459
        )
460
        res = self.testapp.get(
461
            url=url,
462
            status=200,
463
        )
464
        res = res.json_body
465
        assert len(res) == 4
466
        for elem in res:
467
            assert isinstance(elem['content_id'], int)
468
            assert isinstance(elem['read_by_user'], bool)
469
        # comment is newest than page2
470
        assert res[0]['content_id'] == firstly_created_but_recently_commented.content_id
471
        # last updated content is newer than other one despite creation
472
        # of the other is more recent
473
        assert res[1]['content_id'] == firstly_created_but_recently_updated.content_id
474
        # creation order is inverted here as last created is last active
475
        assert res[2]['content_id'] == firstly_created.content_id
476
        # folder subcontent modification does not change folder order
477
        assert res[3]['content_id'] == main_folder.content_id
478
479
480
class TestUserSetContentAsRead(FunctionalTest):