Code Duplication    Length = 119-121 lines in 4 locations

backend/tracim_backend/tests/library/test_content_api.py 4 locations

@@ 2227-2347 (lines=121) @@
2224
        assert content3.label == 'this_is_a_page'
2225
        assert content2_nb_rev == len(content3.revisions)
2226
2227
    def test_unit__update__err__label_dont_change(self):
2228
        uapi = UserApi(
2229
            session=self.session,
2230
            config=self.app_config,
2231
            current_user=None,
2232
        )
2233
        group_api = GroupApi(
2234
            current_user=None,
2235
            session=self.session,
2236
            config=self.app_config,
2237
        )
2238
        groups = [group_api.get_one(Group.TIM_USER),
2239
                  group_api.get_one(Group.TIM_MANAGER),
2240
                  group_api.get_one(Group.TIM_ADMIN)]
2241
2242
        user1 = uapi.create_minimal_user(
2243
            email='this.is@user',
2244
            groups=groups,
2245
            save_now=True
2246
        )
2247
2248
        workspace_api = WorkspaceApi(
2249
            current_user=user1,
2250
            session=self.session,
2251
            config=self.app_config,
2252
        )
2253
        workspace = workspace_api.create_workspace(
2254
            'test workspace',
2255
            save_now=True
2256
        )
2257
2258
        wid = workspace.workspace_id
2259
2260
        user2 = uapi.create_minimal_user('[email protected]')
2261
        uapi.save(user2)
2262
2263
        RoleApi(
2264
            current_user=user1,
2265
            session=self.session,
2266
            config=self.app_config,
2267
        ).create_one(
2268
            user2,
2269
            workspace,
2270
            UserRoleInWorkspace.CONTENT_MANAGER,
2271
            with_notif=False,
2272
            flush=True
2273
        )
2274
2275
        # Test starts here
2276
2277
        api = ContentApi(
2278
            current_user=user1,
2279
            session=self.session,
2280
            config=self.app_config,
2281
        )
2282
2283
        p = api.create(
2284
            content_type_slug=content_type_list.Page.slug,
2285
            workspace=workspace,
2286
            parent=None,
2287
            label='this_is_a_page',
2288
            do_save=True
2289
        )
2290
        p2 = api.create(
2291
            content_type_slug=content_type_list.Page.slug,
2292
            workspace=workspace,
2293
            parent=None,
2294
            label='this_is_a_page2',
2295
            do_save=True
2296
        )
2297
        u1id = user1.user_id
2298
        u2id = user2.user_id
2299
        pcid = p.content_id
2300
        poid = p.owner_id
2301
2302
        transaction.commit()
2303
2304
        # Refresh instances after commit
2305
        user1 = uapi.get_one(u1id)
2306
        workspace = WorkspaceApi(
2307
            current_user=user1,
2308
            session=self.session,
2309
            config=self.app_config,
2310
        ).get_one(wid)
2311
        api = ContentApi(
2312
            current_user=user1,
2313
            session=self.session,
2314
            config=self.app_config,
2315
        )
2316
2317
        content = api.get_one(pcid, content_type_list.Any_SLUG, workspace)
2318
        eq_(u1id, content.owner_id)
2319
        eq_(poid, content.owner_id)
2320
2321
        u2 = UserApi(
2322
            session=self.session,
2323
            config=self.app_config,
2324
            current_user=None,
2325
        ).get_one(u2id)
2326
        api2 = ContentApi(
2327
            current_user=u2,
2328
            session=self.session,
2329
            config=self.app_config,
2330
        )
2331
        content2 = api2.get_one(pcid, content_type_list.Any_SLUG, workspace)
2332
        content2_nb_rev = len(content2.revisions)
2333
        with pytest.raises(SameValueError):
2334
            with new_revision(
2335
                    session=self.session,
2336
                    tm=transaction.manager,
2337
                    content=content2,
2338
            ):
2339
                api2.update_content(
2340
                    content2,
2341
                    'this_is_a_page',
2342
                    ''
2343
                )
2344
        api2.save(content2)
2345
        content3 = api2.get_one(pcid, content_type_list.Any_SLUG, workspace)
2346
        assert content3.label == 'this_is_a_page'
2347
        assert content2_nb_rev == len(content3.revisions)
