Code Duplication    Length = 358-358 lines in 2 locations

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

@@ 3624-3981 (lines=358) @@
3621
        assert res.json_body['code'] == error.INSUFFICIENT_USER_PROFILE
3622
3623
3624
class TestKnownMembersEndpoint(FunctionalTest):
3625
    # -*- coding: utf-8 -*-
3626
    """
3627
    Tests for GET /api/v2/users/{user_id}
3628
    """
3629
    fixtures = [BaseFixture]
3630
3631
    def test_api__get_user__ok_200__admin__by_name(self):
3632
        dbsession = get_tm_session(self.session_factory, transaction.manager)
3633
        admin = dbsession.query(models.User) \
3634
            .filter(models.User.email == '[email protected]') \
3635
            .one()
3636
        uapi = UserApi(
3637
            current_user=admin,
3638
            session=dbsession,
3639
            config=self.app_config,
3640
        )
3641
        gapi = GroupApi(
3642
            current_user=admin,
3643
            session=dbsession,
3644
            config=self.app_config,
3645
        )
3646
        groups = [gapi.get_one_with_name('users')]
3647
        test_user = uapi.create_user(
3648
            email='[email protected]',
3649
            password='pass',
3650
            name='bob',
3651
            groups=groups,
3652
            timezone='Europe/Paris',
3653
            lang='fr',
3654
            do_save=True,
3655
            do_notify=False,
3656
        )
3657
        test_user2 = uapi.create_user(
3658
            email='[email protected]',
3659
            password='pass',
3660
            name='bob2',
3661
            groups=groups,
3662
            timezone='Europe/Paris',
3663
            lang='fr',
3664
            do_save=True,
3665
            do_notify=False,
3666
        )
3667
        uapi.save(test_user)
3668
        uapi.save(test_user2)
3669
        transaction.commit()
3670
        user_id = int(admin.user_id)
3671
3672
        self.testapp.authorization = (
3673
            'Basic',
3674
            (
3675
                '[email protected]',
3676
                '[email protected]'
3677
            )
3678
        )
3679
        params = {
3680
            'acp': 'bob',
3681
        }
3682
        res = self.testapp.get(
3683
            '/api/v2/users/{user_id}/known_members'.format(user_id=user_id),
3684
            status=200,
3685
            params=params,
3686
        )
3687
        res = res.json_body
3688
        assert len(res) == 2
3689
        assert res[0]['user_id'] == test_user.user_id
3690
        assert res[0]['public_name'] == test_user.display_name
3691
        assert res[0]['avatar_url'] is None
3692
3693
        assert res[1]['user_id'] == test_user2.user_id
3694
        assert res[1]['public_name'] == test_user2.display_name
3695
        assert res[1]['avatar_url'] is None
3696
3697
    def test_api__get_user__ok_200__admin__by_name__deactivated_members(self):
3698
        dbsession = get_tm_session(self.session_factory, transaction.manager)
3699
        admin = dbsession.query(models.User) \
3700
            .filter(models.User.email == '[email protected]') \
3701
            .one()
3702
        uapi = UserApi(
3703
            current_user=admin,
3704
            session=dbsession,
3705
            config=self.app_config,
3706
        )
3707
        gapi = GroupApi(
3708
            current_user=admin,
3709
            session=dbsession,
3710
            config=self.app_config,
3711
        )
3712
        groups = [gapi.get_one_with_name('users')]
3713
        test_user = uapi.create_user(
3714
            email='[email protected]',
3715
            password='pass',
3716
            name='bob',
3717
            groups=groups,
3718
            timezone='Europe/Paris',
3719
            lang='fr',
3720
            do_save=True,
3721
            do_notify=False,
3722
        )
3723
        test_user2 = uapi.create_user(
3724
            email='[email protected]',
3725
            password='pass',
3726
            name='bob2',
3727
            groups=groups,
3728
            timezone='Europe/Paris',
3729
            lang='fr',
3730
            do_save=True,
3731
            do_notify=False,
3732
        )
3733
        test_user2.is_active = False
3734
        uapi.save(test_user)
3735
        uapi.save(test_user2)
3736
        transaction.commit()
