Exemple #1
0
def integration(request, Agent, Target, permissions, transaction):
    patch(
        request.cls,
        agent=Agent.create(name='agent'),
        target=Target.create(name='target'),
        manager=PeeweePermissionManager(registry=registry),
    )
Exemple #2
0
def integration(request):
    patch(
        request.cls,
        agent=models.Agent.objects.create(),
        target=models.Target.objects.create(),
        manager=DjangoPermissionManager(registry=registry),
    )
Exemple #3
0
def integration(request, Agent, Target, permissions, transaction):
    patch(
        request.cls,
        agent=Agent(),
        target=Target(),
        manager=PonyPermissionManager(registry=registry),
    )
Exemple #4
0
def integration(request, session):
    patch(
        request.cls,
        agent=Agent(),
        target=Target(),
        session=session,
        manager=SqlalchemyPermissionManager(session, registry=registry),
    )
Exemple #5
0
def loaders(request, Agent, transaction):
    record = Agent.create(name='freddie')
    patch(
        request.cls,
        Loader=PeeweeLoader,
        Schema=Agent,
        record=record,
        primary=Agent.id,
        secondary=Agent.name,
    )
Exemple #6
0
def loaders(request):
    record = models.Agent.objects.create()
    patch(
        request.cls,
        Loader=DjangoLoader,
        Schema=models.Agent,
        record=record,
        primary='pk',
        secondary='name',
    )
Exemple #7
0
def test_update_coverage_forbid_unkown_environments_type(app):
    raw = post(app, '/coverages', '{"id": "id_test", "name": "name_test"}')
    assert raw.status_code == 201

    raw = patch(app, '/coverages/id_test', '{"name": "new_name_test", "environments": {"integration": {"name": "bar"}}}')
    assert raw.status_code == 200

    raw = patch(app, '/coverages/id_test', '{"name": "new_name_test", "environments": {"bar": {"name": "bar"}}}')
    assert raw.status_code == 400
    r = to_json(raw)
    assert 'error' in r
Exemple #8
0
def loaders(request, Agent, transaction):
    record = Agent()
    pn.flush()
    patch(
        request.cls,
        Loader=PonyLoader,
        Schema=Agent,
        record=record,
        primary=Agent.id.name,
        secondary=Agent.name.name,
    )
Exemple #9
0
def test_update_coverage_forbid_unkown_environments_type(app):
    raw = post(app, '/coverages', '{"id": "id_test", "name": "name_test"}')
    assert raw.status_code == 201

    raw = patch(app, '/coverages/id_test', '{"name": "new_name_test", "environments": {"integration": {"name": "bar"}}}')
    assert raw.status_code == 200

    raw = patch(app, '/coverages/id_test', '{"name": "new_name_test", "environments": {"bar": {"name": "bar"}}}')
    assert raw.status_code == 400
    r = to_json(raw)
    assert 'error' in r
Exemple #10
0
def loaders(request, session):
    record = Agent()
    session.add(record)
    session.flush()
    patch(
        request.cls,
        session=session,
        Loader=functools.partial(SqlalchemyLoader, session=session),
        Schema=Agent,
        record=record,
        primary=Agent.__table__.c.id,
        secondary=Agent.__table__.c.name,
    )
Exemple #11
0
def test_patch_contrib_data_source_with_full_contributor(app):
    """
    using /contributors endpoint
    """
    post_data = {
        "id": "id_test",
        "name": "name_test",
        "data_prefix": "AAA",
        "data_sources": [
            {
                "name": "data_source_name",
                "input": {
                    "type": "url",
                    "url": "http://stif.com/od.zip"
                }
            }
        ]
    }
    raw = post(app, '/contributors', json.dumps(post_data))
    r = to_json(raw)
    assert raw.status_code == 201, print(r)
    r["contributors"][0]["data_sources"][0]["name"] = "name_modified"
    raw = patch(app, '/contributors/id_test', json.dumps(r["contributors"][0]))
    r = to_json(raw)
    assert raw.status_code == 200, print(r)
    assert len(r["contributors"][0]["data_sources"]) == 1
    patched_data_source = r["contributors"][0]["data_sources"][0]
    assert patched_data_source["name"] == "name_modified"
