# Copyright (C) 2020 by Cathy Hu <cathy.hu@fau.de>
# Copyright (C) 2020 by Martin Rey <martin.rey@mailbox.org>
#
# SPDX-License-Identifier: 0BSD

from fastapi import status

from kibicara.platforms.mastodon.model import MastodonAccount, MastodonInstance


def test_mastodon_get_bots(client, auth_header, event_loop, hood_id, mastodon):
    mastodon_instance = event_loop.run_until_complete(
        MastodonInstance.objects.get(id=mastodon.instance)
    )
    mastodon2 = event_loop.run_until_complete(
        MastodonAccount.objects.create(
            hood=mastodon.hood,
            instance=mastodon_instance,
            access_token="4cc3ss",
            enabled=True,
            username="us4r",
        )
    )
    response = client.get(
        "/api/hoods/{0}/mastodon".format(mastodon.hood.id), headers=auth_header
    )
    assert response.status_code == status.HTTP_200_OK
    assert response.json()[0]["id"] == mastodon.id
    assert response.json()[0]["access_token"] == mastodon.access_token
    assert response.json()[1]["id"] == mastodon2.id
    assert response.json()[1]["access_token"] == mastodon2.access_token


def test_mastodon_get_bots_invalid_id(client, auth_header, hood_id):
    response = client.get("/api/hoods/1337/mastodon", headers=auth_header)
    assert response.status_code == status.HTTP_404_NOT_FOUND
    response = client.get("/api/hoods/wrong/mastodon", headers=auth_header)
    assert response.status_code == status.HTTP_422_UNPROCESSABLE_ENTITY


def test_mastodon_get_bots_unauthorized(client, hood_id):
    response = client.get("/api/hoods/{0}/mastodon".format(hood_id))
    assert response.status_code == status.HTTP_401_UNAUTHORIZED


def test_mastodon_public(client, mastodon, event_loop):
    mastodon_instance = event_loop.run_until_complete(
        MastodonInstance.objects.get(id=mastodon.instance)
    )
    response = client.get("/api/hoods/{0}/mastodon/public".format(mastodon.hood.id))
    assert response.json()[0]["username"] == mastodon.username
    assert response.json()[0]["instance"] == mastodon_instance.name