3737
        user_id = int(admin.user_id)
3738
3739
        self.testapp.authorization = (
3740
            'Basic',
3741
            (
3742
                '[email protected]',
3743
                '[email protected]'
3744
            )
3745
        )
3746
        params = {
3747
            'acp': 'bob',
3748
        }
3749
        res = self.testapp.get(
3750
            '/api/v2/users/{user_id}/known_members'.format(user_id=user_id),
3751
            status=200,
3752
            params=params,
3753
        )
3754
        res = res.json_body
3755
        assert len(res) == 1
3756
        assert res[0]['user_id'] == test_user.user_id
3757
        assert res[0]['public_name'] == test_user.display_name
3758
        assert res[0]['avatar_url'] is None
3759
3760
    def test_api__get_user__ok_200__admin__by_email(self):
3761
        dbsession = get_tm_session(self.session_factory, transaction.manager)
3762
        admin = dbsession.query(models.User) \
3763
            .filter(models.User.email == '[email protected]') \
3764
            .one()
3765
        uapi = UserApi(
3766
            current_user=admin,
3767
            session=dbsession,
3768
            config=self.app_config,
3769
        )
3770
        gapi = GroupApi(
3771
            current_user=admin,
3772
            session=dbsession,
3773
            config=self.app_config,
3774
        )
3775
        groups = [gapi.get_one_with_name('users')]
3776
        test_user = uapi.create_user(
3777
            email='[email protected]',
3778
            password='pass',
3779
            name='bob',
3780
            groups=groups,
3781
            timezone='Europe/Paris',
3782
            lang='fr',
3783
            do_save=True,
3784
            do_notify=False,
3785
        )
3786
        test_user2 = uapi.create_user(
3787
            email='[email protected]',
3788
            password='pass',
3789
            name='bob2',
3790
            groups=groups,
3791
            timezone='Europe/Paris',
3792
            lang='fr',
3793
            do_save=True,
3794
            do_notify=False,
3795
        )
3796
        uapi.save(test_user)
3797
        uapi.save(test_user2)
3798
        transaction.commit()
3799
        user_id = int(admin.user_id)
3800
3801
        self.testapp.authorization = (
3802
            'Basic',
3803
            (
3804
                '[email protected]',
3805
                '[email protected]'
3806
            )
3807
        )
3808
        params = {
3809
            'acp': 'test',
3810
        }
3811
        res = self.testapp.get(
3812
            '/api/v2/users/{user_id}/known_members'.format(user_id=user_id),
3813
            status=200,
3814
            params=params,
3815
        )
3816
        res = res.json_body
3817
        assert len(res) == 2
3818
        assert res[0]['user_id'] == test_user.user_id
3819
        assert res[0]['public_name'] == test_user.display_name
3820
        assert res[0]['avatar_url'] is None
3821
3822
        assert res[1]['user_id'] == test_user2.user_id
3823
        assert res[1]['public_name'] == test_user2.display_name
3824
        assert res[1]['avatar_url'] is None
3825
3826
    def test_api__get_user__err_403__admin__too_small_acp(self):
3827
        dbsession = get_tm_session(self.session_factory, transaction.manager)
3828
        admin = dbsession.query(models.User) \
3829
            .filter(models.User.email == '[email protected]') \
3830
            .one()
3831
        uapi = UserApi(
3832
            current_user=admin,
3833
            session=dbsession,
3834
            config=self.app_config,
3835
        )
3836
        gapi = GroupApi(
3837
            current_user=admin,
3838
            session=dbsession,
3839
            config=self.app_config,
3840
        )
3841
        groups = [gapi.get_one_with_name('users')]
3842
        test_user = uapi.create_user(
3843
            email='[email protected]',
3844
            password='pass',
3845
            name='bob',
3846
            groups=groups,
3847
            timezone='Europe/Paris',
3848
            lang='fr',
3849
            do_save=True,
3850
            do_notify=False,
3851
        )
3852
        test_user2 = uapi.create_user(
3853
            email='[email protected]',
3854
            password='pass',
3855
            name='bob2',
3856
            groups=groups,
3857
            timezone='Europe/Paris',
3858
            lang='fr',
3859
            do_save=True,
3860
            do_notify=False,
3861
        )
