Beispiel #1
0
 def setUp(self):
     User.objects.create_superuser(username='******',
                                   password='******',
                                   email='*****@*****.**')
     call_command('socialapps')
     self.client = BaseClient(version=settings.VERSION)
     self.player = PlayerFactory.create()
     self.npc = NPCFactory.create()
Beispiel #2
0
class CharacterTestCase(APITestCase):
    def setUp(self):
        User.objects.create_superuser(username='******',
                                      password='******',
                                      email='*****@*****.**')
        call_command('socialapps')
        self.client = BaseClient(version=settings.VERSION)
        self.player = PlayerFactory.create()
        self.npc = NPCFactory.create()

    def tearDown(self):
        self.client = None

    def authenticate(self, username='******', pwd='qweqweqwe'):
        response = self.client.authenticate(username, pwd)
        self.assertEqual(response.status_code, 200)

    def test_character_login(self):
        self.authenticate()

    def character_register(self, character_type):
        self.assertEqual(globals()[character_type].objects.count(), 1)
        data = {
            'email': '*****@*****.**',
            'password': '******',
            'type': character_type
        }
        response = self.client.post('/character/', data)
        self.assertEqual(response.status_code, 201)
        self.assertEqual(globals()[character_type].objects.count(), 2)
        response = self.client.post('/character/', data)
        self.assertEqual(response.status_code, 409)

    def test_player_register(self):
        self.character_register('Player')

    def test_npc_register(self):
        self.character_register('NPC')

    def test_character_list(self):
        response = self.client.get('/character/')
        self.assertEqual(response.status_code, 200)
        self.assertEqual(len(response.json()), 2)  # player + npc
        self.assertEqual(
            response.json(),
            [PlayerSerializer(self.player).data,
             NPCSerializer(self.npc).data])

    def character_update(self, character, serializer):
        character_type = character.__class__.__name__
        data = {'type': character_type}
        response = self.client.patch('/character/{0}/'.format(character.pk),
                                     data)
        self.assertEqual(response.status_code, 200)
        self.assertNotEqual(response.json(),
                            serializer(character, many=False).data)

    def character_retrieve(self, character, serializer):
        character_type = character.__class__.__name__
        response = self.client.get('/character/{0}/?type={1}'.format(
            character.pk, character_type))
        self.assertEqual(response.status_code, 200)
        self.assertEqual(response.json(),
                         serializer(character, many=False).data)

    def character_destroy(self, character_type, pk):
        self.assertEqual(globals()[character_type].objects.count(), 1)
        data = {'type': character_type}
        response = self.client.delete('/character/{0}/'.format(pk), data)
        self.assertEqual(response.status_code, 204)
        self.assertEqual(globals()[character_type].objects.count(), 0)

    def test_player_retrieve(self):
        self.character_retrieve(self.player, PlayerSerializer)

    def test_npc_retrieve(self):
        self.character_retrieve(self.npc, NPCSerializer)

    def test_player_destroy(self):
        self.character_destroy('Player', self.player.pk)

    def test_npc_destroy(self):
        self.character_destroy('NPC', self.npc.pk)
