Code Duplication    Length = 217-217 lines in 2 locations

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

@@ 2604-2820 (lines=217) @@
2601
        ), status=403)
2602
2603
2604
class TestUserDisableWorkspaceNotification(FunctionalTest):
2605
    """
2606
    Tests for /api/v2/users/{user_id}/workspaces/{workspace_id}/unnotify
2607
    """
2608
    def test_api_disable_user_workspace_notification__ok__200__admin(self):
2609
        # init DB
2610
        dbsession = get_tm_session(self.session_factory, transaction.manager)
2611
        admin = dbsession.query(models.User) \
2612
            .filter(models.User.email == '[email protected]') \
2613
            .one()
2614
        workspace_api = WorkspaceApi(
2615
            current_user=admin,
2616
            session=dbsession,
2617
            config=self.app_config
2618
2619
        )
2620
        workspace = WorkspaceApi(
2621
            current_user=admin,
2622
            session=dbsession,
2623
            config=self.app_config,
2624
        ).create_workspace(
2625
            'test workspace',
2626
            save_now=True
2627
        )
2628
        uapi = UserApi(
2629
            current_user=admin,
2630
            session=dbsession,
2631
            config=self.app_config,
2632
        )
2633
        gapi = GroupApi(
2634
            current_user=admin,
2635
            session=dbsession,
2636
            config=self.app_config,
2637
        )
2638
        groups = [gapi.get_one_with_name('users')]
2639
        test_user = uapi.create_user(
2640
            email='[email protected]',
2641
            password='pass',
2642
            name='bob',
2643
            groups=groups,
2644
            timezone='Europe/Paris',
2645
            lang='fr',
2646
            do_save=True,
2647
            do_notify=True,
2648
        )
2649
        rapi = RoleApi(
2650
            current_user=admin,
2651
            session=dbsession,
2652
            config=self.app_config,
2653
        )
2654
        rapi.create_one(test_user, workspace, UserRoleInWorkspace.READER, with_notif=True)  # nopep8
2655
        transaction.commit()
2656
        role = rapi.get_one(test_user.user_id, workspace.workspace_id)
2657
        assert role.do_notify is True
2658
        self.testapp.authorization = (
2659
            'Basic',
2660
            (
2661
                '[email protected]',
2662
                '[email protected]'
2663
            )
2664
        )
2665
        self.testapp.put_json('/api/v2/users/{user_id}/workspaces/{workspace_id}/unnotify'.format(  # nopep8
2666
            user_id=test_user.user_id,
2667
            workspace_id=workspace.workspace_id
2668
        ), status=204)
2669
2670
        dbsession = get_tm_session(self.session_factory, transaction.manager)
2671
        rapi = RoleApi(
2672
            current_user=admin,
2673
            session=dbsession,
2674
            config=self.app_config,
2675
        )
2676
        role = rapi.get_one(test_user.user_id, workspace.workspace_id)
2677
        assert role.do_notify is False
2678
2679
    def test_api_enable_user_workspace_notification__ok__200__user_itself(self):
2680
        # init DB
2681
        dbsession = get_tm_session(self.session_factory, transaction.manager)
2682
        admin = dbsession.query(models.User) \
2683
            .filter(models.User.email == '[email protected]') \
2684
            .one()
2685
        workspace_api = WorkspaceApi(
2686
            current_user=admin,
2687
            session=dbsession,
2688
            config=self.app_config
2689
2690
        )
2691
        workspace = WorkspaceApi(
2692
            current_user=admin,
2693
            session=dbsession,
2694
            config=self.app_config,
2695
        ).create_workspace(
2696
            'test workspace',
2697
            save_now=True
2698
        )
2699
        uapi = UserApi(
2700
            current_user=admin,
2701
            session=dbsession,
2702
            config=self.app_config,
2703
        )
2704
        gapi = GroupApi(
2705
            current_user=admin,
2706
            session=dbsession,
2707
            config=self.app_config,
2708
        )
2709
        groups = [gapi.get_one_with_name('users')]