3862
        uapi.save(test_user)
3863
        transaction.commit()
3864
        user_id = int(admin.user_id)
3865
3866
        self.testapp.authorization = (
3867
            'Basic',
3868
            (
3869
                '[email protected]',
3870
                '[email protected]'
3871
            )
3872
        )
3873
        params = {
3874
            'acp': 't',
3875
        }
3876
        res = self.testapp.get(
3877
            '/api/v2/users/{user_id}/known_members'.format(user_id=user_id),
3878
            status=400,
3879
            params=params
3880
        )
3881
        assert isinstance(res.json, dict)
3882
        assert 'code' in res.json.keys()
3883
        assert res.json_body['code'] == error.GENERIC_SCHEMA_VALIDATION_ERROR  # nopep8
3884
3885
    def test_api__get_user__ok_200__normal_user_by_email(self):
3886
        dbsession = get_tm_session(self.session_factory, transaction.manager)
3887
        admin = dbsession.query(models.User) \
3888
            .filter(models.User.email == '[email protected]') \
3889
            .one()
3890
        uapi = UserApi(
3891
            current_user=admin,
3892
            session=dbsession,
3893
            config=self.app_config,
3894
        )
3895
        gapi = GroupApi(
3896
            current_user=admin,
3897
            session=dbsession,
3898
            config=self.app_config,
3899
        )
3900
        groups = [gapi.get_one_with_name('users')]
3901
        test_user = uapi.create_user(
3902
            email='[email protected]',
3903
            password='pass',
3904
            name='bob',
3905
            groups=groups,
3906
            timezone='Europe/Paris',
3907
            lang='fr',
3908
            do_save=True,
3909
            do_notify=False,
3910
        )
3911
        test_user2 = uapi.create_user(
3912
            email='[email protected]',
3913
            password='pass',
3914
            name='bob2',
3915
            groups=groups,
3916
            timezone='Europe/Paris',
3917
            lang='fr',
3918
            do_save=True,
3919
            do_notify=False,
3920
        )
3921
        test_user3 = uapi.create_user(
3922
            email='[email protected]',
3923
            password='pass',
3924
            name='bob3',
3925
            groups=groups,
3926
            timezone='Europe/Paris',
3927
            lang='fr',
3928
            do_save=True,
3929
            do_notify=False,
3930
        )
3931
        uapi.save(test_user)
3932
        uapi.save(test_user2)
3933
        uapi.save(test_user3)
3934
        workspace_api = WorkspaceApi(
3935
            current_user=admin,
3936
            session=dbsession,
3937
            config=self.app_config
3938
3939
        )
3940
        workspace = WorkspaceApi(
3941
            current_user=admin,
3942
            session=dbsession,
3943
            config=self.app_config,
3944
        ).create_workspace(
3945
            'test workspace',
3946
            save_now=True
3947
        )
3948
        role_api = RoleApi(
3949
            current_user=admin,
3950
            session=dbsession,
3951
            config=self.app_config,
3952
        )
3953
        role_api.create_one(test_user, workspace, UserRoleInWorkspace.READER, False)
3954
        role_api.create_one(test_user2, workspace, UserRoleInWorkspace.READER, False)
3955
        transaction.commit()
3956
        user_id = int(test_user.user_id)
3957
3958
        self.testapp.authorization = (
3959
            'Basic',
3960
            (
3961
                '[email protected]',
3962
                'pass'
3963
            )
3964
        )
3965
        params = {
3966
            'acp': 'test',
3967
        }
3968
        res = self.testapp.get(
3969
            '/api/v2/users/{user_id}/known_members'.format(user_id=user_id),
3970
            status=200,
3971
            params=params
3972
        )
3973
        res = res.json_body
3974
        assert len(res) == 2
3975
        assert res[0]['user_id'] == test_user.user_id
3976
        assert res[0]['public_name'] == test_user.display_name
3977
        assert res[0]['avatar_url'] is None
3978
3979
        assert res[1]['user_id'] == test_user2.user_id
3980
        assert res[1]['public_name'] == test_user2.display_name
3981
        assert res[1]['avatar_url'] is None
