diff --git a/funkwhale_network/crawler.py b/funkwhale_network/crawler.py index db9cfc03e4a2491d4b3bd7b306ec6a4f3a30b66d..3181cd133f8379a115fe8971c699a99b103f4e8a 100644 --- a/funkwhale_network/crawler.py +++ b/funkwhale_network/crawler.py @@ -144,6 +144,11 @@ async def save_check(cursor, data): await cursor.execute(sql, values) check = await cursor.fetchone() + if data.get("private") is True: + # let's clean previous checks + sql = "DELETE FROM checks WHERE domain = %s" + await cursor.execute(sql, [data["domain"]]) + return if node_name: await cursor.execute( "UPDATE domains SET node_name = %s WHERE name = %s", diff --git a/tests/test_crawler.py b/tests/test_crawler.py index 03790aaadea34207a4694054db1c10ece70b3933..b30a81f11e4114bf06d43be58951c31be22fc48f 100644 --- a/tests/test_crawler.py +++ b/tests/test_crawler.py @@ -177,7 +177,8 @@ async def test_clean_check_result(): assert crawler.clean_check(check, data) == expected -async def test_save_check(populated_db, db_cursor, db_conn): +async def test_save_check(populated_db, db_cursor, db_conn, factories): + await factories["Check"].c(domain="test.domain", private=False) await serializers.create_domain(db_conn, {"name": "test.domain"}) data = { "domain": "test.domain", @@ -203,7 +204,7 @@ async def test_save_check(populated_db, db_cursor, db_conn): "software_build": "git.b575999e", } - sql = "SELECT * from checks" + sql = "SELECT * from checks ORDER BY time DESC" result = await crawler.save_check(db_conn, data) await db_cursor.execute(sql) @@ -216,3 +217,30 @@ async def test_save_check(populated_db, db_cursor, db_conn): domain = await db_cursor.fetchone() assert domain["node_name"] == "Test Domain" + + +async def test_private_domain_delete_past_checks( + populated_db, db_cursor, db_conn, factories +): + await factories["Check"].c(domain="test.domain", private=False) + data = { + "domain": "test.domain", + "node_name": "Test Domain", + "up": True, + "open_registrations": False, + "federation_enabled": True, + "anonymous_can_listen": True, + "private": True, + "software_name": "funkwhale", + "software_version_major": 0, + "software_version_minor": 18, + "software_version_patch": 0, + "software_prerelease": "dev", + "software_build": "git.b575999e", + } + + sql = "SELECT * from checks" + assert await crawler.save_check(db_conn, data) is None + await db_cursor.execute(sql) + result = await db_cursor.fetchall() + assert result == []