2710
        test_user = uapi.create_user(
2711
            email='[email protected]',
2712
            password='pass',
2713
            name='bob',
2714
            groups=groups,
2715
            timezone='Europe/Paris',
2716
            lang='fr',
2717
            do_save=True,
2718
            do_notify=False,
2719
        )
2720
        rapi = RoleApi(
2721
            current_user=admin,
2722
            session=dbsession,
2723
            config=self.app_config,
2724
        )
2725
        rapi.create_one(test_user, workspace, UserRoleInWorkspace.READER, with_notif=True)  # nopep8
2726
        transaction.commit()
2727
        role = rapi.get_one(test_user.user_id, workspace.workspace_id)
2728
        assert role.do_notify is True
2729
        self.testapp.authorization = (
2730
            'Basic',
2731
            (
2732
                '[email protected]',
2733
                'pass',
2734
            )
2735
        )
2736
        self.testapp.put_json('/api/v2/users/{user_id}/workspaces/{workspace_id}/unnotify'.format(  # nopep8
2737
            user_id=test_user.user_id,
2738
            workspace_id=workspace.workspace_id
2739
        ), status=204)
2740
        dbsession = get_tm_session(self.session_factory, transaction.manager)
2741
        rapi = RoleApi(
2742
            current_user=admin,
2743
            session=dbsession,
2744
            config=self.app_config,
2745
        )
2746
        role = rapi.get_one(test_user.user_id, workspace.workspace_id)
2747
        assert role.do_notify is False
2748
2749
    def test_api_disable_user_workspace_notification__err__403__other_user(self):
2750
        # init DB
2751
        dbsession = get_tm_session(self.session_factory, transaction.manager)
2752
        admin = dbsession.query(models.User) \
2753
            .filter(models.User.email == '[email protected]') \
2754
            .one()
2755
        workspace_api = WorkspaceApi(
2756
            current_user=admin,
2757
            session=dbsession,
2758
            config=self.app_config
2759
2760
        )
2761
        workspace = WorkspaceApi(
2762
            current_user=admin,
2763
            session=dbsession,
2764
            config=self.app_config,
2765
        ).create_workspace(
2766
            'test workspace',
2767
            save_now=True
2768
        )
2769
        uapi = UserApi(
2770
            current_user=admin,
2771
            session=dbsession,
2772
            config=self.app_config,
2773
        )
2774
        gapi = GroupApi(
2775
            current_user=admin,
2776
            session=dbsession,
2777
            config=self.app_config,
2778
        )
2779
        groups = [gapi.get_one_with_name('users')]
2780
        test_user = uapi.create_user(
2781
            email='[email protected]',
2782
            password='pass',
2783
            name='bob',
2784
            groups=groups,
2785
            timezone='Europe/Paris',
2786
            lang='fr',
2787
            do_save=True,
2788
            do_notify=False,
2789
        )
2790
        test_user2 = uapi.create_user(
2791
            email='[email protected]',
2792
            password='pass',
2793
            name='boby',
2794
            groups=groups,
2795
            timezone='Europe/Paris',
2796
            lang='fr',
2797
            do_save=True,
2798
            do_notify=False,
2799
        )
2800
        rapi = RoleApi(
2801
            current_user=admin,
2802
            session=dbsession,
2803
            config=self.app_config,
2804
        )
2805
        rapi.create_one(test_user, workspace, UserRoleInWorkspace.READER, with_notif=True)  # nopep8
2806
        rapi.create_one(test_user2, workspace, UserRoleInWorkspace.READER, with_notif=False)  # nopep8
2807
        transaction.commit()
2808
        role = rapi.get_one(test_user.user_id, workspace.workspace_id)
2809
        assert role.do_notify is True
2810
        self.testapp.authorization = (
2811
            'Basic',
2812
            (
2813
                '[email protected]',
2814
                'pass',
2815
            )
2816
        )
2817
        self.testapp.put_json('/api/v2/users/{user_id}/workspaces/{workspace_id}/unnotify'.format(  # nopep8
2818
            user_id=test_user.user_id,
2819
            workspace_id=workspace.workspace_id
2820
        ), status=403)