def test_patch_one_data_source_name_of_two_and_add_one(app):
    post_data = {"id": "id_test", "name":"name_test", "data_prefix":"AAA"}
    post_data["data_sources"] = []
    post_data["data_sources"].append({"name":"data_source_name", "data_format":"Neptune"})
    post_data["data_sources"].append({"name":"data_source_2", "data_format":"Neptune"})
    raw = post(app, '/contributors', json.dumps(post_data))
    r = to_json(raw)
    print("created contrib : ")
    print(r)
    assert raw.status_code == 201, print(r)
    new_data_source = {}
    new_data_source["id"] = r["contributor"]["data_sources"][1]["id"]
    new_data_source["name"] = "name_modified"
    r["contributor"]["data_sources"][0] = new_data_source
    data_source_list = {}
    data_source_list["data_sources"] = [new_data_source, {"name":"data_source_3"}]
    print("patching data with ", json.dumps(data_source_list))
    raw = patch(app, '/contributors/id_test', json.dumps(data_source_list))
    r = to_json(raw)
    assert raw.status_code == 200, print(r)
    assert len(r["contributor"]["data_sources"]) == 3
    patched_data_sources = r["contributor"]["data_sources"]
    assert patched_data_sources[0]["data_format"] == "Neptune"
    assert patched_data_sources[1]["data_format"] == "Neptune"
    assert patched_data_sources[2]["data_format"] == "gtfs"
    assert patched_data_sources[0]["name"] == "data_source_name"
    assert patched_data_sources[1]["name"] == "name_modified"
    assert patched_data_sources[2]["name"] == "data_source_3"
def test_update_contributor_id_impossible(app):
    """It should not be possible to update the id of an object"""
    raw = post(app, '/contributors', '{"id": "id_test", "name": "name_test", "data_prefix":"AAA"}')
    assert raw.status_code == 201
    raw = patch(app, '/contributors/id_test', '{"id": "bob"}')
    r = to_json(raw)
    assert 'error' in r
    assert raw.status_code == 400
def test_update_contributor_data_prefix_error(app):
    raw = post(app, '/contributors', '{"id": "id_test", "name": "name_test", "data_prefix":"AAA"}')
    assert raw.status_code == 201

    raw = patch(app, '/contributors/id_test', '{"data_prefix": "AAB"}')
    r = to_json(raw)

    assert raw.status_code == 400
Exemple #15
0
def test_update_id_impossible(app):
    """It should not be possible to update the id of an object"""
    raw = post(app, '/coverages', '{"id": "id_test", "name": "name_test"}')
    assert raw.status_code == 201
    raw = patch(app, '/coverages/id_test', '{"id": "bob"}')
    r = to_json(raw)
    assert 'error' in r
    assert raw.status_code == 400
Exemple #16
0
 def test_integrity(self):
     field, type = fields[0][:2]
     series = Series.get(self.obj, field, type)
     self.assertIs(series, Series.get(self.obj, field))
     Series.cache.clear()
     with patch(Series.cache, SIZE=0):
         self.assertEqual(series, Series.get(self.obj, field))
     self.assertFalse(Series.cache)
Exemple #17
0
def test_update_contributor_data_prefix_error(app):
    raw = post(app, '/contributors', '{"id": "id_test", "name": "name_test", "data_prefix":"AAA"}')
    assert raw.status_code == 201

    raw = patch(app, '/contributors/id_test', '{"data_prefix": "AAB"}')
    r = to_json(raw)

    assert raw.status_code == 400
Exemple #18
0
def test_update_coverage_forbid_unkown_field(app):
    raw = post(app, '/coverages', '{"id": "id_test", "name": "name_test"}')
    assert raw.status_code == 201

    raw = patch(app, '/coverages/id_test', '{"name": "new_name_test", "foo": "bar"}')
    r = to_json(raw)

    assert raw.status_code == 400
    assert 'error' in r
Exemple #19
0
def test_update_coverage_forbid_unkown_field(app):
    raw = post(app, '/coverages', '{"id": "id_test", "name": "name_test"}')
    assert raw.status_code == 201

    raw = patch(app, '/coverages/id_test', '{"name": "new_name_test", "foo": "bar"}')
    r = to_json(raw)

    assert raw.status_code == 400
    assert 'error' in r
