Я вижу только такой вариант:
1. Для всех тестов пользователь должен авторизоваться на вашем сайте через Фейсбук. Раз тут висит тег Django, то порекомендую для этого библиотеку
allauth.
2. Для каждого конкретного теста с сервера идут запросы к API Фейсбука за данными, которые нужны для этого теста. Опять же могу посоветовать использовать
facebook-sdk.
3. Когда данные получены, они обрабатываются уже с учетом логики этого теста. Логика получается разной для каждого теста, поэтому будет логично выделить каждый тест в отдельный класс.
Еще хочу предупредить о том, что у Фейсбука довольно много ограничений по работе с API. Например, уже с двумя тестами из примера возникнут проблемы:
- Фейсбук не отдает по API полный список друзей пользователя. Вообще никак. Максимум, что можно получить, это список друзей, которые тоже авторизовались на вашем сайте.
- Возраст пользователя получить можно, но это либо будет диапазон (13–17, 18–21 или 21+), либо вам придется запрашивать разрешение user_birthday. Чтобы вы могли получать это разрешение, придется пройти ревью Фейсбука (отправить им на проверку текст на английском, описывающий, зачем вам разрешение, и скринкаст, демонстрирующий это).
У Вконтакте таких ограничений меньше, можете попробовать с его API.