2821
2822
2823
class TestUserWorkspaceEndpoint(FunctionalTest):
@@ 2385-2601 (lines=217) @@
2382
        )
2383
2384
2385
class TestUserEnableWorkspaceNotification(FunctionalTest):
2386
    """
2387
    Tests for /api/v2/users/{user_id}/workspaces/{workspace_id}/notify
2388
    """
2389
    def test_api_enable_user_workspace_notification__ok__200__admin(self):
2390
        # init DB
2391
        dbsession = get_tm_session(self.session_factory, transaction.manager)
2392
        admin = dbsession.query(models.User) \
2393
            .filter(models.User.email == '[email protected]') \
2394
            .one()
2395
        workspace_api = WorkspaceApi(
2396
            current_user=admin,
2397
            session=dbsession,
2398
            config=self.app_config
2399
2400
        )
2401
        workspace = WorkspaceApi(
2402
            current_user=admin,
2403
            session=dbsession,
2404
            config=self.app_config,
2405
        ).create_workspace(
2406
            'test workspace',
2407
            save_now=True
2408
        )
2409
        uapi = UserApi(
2410
            current_user=admin,
2411
            session=dbsession,
2412
            config=self.app_config,
2413
        )
2414
        gapi = GroupApi(
2415
            current_user=admin,
2416
            session=dbsession,
2417
            config=self.app_config,
2418
        )
2419
        groups = [gapi.get_one_with_name('users')]
2420
        test_user = uapi.create_user(
2421
            email='[email protected]',
2422
            password='pass',
2423
            name='bob',
2424
            groups=groups,
2425
            timezone='Europe/Paris',
2426
            lang='fr',
2427
            do_save=True,
2428
            do_notify=False,
2429
        )
2430
        rapi = RoleApi(
2431
            current_user=admin,
2432
            session=dbsession,
2433
            config=self.app_config,
2434
        )
2435
        rapi.create_one(test_user, workspace, UserRoleInWorkspace.READER, with_notif=False)  # nopep8
2436
        transaction.commit()
2437
        role = rapi.get_one(test_user.user_id, workspace.workspace_id)
2438
        assert role.do_notify is False
2439
        self.testapp.authorization = (
2440
            'Basic',
2441
            (
2442
                '[email protected]',
2443
                '[email protected]'
2444
            )
2445
        )
2446
        self.testapp.put_json('/api/v2/users/{user_id}/workspaces/{workspace_id}/notify'.format(  # nopep8
2447
            user_id=test_user.user_id,
2448
            workspace_id=workspace.workspace_id
2449
        ), status=204)
2450
        dbsession = get_tm_session(self.session_factory, transaction.manager)
2451
        rapi = RoleApi(
2452
            current_user=admin,
2453
            session=dbsession,
2454
            config=self.app_config,
2455
        )
2456
        role = rapi.get_one(test_user.user_id, workspace.workspace_id)
2457
        assert role.do_notify is True
2458
2459
    def test_api_enable_user_workspace_notification__ok__200__user_itself(self):
2460
        # init DB
2461
        dbsession = get_tm_session(self.session_factory, transaction.manager)
2462
        admin = dbsession.query(models.User) \
2463
            .filter(models.User.email == '[email protected]') \
2464
            .one()
2465
        workspace_api = WorkspaceApi(
2466
            current_user=admin,
2467
            session=dbsession,
2468
            config=self.app_config
2469
2470
        )
2471
        workspace = WorkspaceApi(
2472
            current_user=admin,
2473
            session=dbsession,
2474
            config=self.app_config,
2475
        ).create_workspace(
2476
            'test workspace',
2477
            save_now=True
2478
        )
2479
        uapi = UserApi(
2480
            current_user=admin,
2481
            session=dbsession,
2482
            config=self.app_config,
2483
        )
2484
        gapi = GroupApi(
2485
            current_user=admin,
2486
            session=dbsession,
2487
            config=self.app_config,
2488
        )
2489
        groups = [gapi.get_one_with_name('users')]