Exemple #20
0
def test_update_coverage_returns_success_status(app):
    raw = post(app, '/coverages', '{"id": "id_test", "name": "name_test"}')
    assert raw.status_code == 201

    raw = patch(app, '/coverages/id_test', '{"name": "new_name_test"}')
    r = to_json(raw)

    assert raw.status_code == 200
    assert r["coverage"]['id'] == "id_test"
    assert r["coverage"]['name'] == "new_name_test"
def test_update_contributor_name(app):
    raw = post(app, '/contributors', '{"id": "id_test", "name": "name_test", "data_prefix":"AAA"}')
    assert raw.status_code == 201

    raw = patch(app, '/contributors/id_test', '{"name": "new_name_test"}')
    r = to_json(raw)

    assert raw.status_code == 200
    assert r["contributor"]['id'] == "id_test"
    assert r["contributor"]['name'] == "new_name_test"
Exemple #22
0
def test_update_coverage_returns_success_status(app):
    raw = post(app, '/coverages', '{"id": "id_test", "name": "name_test"}')
    assert raw.status_code == 201

    raw = patch(app, '/coverages/id_test', '{"name": "new_name_test"}')
    r = to_json(raw)

    assert raw.status_code == 200
    assert r["coverages"][0]['id'] == "id_test"
    assert r["coverages"][0]['name'] == "new_name_test"
Exemple #23
0
def test_update_contributor_name(app):
    raw = post(app, '/contributors', '{"id": "id_test", "name": "name_test", "data_prefix":"AAA"}')
    assert raw.status_code == 201

    raw = patch(app, '/contributors/id_test', '{"name": "new_name_test"}')
    r = to_json(raw)

    assert raw.status_code == 200
    assert r["contributors"][0]['id'] == "id_test"
    assert r["contributors"][0]['name'] == "new_name_test"
Exemple #24
0
    def test_version(self):
        host_info = self.mock_servers["mynewhost"]
        with timed("csr", 10):
            data = {
                "fqdn": host_info["fqdn"],
                "nodename": host_info["nodename"],
                "version": "1.0",
                "capabilities": ["manage_targets"],
                "address": "mynewhost",
                "csr": generate_csr(host_info["fqdn"]),
            }

        with patch(settings, VERSION="2.0"):
            # Try with a mis-matched version
            token = RegistrationToken.objects.create(
                profile=ServerProfile.objects.get())
            with timed("register fail", 10):
                response = Client().post("/agent/register/%s/" % token.secret,
                                         data=json.dumps(data),
                                         content_type="application/json")
            self.assertEqual(response.status_code, 400)

            # Try with a matching version
            token = RegistrationToken.objects.create(
                profile=ServerProfile.objects.get())
            settings.VERSION = "1.1"
            with timed("register pass", 10):
                response = Client().post("/agent/register/%s/" % token.secret,
                                         data=json.dumps(data),
                                         content_type="application/json")
            self.assertEqual(response.status_code, 201)
            content = json.loads(response.content)

            # reregistration should fail with unknown serial
            data = {"address": "mynewhost", "fqdn": "mynewhost.newcompany.com"}
            headers = {
                "HTTP_X_SSL_CLIENT_NAME": host_info["fqdn"],
                "HTTP_X_SSL_CLIENT_SERIAL": ""
            }
            response = Client().post("/agent/reregister/",
                                     data=json.dumps(data),
                                     content_type="application/json",
                                     **headers)
            self.assertEqual(response.status_code, 403)

            # reregistration should update host's domain name
            headers["HTTP_X_SSL_CLIENT_SERIAL"] = Crypto().get_serial(
                content["certificate"])
            response = Client().post("/agent/reregister/",
                                     data=json.dumps(data),
                                     content_type="application/json",
                                     **headers)
            self.assertEqual(response.status_code, 200)
            host = ManagedHost.objects.get(id=content["host_id"])
            self.assertEqual(host.fqdn, data["fqdn"])
    def test_version(self):
        host_info = self.mock_servers['mynewhost']
        with timed('csr', 10):
            data = {
                'fqdn': host_info['fqdn'],
                'nodename': host_info['nodename'],
                'version': '1.0',
                'capabilities': ['manage_targets'],
                'address': 'mynewhost',
                'csr': generate_csr(host_info['fqdn']),
            }

        with patch(settings, VERSION='2.0'):
            # Try with a mis-matched version
            token = RegistrationToken.objects.create(
                profile=ServerProfile.objects.get())
            with timed('register fail', 10):
                response = Client().post("/agent/register/%s/" % token.secret,
                                         data=json.dumps(data),
                                         content_type="application/json")
            self.assertEqual(response.status_code, 400)

            # Try with a matching version
            token = RegistrationToken.objects.create(
                profile=ServerProfile.objects.get())
            settings.VERSION = '1.1'
            with timed('register pass', 10):
                response = Client().post("/agent/register/%s/" % token.secret,
                                         data=json.dumps(data),
                                         content_type="application/json")
            self.assertEqual(response.status_code, 201)
            content = json.loads(response.content)

            # reregistration should fail with unknown serial
            data = {'address': 'mynewhost', 'fqdn': 'mynewhost.newcompany.com'}
            headers = {
                'HTTP_X_SSL_CLIENT_NAME': host_info['fqdn'],
                'HTTP_X_SSL_CLIENT_SERIAL': ''
            }
            response = Client().post('/agent/reregister/',
                                     data=json.dumps(data),
                                     content_type='application/json',
                                     **headers)
            self.assertEqual(response.status_code, 403)

            # reregistration should update host's domain name
            headers['HTTP_X_SSL_CLIENT_SERIAL'] = Crypto().get_serial(
                content['certificate'])
            response = Client().post('/agent/reregister/',
                                     data=json.dumps(data),
                                     content_type='application/json',
                                     **headers)
            self.assertEqual(response.status_code, 200)
            host = ManagedHost.objects.get(id=content['host_id'])
            self.assertEqual(host.fqdn, data['fqdn'])
