Code Duplication    Length = 220-220 lines in 2 locations

backend/tracim_backend/tests/functional/test_user.py 2 locations

@@ 2799-3018 (lines=220) @@
2796
        assert res.json_body['code'] == error.INSUFFICIENT_USER_PROFILE
2797
2798
2799
class TestUserDisableWorkspaceNotification(FunctionalTest):
2800
    """
2801
    Tests for /api/v2/users/{user_id}/workspaces/{workspace_id}/notifications/deactivate  # nopep8
2802
    """
2803
    def test_api_disable_user_workspace_notification__ok__200__admin(self):
2804
        # init DB
2805
        dbsession = get_tm_session(self.session_factory, transaction.manager)
2806
        admin = dbsession.query(models.User) \
2807
            .filter(models.User.email == '[email protected]') \
2808
            .one()
2809
        workspace_api = WorkspaceApi(
2810
            current_user=admin,
2811
            session=dbsession,
2812
            config=self.app_config
2813
2814
        )
2815
        workspace = WorkspaceApi(
2816
            current_user=admin,
2817
            session=dbsession,
2818
            config=self.app_config,
2819
        ).create_workspace(
2820
            'test workspace',
2821
            save_now=True
2822
        )
2823
        uapi = UserApi(
2824
            current_user=admin,
2825
            session=dbsession,
2826
            config=self.app_config,
2827
        )
2828
        gapi = GroupApi(
2829
            current_user=admin,
2830
            session=dbsession,
2831
            config=self.app_config,
2832
        )
2833
        groups = [gapi.get_one_with_name('users')]
2834
        test_user = uapi.create_user(
2835
            email='[email protected]',
2836
            password='pass',
2837
            name='bob',
2838
            groups=groups,
2839
            timezone='Europe/Paris',
2840
            lang='fr',
2841
            do_save=True,
2842
            do_notify=False,
2843
        )
2844
        rapi = RoleApi(
2845
            current_user=admin,
2846
            session=dbsession,
2847
            config=self.app_config,
2848
        )
2849
        rapi.create_one(test_user, workspace, UserRoleInWorkspace.READER, with_notif=True)  # nopep8
2850
        transaction.commit()
2851
        role = rapi.get_one(test_user.user_id, workspace.workspace_id)
2852
        assert role.do_notify is True
2853
        self.testapp.authorization = (
2854
            'Basic',
2855
            (
2856
                '[email protected]',
2857
                '[email protected]'
2858
            )
2859
        )
2860
        self.testapp.put_json('/api/v2/users/{user_id}/workspaces/{workspace_id}/notifications/deactivate'.format(  # nopep8
2861
            user_id=test_user.user_id,
2862
            workspace_id=workspace.workspace_id
2863
        ), status=204)
2864
2865
        dbsession = get_tm_session(self.session_factory, transaction.manager)
2866
        rapi = RoleApi(
2867
            current_user=admin,
2868
            session=dbsession,
2869
            config=self.app_config,
2870
        )
2871
        role = rapi.get_one(test_user.user_id, workspace.workspace_id)
2872
        assert role.do_notify is False
2873
2874
    def test_api_enable_user_workspace_notification__ok__200__user_itself(self):
2875
        # init DB
2876
        dbsession = get_tm_session(self.session_factory, transaction.manager)
2877
        admin = dbsession.query(models.User) \
2878
            .filter(models.User.email == '[email protected]') \
2879
            .one()
2880
        workspace_api = WorkspaceApi(
2881
            current_user=admin,
2882
            session=dbsession,
2883
            config=self.app_config
2884
2885
        )
2886
        workspace = WorkspaceApi(
2887
            current_user=admin,
2888
            session=dbsession,
2889
            config=self.app_config,
2890
        ).create_workspace(
2891
            'test workspace',
2892
            save_now=True
2893
        )
2894
        uapi = UserApi(
2895
            current_user=admin,
2896
            session=dbsession,
2897
            config=self.app_config,
2898
        )
2899
        gapi = GroupApi(
2900
            current_user=admin,
2901
            session=dbsession,
2902
            config=self.app_config,
2903
        )
2904
        groups = [gapi.get_one_with_name('users')]