2490
        test_user = uapi.create_user(
2491
            email='[email protected]',
2492
            password='pass',
2493
            name='bob',
2494
            groups=groups,
2495
            timezone='Europe/Paris',
2496
            lang='fr',
2497
            do_save=True,
2498
            do_notify=False,
2499
        )
2500
        rapi = RoleApi(
2501
            current_user=admin,
2502
            session=dbsession,
2503
            config=self.app_config,
2504
        )
2505
        rapi.create_one(test_user, workspace, UserRoleInWorkspace.READER, with_notif=False)  # nopep8
2506
        transaction.commit()
2507
        role = rapi.get_one(test_user.user_id, workspace.workspace_id)
2508
        assert role.do_notify is False
2509
        self.testapp.authorization = (
2510
            'Basic',
2511
            (
2512
                '[email protected]',
2513
                'pass',
2514
            )
2515
        )
2516
        self.testapp.put_json('/api/v2/users/{user_id}/workspaces/{workspace_id}/notify'.format(  # nopep8
2517
            user_id=test_user.user_id,
2518
            workspace_id=workspace.workspace_id
2519
        ), status=204)
2520
2521
        dbsession = get_tm_session(self.session_factory, transaction.manager)
2522
        rapi = RoleApi(
2523
            current_user=admin,
2524
            session=dbsession,
2525
            config=self.app_config,
2526
        )
2527
        role = rapi.get_one(test_user.user_id, workspace.workspace_id)
2528
        assert role.do_notify is True
2529
2530
    def test_api_enable_user_workspace_notification__err__403__other_user(self):
2531
        # init DB
2532
        dbsession = get_tm_session(self.session_factory, transaction.manager)
2533
        admin = dbsession.query(models.User) \
2534
            .filter(models.User.email == '[email protected]') \
2535
            .one()
2536
        workspace_api = WorkspaceApi(
2537
            current_user=admin,
2538
            session=dbsession,
2539
            config=self.app_config
2540
2541
        )
2542
        workspace = WorkspaceApi(
2543
            current_user=admin,
2544
            session=dbsession,
2545
            config=self.app_config,
2546
        ).create_workspace(
2547
            'test workspace',
2548
            save_now=True
2549
        )
2550
        uapi = UserApi(
2551
            current_user=admin,
2552
            session=dbsession,
2553
            config=self.app_config,
2554
        )
2555
        gapi = GroupApi(
2556
            current_user=admin,
2557
            session=dbsession,
2558
            config=self.app_config,
2559
        )
2560
        groups = [gapi.get_one_with_name('users')]
2561
        test_user = uapi.create_user(
2562
            email='[email protected]',
2563
            password='pass',
2564
            name='bob',
2565
            groups=groups,
2566
            timezone='Europe/Paris',
2567
            lang='fr',
2568
            do_save=True,
2569
            do_notify=False,
2570
        )
2571
        test_user2 = uapi.create_user(
2572
            email='[email protected]',
2573
            password='pass',
2574
            name='boby',
2575
            groups=groups,
2576
            timezone='Europe/Paris',
2577
            lang='fr',
2578
            do_save=True,
2579
            do_notify=False,
2580
        )
2581
        rapi = RoleApi(
2582
            current_user=admin,
2583
            session=dbsession,
2584
            config=self.app_config,
2585
        )
2586
        rapi.create_one(test_user, workspace, UserRoleInWorkspace.READER, with_notif=False)  # nopep8
2587
        rapi.create_one(test_user2, workspace, UserRoleInWorkspace.READER, with_notif=False)  # nopep8
2588
        transaction.commit()
2589
        role = rapi.get_one(test_user.user_id, workspace.workspace_id)
2590
        assert role.do_notify is False
2591
        self.testapp.authorization = (
2592
            'Basic',
2593
            (
2594
                '[email protected]',
2595
                'pass',
2596
            )
2597
        )
2598
        self.testapp.put_json('/api/v2/users/{user_id}/workspaces/{workspace_id}/notify'.format(  # nopep8
2599
            user_id=test_user.user_id,
2600
            workspace_id=workspace.workspace_id
2601
        ), status=403)
2602
2603
2604
class TestUserDisableWorkspaceNotification(FunctionalTest):