Exemple #26
0
def test_patch_ds_data_source_name_only(app, data_source):
    """
    using /data_sources endpoint
    """
    modif_ds = {"name": "name_modified"}
    raw = patch(
        app, '/contributors/id_test/data_sources/{}'.format(data_source["id"]),
        json.dumps(modif_ds))
    r = to_json(raw)
    assert raw.status_code == 200, print(r)
    assert len(r["data_sources"]) == 1
    patched_data_source = r["data_sources"][0]
    assert patched_data_source["name"] == "name_modified"
    assert patched_data_source["data_format"] == "Neptune"
Exemple #27
0
def test_patch_ds_data_source_with_full_contributor(app, data_source):
    """
    using /data_sources endpoint
    """
    data_source["name"] = "name_modified"
    print("patching data with ", json.dumps(data_source))
    raw = patch(
        app, '/contributors/id_test/data_sources/{}'.format(data_source["id"]),
        json.dumps(data_source))
    r = to_json(raw)
    assert raw.status_code == 200, print(r)
    assert len(r["data_sources"]) == 1
    patched_data_source = r["data_sources"][0]
    assert patched_data_source["name"] == "name_modified"
Exemple #28
0
def test_patch_simple_coverage(app):
    raw = post(app, '/coverages',
               '''{"id": "id_test", "name": "name of the coverage"}''')
    assert raw.status_code == 201
    raw = app.get('/coverages')
    r = to_json(raw)
    assert len(r["coverages"]) == 1
    assert isinstance(r["coverages"], list)
    assert r["coverages"][0]["id"] == "id_test"
    assert r["coverages"][0]["name"] == "name of the coverage"

    raw = patch(app, '/coverages/id_test', '{"name": "new name"}')
    assert raw.status_code == 200
    r = to_json(raw)
    assert r["coverages"][0]["id"] == "id_test"
    assert r["coverages"][0]["name"] == "new name"
Exemple #29
0
def test_patch_simple_coverage(app):
    raw = post(app, '/coverages',
               '''{"id": "id_test", "name": "name of the coverage"}''')
    assert raw.status_code == 201
    raw = app.get('/coverages')
    r = to_json(raw)
    assert len(r["coverages"]) == 1
    assert isinstance(r["coverages"], list)
    assert r["coverages"][0]["id"] == "id_test"
    assert r["coverages"][0]["name"] == "name of the coverage"

    raw = patch(app, '/coverages/id_test', '{"name": "new name"}')
    assert raw.status_code == 200
    r = to_json(raw)
    assert r["coverage"]["id"] == "id_test"
    assert r["coverage"]["name"] == "new name"