2905
        test_user = uapi.create_user(
2906
            email='[email protected]',
2907
            password='pass',
2908
            name='bob',
2909
            groups=groups,
2910
            timezone='Europe/Paris',
2911
            lang='fr',
2912
            do_save=True,
2913
            do_notify=False,
2914
        )
2915
        rapi = RoleApi(
2916
            current_user=admin,
2917
            session=dbsession,
2918
            config=self.app_config,
2919
        )
2920
        rapi.create_one(test_user, workspace, UserRoleInWorkspace.READER, with_notif=True)  # nopep8
2921
        transaction.commit()
2922
        role = rapi.get_one(test_user.user_id, workspace.workspace_id)
2923
        assert role.do_notify is True
2924
        self.testapp.authorization = (
2925
            'Basic',
2926
            (
2927
                '[email protected]',
2928
                'pass',
2929
            )
2930
        )
2931
        self.testapp.put_json('/api/v2/users/{user_id}/workspaces/{workspace_id}/notifications/deactivate'.format(  # nopep8
2932
            user_id=test_user.user_id,
2933
            workspace_id=workspace.workspace_id
2934
        ), status=204)
2935
        dbsession = get_tm_session(self.session_factory, transaction.manager)
2936
        rapi = RoleApi(
2937
            current_user=admin,
2938
            session=dbsession,
2939
            config=self.app_config,
2940
        )
2941
        role = rapi.get_one(test_user.user_id, workspace.workspace_id)
2942
        assert role.do_notify is False
2943
2944
    def test_api_disable_user_workspace_notification__err__403__other_user(self):
2945
        # init DB
2946
        dbsession = get_tm_session(self.session_factory, transaction.manager)
2947
        admin = dbsession.query(models.User) \
2948
            .filter(models.User.email == '[email protected]') \
2949
            .one()
2950
        workspace_api = WorkspaceApi(
2951
            current_user=admin,
2952
            session=dbsession,
2953
            config=self.app_config
2954
2955
        )
2956
        workspace = WorkspaceApi(
2957
            current_user=admin,
2958
            session=dbsession,
2959
            config=self.app_config,
2960
        ).create_workspace(
2961
            'test workspace',
2962
            save_now=True
2963
        )
2964
        uapi = UserApi(
2965
            current_user=admin,
2966
            session=dbsession,
2967
            config=self.app_config,
2968
        )
2969
        gapi = GroupApi(
2970
            current_user=admin,
2971
            session=dbsession,
2972
            config=self.app_config,
2973
        )
2974
        groups = [gapi.get_one_with_name('users')]
2975
        test_user = uapi.create_user(
2976
            email='[email protected]',
2977
            password='pass',
2978
            name='bob',
2979
            groups=groups,
2980
            timezone='Europe/Paris',
2981
            lang='fr',
2982
            do_save=True,
2983
            do_notify=False,
2984
        )
2985
        test_user2 = uapi.create_user(
2986
            email='[email protected]',
2987
            password='pass',
2988
            name='boby',
2989
            groups=groups,
2990
            timezone='Europe/Paris',
2991
            lang='fr',
2992
            do_save=True,
2993
            do_notify=False,
2994
        )
2995
        rapi = RoleApi(
2996
            current_user=admin,
2997
            session=dbsession,
2998
            config=self.app_config,
2999
        )
3000
        rapi.create_one(test_user, workspace, UserRoleInWorkspace.READER, with_notif=True)  # nopep8
3001
        rapi.create_one(test_user2, workspace, UserRoleInWorkspace.READER, with_notif=False)  # nopep8
3002
        transaction.commit()
3003
        role = rapi.get_one(test_user.user_id, workspace.workspace_id)
3004
        assert role.do_notify is True
3005
        self.testapp.authorization = (
3006
            'Basic',
3007
            (
3008
                '[email protected]',
3009
                'pass',
3010
            )
3011
        )
3012
        res = self.testapp.put_json('/api/v2/users/{user_id}/workspaces/{workspace_id}/notifications/deactivate'.format(  # nopep8
3013
            user_id=test_user.user_id,
3014
            workspace_id=workspace.workspace_id
3015
        ), status=403)
3016
        assert isinstance(res.json, dict)
3017
        assert 'code' in res.json.keys()
3018
        assert res.json_body['code'] == error.INSUFFICIENT_USER_PROFILE