3982
3983
3984
class TestSetEmailEndpoint(FunctionalTest):

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

@@ 1049-1406 (lines=358) @@
1046
        assert res['is_deleted'] is False
1047
1048
1049
class TestAccountKnownMembersEndpoint(FunctionalTest):
1050
    # -*- coding: utf-8 -*-
1051
    """
1052
    Tests for GET /api/v2/users/me
1053
    """
1054
    fixtures = [BaseFixture]
1055
1056
    def test_api__get_user__ok_200__admin__by_name(self):
1057
        dbsession = get_tm_session(self.session_factory, transaction.manager)
1058
        admin = dbsession.query(models.User) \
1059
            .filter(models.User.email == '[email protected]') \
1060
            .one()
1061
        uapi = UserApi(
1062
            current_user=admin,
1063
            session=dbsession,
1064
            config=self.app_config,
1065
        )
1066
        gapi = GroupApi(
1067
            current_user=admin,
1068
            session=dbsession,
1069
            config=self.app_config,
1070
        )
1071
        groups = [gapi.get_one_with_name('users')]
1072
        test_user = uapi.create_user(
1073
            email='[email protected]',
1074
            password='pass',
1075
            name='bob',
1076
            groups=groups,
1077
            timezone='Europe/Paris',
1078
            lang='fr',
1079
            do_save=True,
1080
            do_notify=False,
1081
        )
1082
        test_user2 = uapi.create_user(
1083
            email='[email protected]',
1084
            password='pass',
1085
            name='bob2',
1086
            groups=groups,
1087
            timezone='Europe/Paris',
1088
            lang='fr',
1089
            do_save=True,
1090
            do_notify=False,
1091
        )
1092
        uapi.save(test_user)
1093
        uapi.save(test_user2)
1094
        transaction.commit()
1095
        user_id = int(admin.user_id)
1096
1097
        self.testapp.authorization = (
1098
            'Basic',
1099
            (
1100
                '[email protected]',
1101
                '[email protected]'
1102
            )
1103
        )
1104
        params = {
1105
            'acp': 'bob',
1106
        }
1107
        res = self.testapp.get(
1108
            '/api/v2/users/me/known_members'.format(user_id=user_id),
1109
            status=200,
1110
            params=params,
1111
        )
1112
        res = res.json_body
1113
        assert len(res) == 2
1114
        assert res[0]['user_id'] == test_user.user_id
1115
        assert res[0]['public_name'] == test_user.display_name
1116
        assert res[0]['avatar_url'] is None
1117
1118
        assert res[1]['user_id'] == test_user2.user_id
1119
        assert res[1]['public_name'] == test_user2.display_name
1120
        assert res[1]['avatar_url'] is None
1121
1122
    def test_api__get_user__ok_200__admin__by_name__deactivated_members(self):
1123
        dbsession = get_tm_session(self.session_factory, transaction.manager)
1124
        admin = dbsession.query(models.User) \
1125
            .filter(models.User.email == '[email protected]') \
1126
            .one()
1127
        uapi = UserApi(
1128
            current_user=admin,
1129
            session=dbsession,
1130
            config=self.app_config,
1131
        )
1132
        gapi = GroupApi(
1133
            current_user=admin,
1134
            session=dbsession,
1135
            config=self.app_config,
1136
        )
1137
        groups = [gapi.get_one_with_name('users')]
1138
        test_user = uapi.create_user(
1139
            email='[email protected]',
1140
            password='pass',
1141
            name='bob',
1142
            groups=groups,
1143
            timezone='Europe/Paris',
1144
            lang='fr',
1145
            do_save=True,
1146
            do_notify=False,
1147
        )
1148
        test_user2 = uapi.create_user(
1149
            email='[email protected]',
1150
            password='pass',
1151
            name='bob2',
1152
            groups=groups,
1153
            timezone='Europe/Paris',
1154
            lang='fr',
1155
            do_save=True,
1156
            do_notify=False,
1157
        )
1158
        test_user2.is_active = False
1159
        uapi.save(test_user)
1160
        uapi.save(test_user2)
1161
        transaction.commit()
1162
        user_id = int(admin.user_id)
