2626 |
2626 |
user = User.objects.create(username='john.doe', email='john.doe@example.com', ou=get_default_ou())
|
2627 |
2627 |
|
2628 |
2628 |
# wrong type
|
2629 |
|
resp = app.get('/api/users/%s/profiles/non-existant-slug/default/' % user.uuid, status=404)
|
|
2629 |
app.get('/api/users/%s/profiles/non-existant-slug/' % user.uuid, status=404)
|
2630 |
2630 |
|
2631 |
2631 |
profile_type = ProfileType.objects.create(slug='one-type', name='One Type')
|
2632 |
2632 |
|
2633 |
2633 |
# wrong user
|
2634 |
|
resp = app.get('/api/users/1234/profiles/one-type/default/', status=404)
|
|
2634 |
app.get('/api/users/1234/profiles/one-type/', status=404)
|
2635 |
2635 |
|
2636 |
|
Profile.objects.create(profile_type=profile_type, user=user, data={'foo': 'bar'})
|
2637 |
|
resp = app.get('/api/users/%s/profiles/one-type/default/' % user.uuid)
|
2638 |
|
assert resp.json == {'data': {'foo': 'bar'}}
|
|
2636 |
profile = Profile.objects.create(profile_type=profile_type, user=user, data={'foo': 'bar'})
|
|
2637 |
resp = app.get('/api/users/%s/profiles/one-type/' % user.uuid)
|
|
2638 |
assert resp.json == [{'data': {'foo': 'bar'}, 'identifier': ''}]
|
|
2639 |
|
|
2640 |
resp = app.get('/api/users/%s/profiles/one-type/?identifier=' % user.uuid)
|
|
2641 |
assert resp.json == {'data': {'foo': 'bar'}, 'identifier': ''}
|
|
2642 |
|
|
2643 |
profile.identifier = 'Company ABC'
|
|
2644 |
profile.save()
|
|
2645 |
|
|
2646 |
# specify identifier in qs
|
|
2647 |
resp = app.get(
|
|
2648 |
'/api/users/%s/profiles/one-type/?identifier=Company ABC' % user.uuid,
|
|
2649 |
)
|
|
2650 |
assert resp.json == {'data': {'foo': 'bar'}, 'identifier': 'Company ABC'}
|
|
2651 |
|
|
2652 |
# not found on empty identifier
|
|
2653 |
app.get(
|
|
2654 |
'/api/users/%s/profiles/one-type/?identifier=' % user.uuid,
|
|
2655 |
status=404,
|
|
2656 |
)
|
2639 |
2657 |
|
2640 |
2658 |
|
2641 |
2659 |
def test_user_profile_put(app, superuser):
|
... | ... | |
2644 |
2662 |
user = User.objects.create(username='john.doe', email='john.doe@example.com', ou=get_default_ou())
|
2645 |
2663 |
|
2646 |
2664 |
# wrong type
|
2647 |
|
resp = app.put('/api/users/%s/profiles/non-existant-slug/default/' % user.uuid, status=404)
|
|
2665 |
resp = app.put('/api/users/%s/profiles/non-existant-slug/' % user.uuid, status=404)
|
2648 |
2666 |
|
2649 |
2667 |
profile_type = ProfileType.objects.create(slug='one-type', name='One Type')
|
2650 |
2668 |
|
2651 |
2669 |
# wrong user
|
2652 |
|
resp = app.put('/api/users/1234/profiles/one-type/default/', status=404)
|
|
2670 |
resp = app.put('/api/users/1234/profiles/one-type/', status=404)
|
2653 |
2671 |
|
2654 |
2672 |
# missing profile
|
2655 |
2673 |
resp = app.put_json(
|
2656 |
|
'/api/users/%s/profiles/one-type/default/' % user.uuid, params={'data': {'foo': 'bar'}}, status=404
|
|
2674 |
'/api/users/%s/profiles/one-type/' % user.uuid, params={'data': {'foo': 'bar'}}, status=404
|
2657 |
2675 |
)
|
2658 |
2676 |
|
2659 |
2677 |
Profile.objects.create(user=user, profile_type=profile_type, data={})
|
2660 |
2678 |
|
2661 |
|
resp = app.put_json(
|
2662 |
|
'/api/users/%s/profiles/one-type/default/' % user.uuid, params={'data': {'foo': 'bar'}}
|
2663 |
|
)
|
|
2679 |
resp = app.put_json('/api/users/%s/profiles/one-type/' % user.uuid, params={'data': {'foo': 'bar'}})
|
2664 |
2680 |
assert resp.json == {'result': 1, 'detail': 'Profile successfully updated'}
|
2665 |
2681 |
assert len(user.subprofiles.all()) == 1
|
2666 |
2682 |
assert user.subprofiles.last().data == {'foo': 'bar'}
|
2667 |
2683 |
|
2668 |
2684 |
# attempt at overwriting profile data
|
2669 |
|
resp = app.put_json(
|
2670 |
|
'/api/users/%s/profiles/one-type/default/' % user.uuid, params={'data': {'baz': 'bob'}}
|
2671 |
|
)
|
|
2685 |
resp = app.put_json('/api/users/%s/profiles/one-type/' % user.uuid, params={'data': {'baz': 'bob'}})
|
2672 |
2686 |
|
2673 |
2687 |
# profile has been updated, no extra profile has been created
|
2674 |
2688 |
assert resp.json == {'result': 1, 'detail': 'Profile successfully updated'}
|
2675 |
2689 |
assert len(user.subprofiles.all()) == 1
|
2676 |
2690 |
assert user.subprofiles.last().data == {'baz': 'bob'}
|
2677 |
2691 |
|
|
2692 |
Profile.objects.create(
|
|
2693 |
user=user,
|
|
2694 |
profile_type=profile_type,
|
|
2695 |
identifier='Company DEF',
|
|
2696 |
data={},
|
|
2697 |
)
|
|
2698 |
|
|
2699 |
# overwrite profile data while specifying the identifier
|
|
2700 |
resp = app.put_json(
|
|
2701 |
'/api/users/%s/profiles/one-type/?identifier=Company DEF' % user.uuid,
|
|
2702 |
params={'data': {'baz': 'bob'}},
|
|
2703 |
)
|
|
2704 |
assert resp.json == {'result': 1, 'detail': 'Profile successfully updated'}
|
|
2705 |
assert user.subprofiles.get(identifier='Company DEF').data == {'baz': 'bob'}
|
|
2706 |
|
2678 |
2707 |
|
2679 |
2708 |
def test_user_profile_post(app, superuser):
|
2680 |
2709 |
app.authorization = ('Basic', (superuser.username, superuser.username))
|
... | ... | |
2682 |
2711 |
user = User.objects.create(username='john.doe', email='john.doe@example.com', ou=get_default_ou())
|
2683 |
2712 |
|
2684 |
2713 |
# wrong type
|
2685 |
|
resp = app.get('/api/users/%s/profiles/non-existant-slug/default/' % user.uuid, status=404)
|
|
2714 |
resp = app.get('/api/users/%s/profiles/non-existant-slug/' % user.uuid, status=404)
|
2686 |
2715 |
|
2687 |
2716 |
ProfileType.objects.create(slug='one-type', name='One Type')
|
2688 |
2717 |
|
2689 |
2718 |
# wrong user
|
2690 |
|
resp = app.get('/api/users/1234/profiles/one-type/default/', status=404)
|
|
2719 |
resp = app.get('/api/users/1234/profiles/one-type/', status=404)
|
2691 |
2720 |
|
2692 |
2721 |
assert len(user.subprofiles.all()) == 0
|
2693 |
2722 |
|
2694 |
|
resp = app.post_json(
|
2695 |
|
'/api/users/%s/profiles/one-type/default/' % user.uuid, params={'data': {'baz': 'bob'}}
|
2696 |
|
)
|
|
2723 |
resp = app.post_json('/api/users/%s/profiles/one-type/' % user.uuid, params={'data': {'baz': 'bob'}})
|
2697 |
2724 |
assert resp.json == {'result': 1, 'detail': 'Profile successfully assigned to user'}
|
2698 |
2725 |
assert len(user.subprofiles.all()) == 1
|
2699 |
2726 |
assert user.subprofiles.last().data == {'baz': 'bob'}
|
2700 |
2727 |
|
|
2728 |
app.post_json('/api/users/%s/profiles/one-type/' % user.uuid, status=400)
|
|
2729 |
|
|
2730 |
resp = app.post_json(
|
|
2731 |
'/api/users/%s/profiles/one-type/?identifier=FooBar' % user.uuid,
|
|
2732 |
params={'data': {'foo': 'bar'}},
|
|
2733 |
)
|
|
2734 |
assert resp.json == {'result': 1, 'detail': 'Profile successfully assigned to user'}
|
|
2735 |
assert len(user.subprofiles.all()) == 2
|
|
2736 |
assert user.subprofiles.get(identifier='FooBar').data == {'foo': 'bar'}
|
|
2737 |
|
|
2738 |
app.post_json('/api/users/%s/profiles/one-type/?identifier=FooBar' % user.uuid, status=400)
|
|
2739 |
|
2701 |
2740 |
|
2702 |
2741 |
def test_user_profile_delete(app, superuser):
|
2703 |
2742 |
|
... | ... | |
2707 |
2746 |
profile_type = ProfileType.objects.create(slug='one-type', name='One Type')
|
2708 |
2747 |
Profile.objects.create(user=user, profile_type=profile_type)
|
2709 |
2748 |
|
2710 |
|
app.delete('/api/users/%s/profiles/non-existant-slug/default/' % user.uuid, status=404)
|
2711 |
|
app.delete('/api/users/%s/profiles/one-type/default/' % user.uuid)
|
|
2749 |
app.delete('/api/users/%s/profiles/non-existant-slug/' % user.uuid, status=404)
|
|
2750 |
app.delete('/api/users/%s/profiles/one-type/' % user.uuid)
|
2712 |
2751 |
|
2713 |
2752 |
assert not Profile.objects.filter(user=user, profile_type=profile_type)
|
2714 |
2753 |
|
2715 |
|
app.delete('/api/users/%s/profiles/one-type/default/' % user.uuid, status=404)
|
|
2754 |
app.delete('/api/users/%s/profiles/one-type/' % user.uuid, status=404)
|
|
2755 |
|
|
2756 |
Profile.objects.create(user=user, profile_type=profile_type, identifier='FooBar')
|
|
2757 |
app.delete('/api/users/%s/profiles/one-type/?identifier=FooBar' % user.uuid)
|
|
2758 |
app.delete(
|
|
2759 |
'/api/users/%s/profiles/one-type/?identifier=FooBar' % user.uuid,
|
|
2760 |
status=404,
|
|
2761 |
)
|
2716 |
|
-
|