def test_patch_data_source_with_full_contributor(app):
    post_data = {"id": "id_test", "name":"name_test", "data_prefix":"AAA"}
    post_data["data_sources"] = []
    post_data["data_sources"].append({"name":"data_source_name"})
    raw = post(app, '/contributors', json.dumps(post_data))
    r = to_json(raw)
    assert raw.status_code == 201, print(r)
    r["contributor"]["data_sources"][0]["name"] = "name_modified"
    print("patching data with ", json.dumps(r["contributor"]))
    raw = patch(app, '/contributors/id_test', json.dumps(r["contributor"]))
    r = to_json(raw)
    print(r)
    assert raw.status_code == 200, print(r)
    assert len(r["contributor"]["data_sources"]) == 1
    patched_data_source = r["contributor"]["data_sources"][0]
    assert patched_data_source["name"] == "name_modified"
def test_update_preprocess_with_id(app):
    '''
    using /contributors endpoint
    '''
    post_data = {"id": "id_test", "name": "name_test", "data_prefix": "AAA"}
    post_data["preprocesses"] = [{
        "id": "toto",
        "type": "Ruspell",
        "source_params": {
            "tc_data": {
                "key": "data_sources_id",
                "value": "datasource_stif"
            },
            "bano_data": {
                "key": "data_sources_id",
                "value": "bano_75"
            }
        }
    }]
    raw = post(app, '/contributors', json.dumps(post_data))
    assert raw.status_code == 201, print(to_json(raw))
    raw = app.get('/contributors/id_test/')
    r = to_json(raw)
    assert raw.status_code == 200, print(r)
    assert len(r["contributors"][0]["preprocesses"]) == 1
    preprocess_id = r["contributors"][0]["preprocesses"][0]["id"]
    new_preprocess = {
        "type": "ComputeDirections",
        "source_params": {
            "tc_data": {
                "key": "data_sources.data_format",
                "value": "gtfs"
            }
        }
    }

    raw = patch(app,
                '/contributors/id_test/preprocesses/{}'.format(preprocess_id),
                json.dumps(new_preprocess))
    r = to_json(raw)
    assert raw.status_code == 200, print(r)
    assert len(r["preprocesses"]) == 1
    assert r["preprocesses"][0]["type"] == new_preprocess["type"]
    assert r["preprocesses"][0]["source_params"] == new_preprocess[
        "source_params"]
def test_update_preprocess_with_unknown_type(app):
    '''
    using /contributors endpoint
    '''
    post_data = {"id": "id_test", "name": "name_test", "data_prefix": "AAA"}
    post_data["preprocesses"] = [{
        "id": "toto",
        "type": "Ruspell",
        "source_params": {
            "tc_data": {
                "key": "data_sources_id",
                "value": "datasource_stif"
            },
            "bano_data": {
                "key": "data_sources_id",
                "value": "bano_75"
            }
        }
    }]
    raw = post(app, '/contributors', json.dumps(post_data))
    r = to_json(raw)
    assert raw.status_code == 201, print(r)

    preprocess_id = r["contributors"][0]["preprocesses"][0]["id"]
    new_preprocess = {
        "type": "bob",
        "source_params": {
            "tc_data": {
                "key": "data_sources.data_format",
                "value": "gtfs"
            }
        }
    }

    raw = patch(app,
                '/contributors/id_test/preprocesses/{}'.format(preprocess_id),
                json.dumps(new_preprocess))
    r = to_json(raw)
    assert raw.status_code == 400, print(r)
    assert 'error' in r
    assert r['error'] == 'Invalid process type bob'
Exemple #33
0
def test_update_coverage__env(app):
    raw = post(app, '/coverages', '{"id": "id_test", "name": "name_test"}')
    assert raw.status_code == 201

    raw = patch(app, '/coverages/id_test',
            '''{"environments" : {
                    "preproduction": {"name": "pre", "tyr_url": "http://pre.bar/"},
                    "production": null
                }}''')

    assert raw.status_code == 200
    raw = app.get('/coverages')
    r = to_json(raw)
    assert len(r["coverages"]) == 1
    assert isinstance(r["coverages"], list)
    coverage = r["coverages"][0]
    assert coverage["id"] == "id_test"
    assert coverage["name"] == "name_test"
    assert 'environments' in coverage
    assert 'production' not in coverage['environments']
    assert 'preproduction' in coverage['environments']
    assert coverage['environments']['preproduction']['name'] == 'pre'
    assert coverage['environments']['preproduction']['tyr_url'] == 'http://pre.bar/'
