| @@ 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( | |