Beispiel #3
0
class RolTestCase(APITestCase):
    def setUp(self):
        User.objects.create_superuser(username='******',
                                      password='******',
                                      email='*****@*****.**')
        call_command('socialapps')
        self.client = BaseClient(version=settings.VERSION)
        self.player = PlayerFactory.create()
        self.rol = RolFactory.create()

    def tearDown(self):
        self.client = None

    def authenticate(self, username='******', pwd='qweqweqwe'):
        response = self.client.authenticate(username, pwd)
        self.assertEqual(response.status_code, 200)

    def test_rol_create(self):
        rols_quantity = Rol.objects.count()
        data = {
            'name': 'Rol',
            'description': 'Rol description',
        }

        response = self.client.post('/thing/rol/', data)
        self.assertEqual(response.status_code, 401)
        self.authenticate(username=self.player.user.username)
        response = self.client.post('/thing/rol/', data)
        self.assertEqual(response.status_code, 201)
        self.assertEqual(Rol.objects.count(), rols_quantity + 1)

    def test_rol_list(self, ):
        response = self.client.get('/thing/rol/')
        self.assertEqual(response.status_code, 200)
        self.assertEqual(len(response.json()), 1)
        self.assertEqual(response.json(), [RolSerializer(self.rol).data])

    def test_rol_retrieve(self):
        response = self.client.get('/thing/rol/{}/'.format(self.rol.pk))
        self.assertEqual(response.status_code, 200)
        self.assertEqual(response.json(), RolSerializer(self.rol).data)

    def test_rol_retrieve_unknow(self):
        response = self.client.get('/thing/rol/-1/')
        self.assertEqual(response.status_code, 404)

    def test_rol_destroy_unauthorized(self):
        response = self.client.delete('/thing/rol/{}/'.format(self.rol.pk))
        self.assertEqual(response.status_code, 401)

    def test_rol_destroy(self):
        self.authenticate(username=self.player.user.username)
        response = self.client.delete('/thing/rol/{}/'.format(self.rol.pk))
        self.assertEqual(response.status_code, 204)

    def test_rol_update_unauthorized(self):
        data = {
            'name': 'Rol',
            'description': 'Rol description',
        }
        response = self.client.put('/thing/rol/{}/'.format(self.rol.pk), data)
        self.assertEqual(response.status_code, 401)

    def test_rol_update(self):
        self.authenticate(username=self.player.user.username)
        data = {
            'name': 'Rol',
            'description': 'Rol description',
        }
        response = self.client.put('/thing/rol/{}/'.format(self.rol.pk), data)
        self.assertEqual(response.status_code, 200)
        rol_changed = Rol.objects.get(pk=self.rol.pk)
        for key, value in data.items():
            field = getattr(rol_changed, key)
            self.assertEqual(field, value)
Beispiel #4
0
class GameTestCase(APITestCase):
    def setUp(self):
        User.objects.create_superuser(username='******',
                                      password='******',
                                      email='*****@*****.**')
        call_command('socialapps')
        self.client = BaseClient(version=settings.VERSION)
        self.player = PlayerFactory.create()
        self.game = GameFactory.create()
        self.owner = Owner(player=self.player, game=self.game)
        self.owner.save()

    def tearDown(self):
        self.client = None

    def authenticate(self, username='******', pwd='qweqweqwe'):
        response = self.client.authenticate(username, pwd)
        self.assertEqual(response.status_code, 200)

    def test_game_create(self):
        games_amount = Game.objects.count()
        owners_amount = Owner.objects.count()
        data = {
            'title': 'Example',
            'start': '2018-02-04T07:28:12.546030+00:00',
            'preferences': {
                'vision_distance': 100,
                'meeting_distance': 20,
                'visible_character': True
            }
        }

        response = self.client.post('/game/', data)
        self.assertEqual(response.status_code, 401)
        self.authenticate(username=self.player.user.username)
        response = self.client.post('/game/', data)
        self.assertEqual(response.status_code, 201)
        self.assertEqual(Game.objects.count(), games_amount + 1)
        self.assertEqual(Owner.objects.count(), owners_amount + 1)

    def test_game_list(self):
        response = self.client.get('/game/')
        self.assertEqual(response.status_code, 200)
        self.assertEqual(len(response.json()), 1)
        self.assertEqual(response.json(), [GameSerializer(self.game).data])

    def test_game_retrieve(self):
        response = self.client.get('/game/{}/'.format(self.game.pk))
        self.assertEqual(response.status_code, 200)
        self.assertEqual(response.json(), GameSerializer(self.game).data)

    def test_game_retrieve_unknow(self):
        response = self.client.get('/game/-1/')
        self.assertEqual(response.status_code, 404)

    def test_game_destroy_unauthorized(self):
        response = self.client.delete('/game/{}/'.format(self.game.pk))
        self.assertEqual(response.status_code, 401)

    def test_game_destroy(self):
        self.authenticate(username=self.player.user.username)
        response = self.client.delete('/game/{}/'.format(self.game.pk))
        self.assertEqual(response.status_code, 204)

    def test_game_update_unauthorized(self):
        data = {
            'title': 'Example 2',
            'start': '2018-02-04T07:28:12.546030+00:00',
            'preferences': {
                'vision_distance': 80,
                'meeting_distance': 40,
                'visible_character': True
            }
        }
        response = self.client.put('/game/{}/'.format(self.game.pk), data)
        self.assertEqual(response.status_code, 401)

    def test_game_update(self):
        self.authenticate(username=self.player.user.username)
        data = {
            'title': 'Example 2',
            'start': '2019-02-04T07:28:12.546030+00:00',
            'preferences': {
                'vision_distance': 80,
                'meeting_distance': 40,
                'visible_character': False
            }
        }
        response = self.client.put('/game/{}/'.format(self.game.pk), data)
        self.assertEqual(response.status_code, 200)
        game_changed = Game.objects.get(pk=self.game.pk)
        for key, value in data.pop('preferences').items():
            self.assertEqual(getattr(game_changed.preferences, key), value)
        for key, value in data.items():
            field = getattr(game_changed, key)
            if key in ['start', 'end']:
                field = field.isoformat()
            self.assertEqual(field, value)
