예제 #1
0
def test_handle_curie():
    data = {
        '_links': {
            'self': {
                'href': '/hi'
            },
            'curie': {
                'href': 'http://example.com/barnacle/{rel}',
                'name': 'barnacle',
                'templated': True
            },
            'barnacle:shell': {
                'href': '/some/path'
            }
        },
        '_embedded': {
            'barnacle:cow': [{
                'name': 'how'
            }, {
                'name': 'now'
            }, {
                'name': 'brown'
            }]
        }
    }

    doc = HalDocument.from_python(data)
    curies = doc.get_curies()

    assert 'barnacle' in curies

    resolver = Resolver(curies)

    assert resolver.expand('barnacle:cow') == 'http://example.com/barnacle/cow'
예제 #2
0
def test_handle_curie():
    data = {
        "_links": {
            "self": {"href": "/hi"},
            "curie": {"href": "http://example.com/barnacle/{rel}", "name": "barnacle", "templated": True},
            "barnacle:shell": {"href": "/some/path"},
        },
        "_embedded": {"barnacle:cow": [{"name": "how"}, {"name": "now"}, {"name": "brown"}]},
    }

    doc = HalDocument.from_python(data)
    curies = doc.get_curies()

    assert "barnacle" in curies

    resolver = Resolver(curies)

    assert resolver.expand("barnacle:cow") == "http://example.com/barnacle/cow"
예제 #3
0
def test_go_the_distance():
    # GET root
    response, content = http.request('http://0.0.0.0:8080/',
            headers={'Accept': 'application/hal+json'})
    assert response['status'] == '200'
    assert response['content-type'] == 'application/hal+json; charset=UTF-8'

    document = HalDocument.from_json(content)
    resolver = Resolver(document.get_curies())
    links = document.links

    assert 'tiddlyweb:bags' in links
    assert (resolver.expand('tiddlyweb:bags')
            == 'http://tiddlyweb.com/relations/bags')

    target_link = links['tiddlyweb:bags']['href']
    assert target_link == 'http://0.0.0.0:8080/bags'

    # GET bags
    response, content = http.request(target_link,
            headers={'Accept': 'application/hal+json'})
    assert response['status'] == '200'
    assert response['content-type'] == 'application/hal+json; charset=UTF-8'

    document = HalDocument.from_json(content)
    links = document.links

    data = document.get_data('tiddlyweb:bag')
    assert len(data) == 0

    bags_link = target_link

    # Make a bag
    assert 'tiddlyweb:bag' in links
    target_link = expand(links['tiddlyweb:bag']['href'], {'bag': 'mybag'})
    assert target_link == 'http://0.0.0.0:8080/bags/mybag'

    response, content = http.request(target_link,
            method='PUT',
            headers={'Content-Type': 'application/json'},
            body='{"desc": "my own special bag"}')

    assert response['status'] == '204'
    assert response['location'] == target_link

    # GET bags again, this time there is one
    response, content = http.request(bags_link,
            headers={'Accept': 'application/hal+json'})
    assert response['status'] == '200'
    assert response['content-type'] == 'application/hal+json; charset=UTF-8'

    document = HalDocument.from_json(content)
    links = document.links

    data = document.get_data('tiddlyweb:bag')
    assert len(data) == 1
    assert data[0]['name'] == 'mybag'

    # GET the single bag
    response, content = http.request(target_link,
            headers={'Accept': 'application/hal+json'})
    assert response['status'] == '200'
    assert response['content-type'] == 'application/hal+json; charset=UTF-8'
    document = HalDocument.from_json(content)
    links = document.links

    assert 'tiddlyweb:tiddlers' in links

    target_link = links['tiddlyweb:tiddlers']['href']

    # GET the (empty) tiddlers
    response, content = http.request(target_link,
            headers={'Accept': 'application/hal+json'})
    assert response['status'] == '200', content
    assert response['content-type'] == 'application/hal+json; charset=UTF-8'
    document = HalDocument.from_json(content)
    links = document.links

    data = document.get_data('tiddlyweb:tiddler')
    assert len(data) == 0

    tiddlers_link = target_link

    target_link = expand(links['tiddlyweb:tiddler']['href'],
            {'tiddler': 'mytiddler'})
    response, content = http.request(target_link,
            method='PUT',
            headers={'Content-Type': 'application/json'},
            body='{"text": "oh hai", "tags": ["tagone", "tagtwo"]}')

    assert response['status'] == '204'
    assert response['location'] == target_link

    # GET the (no longer empty) tiddlers
    response, content = http.request(tiddlers_link,
            headers={'Accept': 'application/hal+json'})
    assert response['status'] == '200', content
    assert response['content-type'] == 'application/hal+json; charset=UTF-8'
    document = HalDocument.from_json(content)
    links = document.links

    data = document.get_data('tiddlyweb:tiddler')
    assert len(data) == 1

    assert data[0]['title'] == 'mytiddler'