3019
3020
3021
class TestUserWorkspaceEndpoint(FunctionalTest):
@@ 2577-2796 (lines=220) @@
2574
        assert res.json_body['code'] == error.INSUFFICIENT_USER_PROFILE
2575
2576
2577
class TestUserEnableWorkspaceNotification(FunctionalTest):
2578
    """
2579
    Tests for /api/v2/users/{user_id}/workspaces/{workspace_id}/notifications/activate
2580
    """
2581
    def test_api_enable_user_workspace_notification__ok__200__admin(self):
2582
        # init DB
2583
        dbsession = get_tm_session(self.session_factory, transaction.manager)
2584
        admin = dbsession.query(models.User) \
2585
            .filter(models.User.email == '[email protected]') \
2586
            .one()
2587
        workspace_api = WorkspaceApi(
2588
            current_user=admin,
2589
            session=dbsession,
2590
            config=self.app_config
2591
2592
        )
2593
        workspace = WorkspaceApi(
2594
            current_user=admin,
2595
            session=dbsession,
2596
            config=self.app_config,
2597
        ).create_workspace(
2598
            'test workspace',
2599
            save_now=True
2600
        )
2601
        uapi = UserApi(
2602
            current_user=admin,
2603
            session=dbsession,
2604
            config=self.app_config,
2605
        )
2606
        gapi = GroupApi(
2607
            current_user=admin,
2608
            session=dbsession,
2609
            config=self.app_config,
2610
        )
2611
        groups = [gapi.get_one_with_name('users')]
2612
        test_user = uapi.create_user(
2613
            email='[email protected]',
2614
            password='pass',
2615
            name='bob',
2616
            groups=groups,
2617
            timezone='Europe/Paris',
2618
            lang='fr',
2619
            do_save=True,
2620
            do_notify=False,
2621
        )
2622
        rapi = RoleApi(
2623
            current_user=admin,
2624
            session=dbsession,
2625
            config=self.app_config,
2626
        )
2627
        rapi.create_one(test_user, workspace, UserRoleInWorkspace.READER, with_notif=False)  # nopep8
2628
        transaction.commit()
2629
        role = rapi.get_one(test_user.user_id, workspace.workspace_id)
2630
        assert role.do_notify is False
2631
        self.testapp.authorization = (
2632
            'Basic',
2633
            (
2634
                '[email protected]',
2635
                '[email protected]'
2636
            )
2637
        )
2638
        self.testapp.put_json('/api/v2/users/{user_id}/workspaces/{workspace_id}/notifications/activate'.format(  # nopep8
2639
            user_id=test_user.user_id,
2640
            workspace_id=workspace.workspace_id
2641
        ), status=204)
2642
        dbsession = get_tm_session(self.session_factory, transaction.manager)
2643
        rapi = RoleApi(
2644
            current_user=admin,
2645
            session=dbsession,
2646
            config=self.app_config,
2647
        )
2648
        role = rapi.get_one(test_user.user_id, workspace.workspace_id)
2649
        assert role.do_notify is True
2650
2651
    def test_api_enable_user_workspace_notification__ok__200__user_itself(self):
2652
        # init DB
2653
        dbsession = get_tm_session(self.session_factory, transaction.manager)
2654
        admin = dbsession.query(models.User) \
2655
            .filter(models.User.email == '[email protected]') \
2656
            .one()
2657
        workspace_api = WorkspaceApi(
2658
            current_user=admin,
2659
            session=dbsession,
2660
            config=self.app_config
2661
2662
        )
2663
        workspace = WorkspaceApi(
2664
            current_user=admin,
2665
            session=dbsession,
2666
            config=self.app_config,
2667
        ).create_workspace(
2668
            'test workspace',
2669
            save_now=True
2670
        )
2671
        uapi = UserApi(
2672
            current_user=admin,
2673
            session=dbsession,
2674
            config=self.app_config,
2675
        )
2676
        gapi = GroupApi(
2677
            current_user=admin,
2678
            session=dbsession,
2679
            config=self.app_config,
2680
        )
2681
        groups = [gapi.get_one_with_name('users')]
2682
        test_user = uapi.create_user(
2683
            email='[email protected]',
2684
            password='pass',
2685
            name='bob',
2686
            groups=groups,
2687
            timezone='Europe/Paris',
2688
            lang='fr',
2689
            do_save=True,
2690
            do_notify=False,
2691
        )