Beispiel #5
0
class ItemTestCase(APITestCase):
    def setUp(self):
        User.objects.create_superuser(username='******',
                                      password='******',
                                      email='*****@*****.**')
        call_command('socialapps')
        self.client = BaseClient(version=settings.VERSION)
        self.player = PlayerFactory.create()
        self.item = ItemFactory.create()

    def tearDown(self):
        self.client = None

    def authenticate(self, username='******', pwd='qweqweqwe'):
        response = self.client.authenticate(username, pwd)
        self.assertEqual(response.status_code, 200)

    def test_item_create(self):
        items_quantity = Item.objects.count()
        data = {
            'name': 'Item',
            'description': 'Item description',
            'shareable': True,
            'pickable': True,
            'consumable': True,
        }

        response = self.client.post('/thing/item/', data)
        self.assertEqual(response.status_code, 401)
        self.authenticate(username=self.player.user.username)
        response = self.client.post('/thing/item/', data)
        self.assertEqual(response.status_code, 201)
        self.assertEqual(Item.objects.count(), items_quantity + 1)

    def test_item_list(self, ):
        response = self.client.get('/thing/item/')
        self.assertEqual(response.status_code, 200)
        self.assertEqual(len(response.json()), 1)
        self.assertEqual(response.json(), [ItemSerializer(self.item).data])

    def test_item_retrieve(self):
        response = self.client.get('/thing/item/{}/'.format(self.item.pk))
        self.assertEqual(response.status_code, 200)
        self.assertEqual(response.json(), ItemSerializer(self.item).data)

    def test_item_retrieve_unknow(self):
        response = self.client.get('/thing/item/-1/')
        self.assertEqual(response.status_code, 404)

    def test_item_destroy_unauthorized(self):
        response = self.client.delete('/thing/item/{}/'.format(self.item.pk))
        self.assertEqual(response.status_code, 401)

    def test_item_destroy(self):
        self.authenticate(username=self.player.user.username)
        response = self.client.delete('/thing/item/{}/'.format(self.item.pk))
        self.assertEqual(response.status_code, 204)

    def test_item_update_unauthorized(self):
        data = {
            'name': 'Item',
            'description': 'Item description',
            'shareable': True,
            'pickable': True,
            'consumable': True,
        }
        response = self.client.put('/thing/item/{}/'.format(self.item.pk),
                                   data)
        self.assertEqual(response.status_code, 401)

    def test_item_update(self):
        self.authenticate(username=self.player.user.username)
        data = {
            'name': 'Item',
            'description': 'Item description',
            'shareable': True,
            'pickable': True,
            'consumable': True,
        }
        response = self.client.put('/thing/item/{}/'.format(self.item.pk),
                                   data)
        self.assertEqual(response.status_code, 200)
        item_changed = Item.objects.get(pk=self.item.pk)
        for key, value in data.items():
            field = getattr(item_changed, key)
            self.assertEqual(field, value)