Exemple #34
0
def test_update_coverage__env(app):
    raw = post(app, '/coverages', '{"id": "id_test", "name": "name_test"}')
    assert raw.status_code == 201

    raw = patch(app, '/coverages/id_test',
            '''{"environments" : {
                    "preproduction": {"name": "pre", "tyr_url": "http://pre.bar/"},
                    "production": null
                }}''')
    print(raw.data)
    assert raw.status_code == 200
    raw = app.get('/coverages')
    r = to_json(raw)
    assert len(r["coverages"]) == 1
    assert isinstance(r["coverages"], list)
    coverage = r["coverages"][0]
    assert coverage["id"] == "id_test"
    assert coverage["name"] == "name_test"
    assert 'environments' in coverage
    assert 'production' not in coverage['environments']
    assert 'preproduction' in coverage['environments']
    assert coverage['environments']['preproduction']['name'] == 'pre'
    assert coverage['environments']['preproduction']['tyr_url'] == 'http://pre.bar/'
Exemple #35
0
def test_patch_contrib_data_source_only(app, data_source):
    """
    using /contributors endpoint
    """
    new_data_source = {
        "id": data_source["id"],
        "name": "name_modified",
        "input": {
            "type": "existing_version",
            "v": "-2"
        }
    }
    data_source_list = {}
    data_source_list["data_sources"] = [new_data_source]
    print("patching data with ", json.dumps(data_source_list))
    raw = patch(app, '/contributors/id_test', json.dumps(data_source_list))
    r = to_json(raw)
    assert raw.status_code == 200, print(r)
    assert len(r["contributors"][0]["data_sources"]) == 1
    patched_data_source = r["contributors"][0]["data_sources"][0]
    assert patched_data_source["name"] == "name_modified"
    assert patched_data_source["data_format"] == "Neptune"
    assert patched_data_source["input"]["type"] == "existing_version"
    assert patched_data_source["input"]["v"] == "-2"
def test_update_unknown_coverage(app):
    raw = patch(app, '/contributors/unknown', '{"name": "new_name_test"}')
    r = to_json(raw)
    assert 'message' in r
    assert raw.status_code == 404
Exemple #37
0
def test_patch_ds_one_data_source_name_of_two_and_add_one(app, contributor):
    """
    using /data_sources endpoint
    """
    post_ds = {
        "id": "ds1_id",
        "name": "data_source_name1",
        "data_format": "Neptune",
        "input": {
            "type": "url",
            "url": "http://stif.com/od.zip"
        }
    }
    raw = post(app, '/contributors/id_test/data_sources', json.dumps(post_ds))
    r = to_json(raw)
    assert raw.status_code == 201, print(r)
    post_ds = {
        "id": "ds2_id",
        "name": "data_source_name2",
        "data_format": "Neptune",
        "input": {
            "type": "url",
            "url": "http://stif.com/od.zip"
        }
    }
    raw = post(app, '/contributors/id_test/data_sources', json.dumps(post_ds))
    r = to_json(raw)
    assert raw.status_code == 201, print(r)
    modif_ds = {
        "name": "name_modified",
        "data_format": "Neptune",
        "input": {
            "type": "url",
            "url": "http://stif.com/od.zip"
        }
    }
    raw = patch(app, '/contributors/id_test/data_sources/ds2_id',
                json.dumps(modif_ds))
    r = to_json(raw)
    assert raw.status_code == 200, print(r)
    post_ds = {
        "id": "ds3_id",
        "name": "data_source_name3",
        "input": {
            "type": "url",
            "url": "http://stif.com/od.zip"
        }
    }
    raw = post(app, '/contributors/id_test/data_sources', json.dumps(post_ds))
    r = to_json(raw)
    assert raw.status_code == 201, print(r)

    raw = app.get('/contributors/id_test/data_sources')
    r = to_json(raw)
    assert raw.status_code == 200, print(r)
    assert len(r["data_sources"]) == 3
    patched_data_sources = r["data_sources"]
    assert patched_data_sources[0]["data_format"] == "Neptune"
    assert patched_data_sources[1]["data_format"] == "Neptune"
    assert patched_data_sources[2]["data_format"] == "gtfs"
    assert patched_data_sources[0]["name"] == "data_source_name1"
    assert patched_data_sources[1]["name"] == "name_modified"
    assert patched_data_sources[2]["name"] == "data_source_name3"