2348
2349
2350
    def test_update_no_change(self):
@@ 2105-2225 (lines=121) @@
2102
        assert content3.label == 'this_is_a_page'
2103
        assert content2_nb_rev == len(content3.revisions)
2104
2105
    def test_unit__update__err__label_already_used(self):
2106
        uapi = UserApi(
2107
            session=self.session,
2108
            config=self.app_config,
2109
            current_user=None,
2110
        )
2111
        group_api = GroupApi(
2112
            current_user=None,
2113
            session=self.session,
2114
            config=self.app_config,
2115
        )
2116
        groups = [group_api.get_one(Group.TIM_USER),
2117
                  group_api.get_one(Group.TIM_MANAGER),
2118
                  group_api.get_one(Group.TIM_ADMIN)]
2119
2120
        user1 = uapi.create_minimal_user(
2121
            email='this.is@user',
2122
            groups=groups,
2123
            save_now=True
2124
        )
2125
2126
        workspace_api = WorkspaceApi(
2127
            current_user=user1,
2128
            session=self.session,
2129
            config=self.app_config,
2130
        )
2131
        workspace = workspace_api.create_workspace(
2132
            'test workspace',
2133
            save_now=True
2134
        )
2135
2136
        wid = workspace.workspace_id
2137
2138
        user2 = uapi.create_minimal_user('[email protected]')
2139
        uapi.save(user2)
2140
2141
        RoleApi(
2142
            current_user=user1,
2143
            session=self.session,
2144
            config=self.app_config,
2145
        ).create_one(
2146
            user2,
2147
            workspace,
2148
            UserRoleInWorkspace.CONTENT_MANAGER,
2149
            with_notif=False,
2150
            flush=True
2151
        )
2152
2153
        # Test starts here
2154
2155
        api = ContentApi(
2156
            current_user=user1,
2157
            session=self.session,
2158
            config=self.app_config,
2159
        )
2160
2161
        p = api.create(
2162
            content_type_slug=content_type_list.Page.slug,
2163
            workspace=workspace,
2164
            parent=None,
2165
            label='this_is_a_page',
2166
            do_save=True
2167
        )
2168
        p2 = api.create(
2169
            content_type_slug=content_type_list.Page.slug,
2170
            workspace=workspace,
2171
            parent=None,
2172
            label='this_is_a_page2',
2173
            do_save=True
2174
        )
2175
        u1id = user1.user_id
2176
        u2id = user2.user_id
2177
        pcid = p.content_id
2178
        poid = p.owner_id
2179
2180
        transaction.commit()
2181
2182
        # Refresh instances after commit
2183
        user1 = uapi.get_one(u1id)
2184
        workspace = WorkspaceApi(
2185
            current_user=user1,
2186
            session=self.session,
2187
            config=self.app_config,
2188
        ).get_one(wid)
2189
        api = ContentApi(
2190
            current_user=user1,
2191
            session=self.session,
2192
            config=self.app_config,
2193
        )
2194
2195
        content = api.get_one(pcid, content_type_list.Any_SLUG, workspace)
2196
        eq_(u1id, content.owner_id)
2197
        eq_(poid, content.owner_id)
2198
2199
        u2 = UserApi(
2200
            session=self.session,
2201
            config=self.app_config,
2202
            current_user=None,
2203
        ).get_one(u2id)
2204
        api2 = ContentApi(
2205
            current_user=u2,
2206
            session=self.session,
2207
            config=self.app_config,
2208
        )
2209
        content2 = api2.get_one(pcid, content_type_list.Any_SLUG, workspace)
2210
        content2_nb_rev = len(content2.revisions)
2211
        with pytest.raises(ContentFilenameAlreadyUsedInFolder):
2212
            with new_revision(
2213
                    session=self.session,
2214
                    tm=transaction.manager,
2215
                    content=content2,
2216
            ):
2217
                api2.update_content(
2218
                    content2,
2219
                    'this_is_a_page2',
2220
                    'new content'
2221
                )
2222
            api2.save(content2)
2223
        content3 = api2.get_one(pcid, content_type_list.Any_SLUG, workspace)
2224
        assert content3.label == 'this_is_a_page'
2225
        assert content2_nb_rev == len(content3.revisions)
2226
2227
    def test_unit__update__err__label_dont_change(self):