2692
        rapi = RoleApi(
2693
            current_user=admin,
2694
            session=dbsession,
2695
            config=self.app_config,
2696
        )
2697
        rapi.create_one(test_user, workspace, UserRoleInWorkspace.READER, with_notif=False)  # nopep8
2698
        transaction.commit()
2699
        role = rapi.get_one(test_user.user_id, workspace.workspace_id)
2700
        assert role.do_notify is False
2701
        self.testapp.authorization = (
2702
            'Basic',
2703
            (
2704
                '[email protected]',
2705
                'pass',
2706
            )
2707
        )
2708
        self.testapp.put_json('/api/v2/users/{user_id}/workspaces/{workspace_id}/notifications/activate'.format(  # nopep8
2709
            user_id=test_user.user_id,
2710
            workspace_id=workspace.workspace_id
2711
        ), status=204)
2712
2713
        dbsession = get_tm_session(self.session_factory, transaction.manager)
2714
        rapi = RoleApi(
2715
            current_user=admin,
2716
            session=dbsession,
2717
            config=self.app_config,
2718
        )
2719
        role = rapi.get_one(test_user.user_id, workspace.workspace_id)
2720
        assert role.do_notify is True
2721
2722
    def test_api_enable_user_workspace_notification__err__403__other_user(self):
2723
        # init DB
2724
        dbsession = get_tm_session(self.session_factory, transaction.manager)
2725
        admin = dbsession.query(models.User) \
2726
            .filter(models.User.email == '[email protected]') \
2727
            .one()
2728
        workspace_api = WorkspaceApi(
2729
            current_user=admin,
2730
            session=dbsession,
2731
            config=self.app_config
2732
2733
        )
2734
        workspace = WorkspaceApi(
2735
            current_user=admin,
2736
            session=dbsession,
2737
            config=self.app_config,
2738
        ).create_workspace(
2739
            'test workspace',
2740
            save_now=True
2741
        )
2742
        uapi = UserApi(
2743
            current_user=admin,
2744
            session=dbsession,
2745
            config=self.app_config,
2746
        )
2747
        gapi = GroupApi(
2748
            current_user=admin,
2749
            session=dbsession,
2750
            config=self.app_config,
2751
        )
2752
        groups = [gapi.get_one_with_name('users')]
2753
        test_user = uapi.create_user(
2754
            email='[email protected]',
2755
            password='pass',
2756
            name='bob',
2757
            groups=groups,
2758
            timezone='Europe/Paris',
2759
            lang='fr',
2760
            do_save=True,
2761
            do_notify=False,
2762
        )
2763
        test_user2 = uapi.create_user(
2764
            email='[email protected]',
2765
            password='pass',
2766
            name='boby',
2767
            groups=groups,
2768
            timezone='Europe/Paris',
2769
            lang='fr',
2770
            do_save=True,
2771
            do_notify=False,
2772
        )
2773
        rapi = RoleApi(
2774
            current_user=admin,
2775
            session=dbsession,
2776
            config=self.app_config,
2777
        )
2778
        rapi.create_one(test_user, workspace, UserRoleInWorkspace.READER, with_notif=False)  # nopep8
2779
        rapi.create_one(test_user2, workspace, UserRoleInWorkspace.READER, with_notif=False)  # nopep8
2780
        transaction.commit()
2781
        role = rapi.get_one(test_user.user_id, workspace.workspace_id)
2782
        assert role.do_notify is False
2783
        self.testapp.authorization = (
2784
            'Basic',
2785
            (
2786
                '[email protected]',
2787
                'pass',
2788
            )
2789
        )
2790
        res = self.testapp.put_json('/api/v2/users/{user_id}/workspaces/{workspace_id}/notifications/activate'.format(  # nopep8
2791
            user_id=test_user.user_id,
2792
            workspace_id=workspace.workspace_id
2793
        ), status=403)
2794
        assert isinstance(res.json, dict)
2795
        assert 'code' in res.json.keys()
2796
        assert res.json_body['code'] == error.INSUFFICIENT_USER_PROFILE
2797
2798
2799
class TestUserDisableWorkspaceNotification(FunctionalTest):