Ejemplo n.º 1
0
def test_can_update_dynamic_challenge():
    """Test that dynamic challenges can be deleted"""
    app = create_ctfd(enable_plugins=True)
    with app.app_context():
        challenge_data = {
            "name": "name",
            "category": "category",
            "description": "description",
            "value": 100,
            "decay": 20,
            "minimum": 1,
            "state": "hidden",
            "type": "dynamic",
        }
        req = FakeRequest(form=challenge_data)
        challenge = DynamicValueChallenge.create(req)

        assert challenge.value == 100
        assert challenge.initial == 100
        assert challenge.decay == 20
        assert challenge.minimum == 1

        challenge_data = {
            "name": "new_name",
            "category": "category",
            "description": "new_description",
            "value": "200",
            "initial": "200",
            "decay": "40",
            "minimum": "5",
            "max_attempts": "0",
            "state": "visible",
        }

        req = FakeRequest(form=challenge_data)
        challenge = DynamicValueChallenge.update(challenge, req)

        assert challenge.name == "new_name"
        assert challenge.description == "new_description"
        assert challenge.value == 200
        assert challenge.initial == 200
        assert challenge.decay == 40
        assert challenge.minimum == 5
        assert challenge.state == "visible"

    destroy_ctfd(app)
Ejemplo n.º 2
0
    def test_update_for_incorrect_data(self):
        with DBHandler():
            sample_model = asyncio.get_event_loop().run_until_complete(
                SampleModel.first())
            response = asyncio.get_event_loop().run_until_complete(
                self.sample_model_view.update(
                    FakeRequest(url_params={'id': sample_model.id},
                                data=b'/x///')))
            response_data = json.loads(response.body.decode())

            assert response_data == {'detail': 'invalid request for update'}
Ejemplo n.º 3
0
    def test_delete(self):
        with DBHandler():
            sample_model = asyncio.get_event_loop().run_until_complete(
                SampleModel.first())
            response = asyncio.get_event_loop().run_until_complete(
                self.sample_model_view.delete(
                    FakeRequest(url_params={'id': sample_model.id})))
            response_data = json.loads(response.body.decode())

            assert response_data == {'deleted': True}
            assert asyncio.get_event_loop().run_until_complete(
                SampleModel.filter(id=sample_model.id)) == []
Ejemplo n.º 4
0
    def test_create_for_invalid_data(self):
        with DBHandler():
            response = asyncio.get_event_loop().run_until_complete(
                self.sample_model_view.create(
                    FakeRequest(data={'name': [1, 2, 3]})))
            response_data = json.loads(response.body.decode())

            assert response_data == {
                'detail': {
                    'name': 'incorrect value, cannot transform to string'
                }
            }
Ejemplo n.º 5
0
    def test_get_correct_instance(self):
        with DBHandler():
            sample_model = asyncio.get_event_loop().run_until_complete(
                SampleModel.first())
            response = asyncio.get_event_loop().run_until_complete(
                self.sample_model_view.instance(
                    FakeRequest(url_params={'id': sample_model.id})))
            response_data = json.loads(response.body.decode())

            assert {
                'id': sample_model.id,
                'name': sample_model.name
            } == response_data
Ejemplo n.º 6
0
    def test_get_list(self):
        with DBHandler():
            response = asyncio.get_event_loop().run_until_complete(
                self.sample_model_view.list(FakeRequest()))
            response_data = json.loads(response.body.decode())
            sample_models = asyncio.get_event_loop().run_until_complete(
                SampleModel.all())
            models_dicts = [{
                'id': sample_model.id,
                'name': sample_model.name
            } for sample_model in sample_models]

            assert models_dicts == response_data
Ejemplo n.º 7
0
    def test_create(self):
        with DBHandler():
            create_data = {'name': 'correct name'}
            response = asyncio.get_event_loop().run_until_complete(
                self.sample_model_view.create(
                    FakeRequest(data={'name': 'correct name'})))
            response_data = json.loads(response.body.decode())

            new_instance = asyncio.get_event_loop().run_until_complete(
                SampleModel.get(**create_data))

            assert {
                'id': new_instance.id,
                'name': new_instance.name
            } == response_data
Ejemplo n.º 8
0
    def test_update(self):
        with DBHandler():
            update_data = {'name': 'updated name'}
            sample_model = asyncio.get_event_loop().run_until_complete(
                SampleModel.first())
            response = asyncio.get_event_loop().run_until_complete(
                self.sample_model_view.update(
                    FakeRequest(url_params={'id': sample_model.id},
                                data=update_data)))
            response_data = json.loads(response.body.decode())
            sample_model = asyncio.get_event_loop().run_until_complete(
                SampleModel.get(**update_data))

            assert response_data == {
                'id': sample_model.id,
                'name': sample_model.name
            }
Ejemplo n.º 9
0
    def test_delete_for_incorrect_url(self):
        response = asyncio.get_event_loop().run_until_complete(
            self.sample_model_view.delete(FakeRequest()))
        response_data = json.loads(response.body.decode())

        assert response_data == {'detail': 'Method DELETE not allowed.'}
Ejemplo n.º 10
0
    def test_update_for_invalid_url(self):
        response = asyncio.get_event_loop().run_until_complete(
            self.sample_model_view.update(FakeRequest(url_params={})))
        response_data = json.loads(response.body.decode())

        assert response_data == {'detail': 'Method PATCH not allowed.'}