Exemple #38
0
def test_update_unknown_coverage(app):
    raw = patch(app, '/coverages/unknown', '{"name": "new_name_test"}')
    r = to_json(raw)
    assert 'message' in r
    assert raw.status_code == 404
Exemple #39
0
def test_patch_contrib_one_data_source_name_of_two_and_add_one(app):
    """
    using /contributors endpoint
    """
    post_data = {
        "id": "id_test",
        "name": "name_test",
        "data_prefix": "AAA",
        "data_sources": [
            {
                "name": "data_source_name",
                "data_format": "Neptune",
                "input": {
                    "type": "url",
                    "url": "http://stif.com/od.zip"
                }
            },
            {
                "name": "data_source_2",
                "data_format": "Neptune",
                "input": {
                    "type": "url",
                    "url": "http://stif.com/od.zip"
                }
            }
        ]
    }
    raw = post(app, '/contributors', json.dumps(post_data))
    r = to_json(raw)
    assert raw.status_code == 201, print(r)
    new_data_source = {
        "id": r["contributors"][0]["data_sources"][1]["id"],
        "name": "name_modified",
        "input": {
            "type": "existing_version",
            "v": "-2"
        }
    }
    r["contributors"][0]["data_sources"][0] = new_data_source
    data_source_list = {}
    data_source_list["data_sources"] = [
        new_data_source,
        {
            "name": "data_source_3",
            "input": {
                "type": "url",
                "url": "http://stif.com/od.zip"
            }
        }
    ]
    print("patching data with ", json.dumps(data_source_list))
    raw = patch(app, '/contributors/id_test', json.dumps(data_source_list))
    r = to_json(raw)
    assert raw.status_code == 200, print(r)
    assert len(r["contributors"][0]["data_sources"]) == 3
    patched_data_sources = r["contributors"][0]["data_sources"]
    assert patched_data_sources[0]["data_format"] == "Neptune"
    assert patched_data_sources[1]["data_format"] == "Neptune"
    assert patched_data_sources[2]["data_format"] == "gtfs"
    assert patched_data_sources[0]["name"] == "data_source_name"
    assert patched_data_sources[1]["name"] == "name_modified"
    assert patched_data_sources[2]["name"] == "data_source_3"
def test_update_preprocesses_with_id(app):
    '''
    using /contributors endpoint
    '''
    post_data = {"id": "id_test", "name": "name_test", "data_prefix": "AAA"}
    post_data["preprocesses"] = [{
        "id": "toto",
        "type": "Ruspell",
        "source_params": {
            "tc_data": {
                "key": "data_sources_id",
                "value": "datasource_stif"
            },
            "bano_data": {
                "key": "data_sources_id",
                "value": "bano_75"
            }
        }
    }, {
        "id": "titi",
        "type": "ComputeDirections",
        "source_params": {
            "tc_data": {
                "key": "data_sources.data_format",
                "value": "gtfs"
            }
        }
    }]

    raw = post(app, '/contributors', json.dumps(post_data))
    assert raw.status_code == 201, print(to_json(raw))
    raw = app.get('/contributors/id_test/')
    r = to_json(raw)
    assert raw.status_code == 200, print(r)
    assert len(r["contributors"][0]["preprocesses"]) == 2
    new_preprocess = {
        "type": "HeadsignShortName",
        "source_params": {
            "tc_data": {
                "key": "data_sources.data_format",
                "value": "ffff"
            }
        }
    }

    raw = patch(app, '/contributors/id_test/preprocesses/titi',
                json.dumps(new_preprocess))
    r = to_json(raw)
    assert raw.status_code == 200, print(r)
    # Update only one preprocess
    assert len(r["preprocesses"]) == 1

    raw = app.get('/contributors/id_test')
    r = to_json(raw)
    assert raw.status_code == 200, print(r)
    assert len(r["contributors"][0]["preprocesses"]) == 2
    p_titi = None
    for p in r["contributors"][0]["preprocesses"]:
        if p['id'] == 'titi':
            p_titi = p
    assert p_titi
    assert p_titi['type'] == 'HeadsignShortName'