1163
1164
        self.testapp.authorization = (
1165
            'Basic',
1166
            (
1167
                '[email protected]',
1168
                '[email protected]'
1169
            )
1170
        )
1171
        params = {
1172
            'acp': 'bob',
1173
        }
1174
        res = self.testapp.get(
1175
            '/api/v2/users/me/known_members'.format(user_id=user_id),
1176
            status=200,
1177
            params=params,
1178
        )
1179
        res = res.json_body
1180
        assert len(res) == 1
1181
        assert res[0]['user_id'] == test_user.user_id
1182
        assert res[0]['public_name'] == test_user.display_name
1183
        assert res[0]['avatar_url'] is None
1184
1185
    def test_api__get_user__ok_200__admin__by_email(self):
1186
        dbsession = get_tm_session(self.session_factory, transaction.manager)
1187
        admin = dbsession.query(models.User) \
1188
            .filter(models.User.email == '[email protected]') \
1189
            .one()
1190
        uapi = UserApi(
1191
            current_user=admin,
1192
            session=dbsession,
1193
            config=self.app_config,
1194
        )
1195
        gapi = GroupApi(
1196
            current_user=admin,
1197
            session=dbsession,
1198
            config=self.app_config,
1199
        )
1200
        groups = [gapi.get_one_with_name('users')]
1201
        test_user = uapi.create_user(
1202
            email='[email protected]',
1203
            password='pass',
1204
            name='bob',
1205
            groups=groups,
1206
            timezone='Europe/Paris',
1207
            lang='fr',
1208
            do_save=True,
1209
            do_notify=False,
1210
        )
1211
        test_user2 = uapi.create_user(
1212
            email='[email protected]',
1213
            password='pass',
1214
            name='bob2',
1215
            groups=groups,
1216
            timezone='Europe/Paris',
1217
            lang='fr',
1218
            do_save=True,
1219
            do_notify=False,
1220
        )
1221
        uapi.save(test_user)
1222
        uapi.save(test_user2)
1223
        transaction.commit()
1224
        user_id = int(admin.user_id)
1225
1226
        self.testapp.authorization = (
1227
            'Basic',
1228
            (
1229
                '[email protected]',
1230
                '[email protected]'
1231
            )
1232
        )
1233
        params = {
1234
            'acp': 'test',
1235
        }
1236
        res = self.testapp.get(
1237
            '/api/v2/users/me/known_members'.format(user_id=user_id),
1238
            status=200,
1239
            params=params,
1240
        )
1241
        res = res.json_body
1242
        assert len(res) == 2
1243
        assert res[0]['user_id'] == test_user.user_id
1244
        assert res[0]['public_name'] == test_user.display_name
1245
        assert res[0]['avatar_url'] is None
1246
1247
        assert res[1]['user_id'] == test_user2.user_id
1248
        assert res[1]['public_name'] == test_user2.display_name
1249
        assert res[1]['avatar_url'] is None
1250
1251
    def test_api__get_user__err_403__admin__too_small_acp(self):
1252
        dbsession = get_tm_session(self.session_factory, transaction.manager)
1253
        admin = dbsession.query(models.User) \
1254
            .filter(models.User.email == '[email protected]') \
1255
            .one()
1256
        uapi = UserApi(
1257
            current_user=admin,
1258
            session=dbsession,
1259
            config=self.app_config,
1260
        )
1261
        gapi = GroupApi(
1262
            current_user=admin,
1263
            session=dbsession,
1264
            config=self.app_config,
1265
        )
1266
        groups = [gapi.get_one_with_name('users')]
1267
        test_user = uapi.create_user(
1268
            email='[email protected]',
1269
            password='pass',
1270
            name='bob',
1271
            groups=groups,
1272
            timezone='Europe/Paris',
1273
            lang='fr',
1274
            do_save=True,
1275
            do_notify=False,
1276
        )
1277
        test_user2 = uapi.create_user(
1278
            email='[email protected]',
1279
            password='pass',
1280
            name='bob2',
1281
            groups=groups,
1282
            timezone='Europe/Paris',
1283
            lang='fr',
1284
            do_save=True,
1285
            do_notify=False,
1286
        )