2228
        uapi = UserApi(
@@ 2800-2918 (lines=119) @@
2797
        assert content3.label == 'this_is_a_page'
2798
        assert content2_nb_rev == len(content3.revisions)
2799
2800
    def test_update_file_data__err__content_deleted(self):
2801
        uapi = UserApi(
2802
            session=self.session,
2803
            config=self.app_config,
2804
            current_user=None,
2805
        )
2806
        group_api = GroupApi(
2807
            current_user=None,
2808
            session=self.session,
2809
            config=self.app_config,
2810
        )
2811
        groups = [group_api.get_one(Group.TIM_USER),
2812
                  group_api.get_one(Group.TIM_MANAGER),
2813
                  group_api.get_one(Group.TIM_ADMIN)]
2814
2815
        user1 = uapi.create_minimal_user(
2816
            email='this.is@user',
2817
            groups=groups,
2818
            save_now=True
2819
        )
2820
2821
        workspace_api = WorkspaceApi(
2822
            current_user=user1,
2823
            session=self.session,
2824
            config=self.app_config,
2825
        )
2826
        workspace = workspace_api.create_workspace(
2827
            'test workspace',
2828
            save_now=True
2829
        )
2830
        wid = workspace.workspace_id
2831
2832
        user2 = uapi.create_minimal_user('[email protected]')
2833
        uapi.save(user2)
2834
2835
        RoleApi(
2836
            current_user=user1,
2837
            session=self.session,
2838
            config=self.app_config,
2839
        ).create_one(
2840
            user2,
2841
            workspace,
2842
            UserRoleInWorkspace.CONTENT_MANAGER,
2843
            with_notif=True,
2844
            flush=True
2845
        )
2846
2847
        # Test starts here
2848
        api = ContentApi(
2849
            current_user=user1,
2850
            session=self.session,
2851
            config=self.app_config,
2852
            show_deleted=True,
2853
        )
2854
        p = api.create(
2855
            content_type_slug=content_type_list.File.slug,
2856
            workspace=workspace,
2857
            parent=None,
2858
            label='this_is_a_page',
2859
            do_save=False
2860
        )
2861
        p.is_deleted = True
2862
        api.save(p)
2863
2864
        u1id = user1.user_id
2865
        u2id = user2.user_id
2866
        pcid = p.content_id
2867
        poid = p.owner_id
2868
2869
        api.save(p)
2870
        transaction.commit()
2871
2872
        # Refresh instances after commit
2873
        user1 = uapi.get_one(u1id)
2874
        workspace_api2 = WorkspaceApi(
2875
            current_user=user1,
2876
            session=self.session,
2877
            config=self.app_config,
2878
        )
2879
        workspace = workspace_api2.get_one(wid)
2880
        api = ContentApi(
2881
            current_user=user1,
2882
            session=self.session,
2883
            config=self.app_config,
2884
            show_deleted=True,
2885
        )
2886
2887
        content = api.get_one(pcid, content_type_list.Any_SLUG, workspace)
2888
        eq_(u1id, content.owner_id)
2889
        eq_(poid, content.owner_id)
2890
2891
        u2 = UserApi(
2892
            current_user=None,
2893
            session=self.session,
2894
            config=self.app_config,
2895
        ).get_one(u2id)
2896
        api2 = ContentApi(
2897
            current_user=u2,
2898
            session=self.session,
2899
            config=self.app_config,
2900
            show_deleted=True,
2901
        )
2902
        content2 = api2.get_one(pcid, content_type_list.Any_SLUG, workspace)
2903
        content2_nb_rev = len(content2.revisions)
2904
        with pytest.raises(ContentInNotEditableState):
2905
            with new_revision(
2906
                session=self.session,
2907
                tm=transaction.manager,
2908
                content=content2,
2909
            ):
2910
                    api2.update_file_data(
2911
                        content2,
2912
                        'index.html',
2913
                        'text/html',
2914
                        b'<html>hello world</html>'
2915
                    )
2916
        content3 = api2.get_one(pcid, content_type_list.Any_SLUG, workspace)
2917
        assert content3.label == 'this_is_a_page'
2918
        assert content2_nb_rev == len(content3.revisions)
2919
2920
    @pytest.mark.xfail(reason='Broken feature dues to pyramid behaviour')
2921
    def test_update_no_change(self):
@@ 2680-2798 (lines=119) @@
2677
        assert content3.label == 'this_is_a_page'
2678
        assert content2_nb_rev == len(content3.revisions)
2679
2680
    def test_update_file_data__err__content_archived(self):
2681
        uapi = UserApi(
2682
            session=self.session,
2683
            config=self.app_config,
2684
            current_user=None,
2685
        )
2686
        group_api = GroupApi(
2687
            current_user=None,
2688
            session=self.session,
2689
            config=self.app_config,
2690
        )
2691
        groups = [group_api.get_one(Group.TIM_USER),
2692
                  group_api.get_one(Group.TIM_MANAGER),
2693
                  group_api.get_one(Group.TIM_ADMIN)]
2694
2695
        user1 = uapi.create_minimal_user(
2696
            email='this.is@user',
2697
            groups=groups,
2698
            save_now=True
2699
        )
2700
2701
        workspace_api = WorkspaceApi(
2702
            current_user=user1,
2703
            session=self.session,
2704
            config=self.app_config,
2705
        )
2706
        workspace = workspace_api.create_workspace(
2707
            'test workspace',
2708
            save_now=True
2709
        )
2710
        wid = workspace.workspace_id
2711
2712
        user2 = uapi.create_minimal_user('[email protected]')
2713
        uapi.save(user2)
2714
2715
        RoleApi(
2716
            current_user=user1,
2717
            session=self.session,
2718
            config=self.app_config,
2719
        ).create_one(
2720
            user2,
2721
            workspace,
2722
            UserRoleInWorkspace.CONTENT_MANAGER,
2723
            with_notif=True,
2724
            flush=True
2725
        )
2726
2727
        # Test starts here
2728
        api = ContentApi(
2729
            current_user=user1,
2730
            session=self.session,
2731
            config=self.app_config,
2732
            show_archived=True,
2733
        )
2734
        p = api.create(
2735
            content_type_slug=content_type_list.File.slug,
2736
            workspace=workspace,
2737
            parent=None,
2738
            label='this_is_a_page',
2739
            do_save=False
2740
        )
2741
        p.is_archived = True
2742
        api.save(p)
2743
2744
        u1id = user1.user_id
2745
        u2id = user2.user_id
2746
        pcid = p.content_id
2747
        poid = p.owner_id
2748
2749
        api.save(p)
2750
        transaction.commit()
2751
2752
        # Refresh instances after commit
2753
        user1 = uapi.get_one(u1id)
2754
        workspace_api2 = WorkspaceApi(
2755
            current_user=user1,
2756
            session=self.session,
2757
            config=self.app_config,
2758
        )
2759
        workspace = workspace_api2.get_one(wid)
2760
        api = ContentApi(
2761
            current_user=user1,
2762
            session=self.session,
2763
            config=self.app_config,
2764
            show_archived=True,
2765
        )
2766
2767
        content = api.get_one(pcid, content_type_list.Any_SLUG, workspace)
2768
        eq_(u1id, content.owner_id)
2769
        eq_(poid, content.owner_id)
2770
2771
        u2 = UserApi(
2772
            current_user=None,
2773
            session=self.session,
2774
            config=self.app_config,
2775
        ).get_one(u2id)
2776
        api2 = ContentApi(
2777
            current_user=u2,
2778
            session=self.session,
2779
            config=self.app_config,
2780
            show_archived=True,
2781
        )
2782
        content2 = api2.get_one(pcid, content_type_list.Any_SLUG, workspace)
2783
        content2_nb_rev = len(content2.revisions)
2784
        with pytest.raises(ContentInNotEditableState):
2785
            with new_revision(
2786
                session=self.session,
2787
                tm=transaction.manager,
2788
                content=content2,
2789
            ):
2790
                    api2.update_file_data(
2791
                        content2,
2792
                        'index.html',
2793
                        'text/html',
2794
                        b'<html>hello world</html>'
2795
                    )
2796
        content3 = api2.get_one(pcid, content_type_list.Any_SLUG, workspace)
2797
        assert content3.label == 'this_is_a_page'
2798
        assert content2_nb_rev == len(content3.revisions)
2799
2800
    def test_update_file_data__err__content_deleted(self):
2801
        uapi = UserApi(