78 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			78 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Python
		
	
	
	
| from django.urls import reverse
 | |
| 
 | |
| from funkwhale_api.moderation import models
 | |
| 
 | |
| 
 | |
| def test_restrict_to_own_filters(factories, logged_in_api_client):
 | |
|     cf = factories["moderation.UserFilter"](
 | |
|         for_artist=True, user=logged_in_api_client.user
 | |
|     )
 | |
|     factories["moderation.UserFilter"](for_artist=True)
 | |
|     url = reverse("api:v1:moderation:content-filters-list")
 | |
|     response = logged_in_api_client.get(url)
 | |
|     assert response.status_code == 200
 | |
|     assert response.data["count"] == 1
 | |
|     assert response.data["results"][0]["uuid"] == str(cf.uuid)
 | |
| 
 | |
| 
 | |
| def test_create_filter(factories, logged_in_api_client):
 | |
|     artist = factories["music.Artist"]()
 | |
|     url = reverse("api:v1:moderation:content-filters-list")
 | |
|     data = {"target": {"type": "artist", "id": artist.pk}}
 | |
|     response = logged_in_api_client.post(url, data, format="json")
 | |
| 
 | |
|     cf = logged_in_api_client.user.content_filters.latest("id")
 | |
|     assert cf.target_artist == artist
 | |
|     assert response.status_code == 201
 | |
| 
 | |
| 
 | |
| def test_create_report_logged_in(factories, logged_in_api_client):
 | |
|     actor = logged_in_api_client.user.create_actor()
 | |
|     target = factories["music.Artist"]()
 | |
|     url = reverse("api:v1:moderation:reports-list")
 | |
|     data = {
 | |
|         "target": {"type": "artist", "id": target.pk},
 | |
|         "summary": "Test report",
 | |
|         "type": "other",
 | |
|     }
 | |
|     response = logged_in_api_client.post(url, data, format="json")
 | |
| 
 | |
|     assert response.status_code == 201
 | |
|     report = actor.reports.latest("id")
 | |
|     assert report.target == target
 | |
| 
 | |
| 
 | |
| def test_create_report_anonymous(factories, api_client, no_api_auth):
 | |
|     target = factories["music.Artist"]()
 | |
|     url = reverse("api:v1:moderation:reports-list")
 | |
|     data = {
 | |
|         "target": {"type": "artist", "id": target.pk},
 | |
|         "summary": "Test report",
 | |
|         "type": "illegal_content",
 | |
|         "submitter_email": "test@example.test",
 | |
|     }
 | |
|     response = api_client.post(url, data, format="json")
 | |
| 
 | |
|     assert response.status_code == 201
 | |
|     report = models.Report.objects.latest("id")
 | |
|     assert report.submitter_email == data["submitter_email"]
 | |
| 
 | |
| 
 | |
| def test_create_report_and_forward(factories, api_client, no_api_auth, mocker):
 | |
|     dispatch = mocker.patch("funkwhale_api.federation.routes.outbox.dispatch")
 | |
|     target = factories["music.Artist"](attributed=True)
 | |
|     url = reverse("api:v1:moderation:reports-list")
 | |
|     data = {
 | |
|         "target": {"type": "artist", "id": target.pk},
 | |
|         "summary": "Test report",
 | |
|         "type": "illegal_content",
 | |
|         "submitter_email": "test@example.test",
 | |
|         "forward": True,
 | |
|     }
 | |
|     response = api_client.post(url, data, format="json")
 | |
| 
 | |
|     assert response.status_code == 201
 | |
|     report = models.Report.objects.latest("id")
 | |
| 
 | |
|     dispatch.assert_called_once_with({"type": "Flag"}, context={"report": report})
 |