1287
        uapi.save(test_user)
1288
        transaction.commit()
1289
        user_id = int(admin.user_id)
1290
1291
        self.testapp.authorization = (
1292
            'Basic',
1293
            (
1294
                '[email protected]',
1295
                '[email protected]'
1296
            )
1297
        )
1298
        params = {
1299
            'acp': 't',
1300
        }
1301
        res = self.testapp.get(
1302
            '/api/v2/users/me/known_members'.format(user_id=user_id),
1303
            status=400,
1304
            params=params
1305
        )
1306
        assert isinstance(res.json, dict)
1307
        assert 'code' in res.json.keys()
1308
        assert res.json_body['code'] == error.GENERIC_SCHEMA_VALIDATION_ERROR  # nopep8
1309
1310
    def test_api__get_user__ok_200__normal_user_by_email(self):
1311
        dbsession = get_tm_session(self.session_factory, transaction.manager)
1312
        admin = dbsession.query(models.User) \
1313
            .filter(models.User.email == '[email protected]') \
1314
            .one()
1315
        uapi = UserApi(
1316
            current_user=admin,
1317
            session=dbsession,
1318
            config=self.app_config,
1319
        )
1320
        gapi = GroupApi(
1321
            current_user=admin,
1322
            session=dbsession,
1323
            config=self.app_config,
1324
        )
1325
        groups = [gapi.get_one_with_name('users')]
1326
        test_user = uapi.create_user(
1327
            email='[email protected]',
1328
            password='pass',
1329
            name='bob',
1330
            groups=groups,
1331
            timezone='Europe/Paris',
1332
            lang='fr',
1333
            do_save=True,
1334
            do_notify=False,
1335
        )
1336
        test_user2 = uapi.create_user(
1337
            email='[email protected]',
1338
            password='pass',
1339
            name='bob2',
1340
            groups=groups,
1341
            timezone='Europe/Paris',
1342
            lang='fr',
1343
            do_save=True,
1344
            do_notify=False,
1345
        )
1346
        test_user3 = uapi.create_user(
1347
            email='[email protected]',
1348
            password='pass',
1349
            name='bob3',
1350
            groups=groups,
1351
            timezone='Europe/Paris',
1352
            lang='fr',
1353
            do_save=True,
1354
            do_notify=False,
1355
        )
1356
        uapi.save(test_user)
1357
        uapi.save(test_user2)
1358
        uapi.save(test_user3)
1359
        workspace_api = WorkspaceApi(
1360
            current_user=admin,
1361
            session=dbsession,
1362
            config=self.app_config
1363
1364
        )
1365
        workspace = WorkspaceApi(
1366
            current_user=admin,
1367
            session=dbsession,
1368
            config=self.app_config,
1369
        ).create_workspace(
1370
            'test workspace',
1371
            save_now=True
1372
        )
1373
        role_api = RoleApi(
1374
            current_user=admin,
1375
            session=dbsession,
1376
            config=self.app_config,
1377
        )
1378
        role_api.create_one(test_user, workspace, UserRoleInWorkspace.READER, False)
1379
        role_api.create_one(test_user2, workspace, UserRoleInWorkspace.READER, False)
1380
        transaction.commit()
1381
        user_id = int(test_user.user_id)
1382
1383
        self.testapp.authorization = (
1384
            'Basic',
1385
            (
1386
                '[email protected]',
1387
                'pass'
1388
            )
1389
        )
1390
        params = {
1391
            'acp': 'test',
1392
        }
1393
        res = self.testapp.get(
1394
            '/api/v2/users/me/known_members'.format(user_id=user_id),
1395
            status=200,
1396
            params=params
1397
        )
1398
        res = res.json_body
1399
        assert len(res) == 2
1400
        assert res[0]['user_id'] == test_user.user_id
1401
        assert res[0]['public_name'] == test_user.display_name
1402
        assert res[0]['avatar_url'] is None
1403
1404
        assert res[1]['user_id'] == test_user2.user_id
1405
        assert res[1]['public_name'] == test_user2.display_name
1406
        assert res[1]['avatar_url'] is None
1407
1408
1409
class TestSetEmailEndpoint(FunctionalTest):