コード例 #1
0
ファイル: views_test.py プロジェクト: TylerMorley/redwind
def test_indieauth_login(app, client, mocker):
    mock_get = mocker.patch('requests.get')
    mock_post = mocker.patch('requests.post')
    mock_login = mocker.patch('flask.ext.login.login_user')
    mock_logout = mocker.patch('flask.ext.login.logout_user')

    user_html = '<html><a class="h-card" href="/" rel="me">Example User</a></html>'
    mock_get.return_value = FakeResponse(user_html)
    rv = client.get('/login?me=http://example.com')

    assert rv.status_code == 302
    assert_urls_match(
        rv.location, 'https://indieauth.com/auth?' + urllib.parse.urlencode(
            {
                'state': None,
                'me': 'http://example.com',
                'client_id': 'http://example.com',
                'redirect_uri': 'http://localhost/login_callback',
            }))
    mock_get.assert_called_once_with('http://example.com')
    mock_get.reset_mock()

    mock_post.return_value = FakeResponse(
        urllib.parse.urlencode({
            'me': 'http://example.com',
        }))

    rv = client.get('/login_callback?' +
                    urllib.parse.urlencode({'code': 'abc123'}))
    assert rv.status_code == 302
    assert rv.location == 'http://localhost/'
    mock_post.assert_called_once_with('https://indieauth.com/auth',
                                      data={
                                          'code': 'abc123',
                                          'client_id': 'http://example.com',
                                          'redirect_uri':
                                          'http://localhost/login_callback',
                                          'state': None,
                                      })

    mock_get.assert_called_once_with(
        'http://example.com', headers={'User-Agent': mf2py.Parser.useragent})
    mock_login.assert_called_once_with(User(id=1, name='Example User'),
                                       remember=True)

    cred = Credential.query.filter_by(type='indieauth',
                                      value='http://example.com').first()
    assert cred
    assert cred.user
    assert cred.user.name == 'Example User'

    client.get('/logout')
    mock_logout.assert_called_once_with()
コード例 #2
0
ファイル: views_test.py プロジェクト: kylewm/redwind
def test_indieauth_login(app, client, mocker):
    mock_get = mocker.patch('requests.get')
    mock_post = mocker.patch('requests.post')
    mock_login = mocker.patch('flask.ext.login.login_user')
    mock_logout = mocker.patch('flask.ext.login.logout_user')

    user_html = '<html><a class="h-card" href="/" rel="me">Example User</a></html>'
    mock_get.return_value = FakeResponse(user_html)
    rv = client.get('/login?me=http://example.com')

    assert rv.status_code == 302
    assert_urls_match(
        rv.location,
        'https://indieauth.com/auth?' + urllib.parse.urlencode({
            'state': None,
            'me': 'http://example.com',
            'client_id': 'http://example.com',
            'redirect_uri': 'http://localhost/login_callback',
        }))
    mock_get.assert_called_once_with('http://example.com')
    mock_get.reset_mock()

    mock_post.return_value = FakeResponse(urllib.parse.urlencode({
        'me': 'http://example.com',
    }))

    rv = client.get('/login_callback?' + urllib.parse.urlencode({
        'code': 'abc123'
    }))
    assert rv.status_code == 302
    assert rv.location == 'http://localhost/'
    mock_post.assert_called_once_with('https://indieauth.com/auth', data={
        'code': 'abc123',
        'client_id': 'http://example.com',
        'redirect_uri': 'http://localhost/login_callback',
        'state': None,
    })

    mock_get.assert_called_once_with('http://example.com', headers={'User-Agent': mf2py.Parser.useragent})
    mock_login.assert_called_once_with(
        User(id=1, name='Example User'), remember=True)

    cred = Credential.query.filter_by(type='indieauth',
                                      value='http://example.com').first()
    assert cred
    assert cred.user
    assert cred.user.name == 'Example User'

    client.get('/logout')
    mock_logout.assert_called_once_with()
コード例 #3
0
ファイル: views_test.py プロジェクト: thedod/redwind
def test_indieauth_login(app, client, mocker):
    mock_get = mocker.patch('requests.get')
    mock_post = mocker.patch('requests.post')
    mock_login = mocker.patch('flask_login.login_user')
    mock_logout = mocker.patch('flask_login.logout_user')

    mock_get.return_value = FakeResponse('<html></html>')
    rv = client.get('/login?me=http://example.com')

    assert rv.status_code == 302
    assert_urls_match(
        rv.location,
        'https://indieauth.com/auth?' + urllib.parse.urlencode({
            'state': None,
            'me': 'http://example.com',
            'client_id': 'http://example.com',
            'redirect_uri': 'http://localhost/login_callback',
        }))
    mock_get.assert_called_once_with('http://example.com')
    mock_get.reset_mock()

    mock_post.return_value = FakeResponse(urllib.parse.urlencode({
        'me': 'http://example.com',
    }))
    rv = client.get('/login_callback?' + urllib.parse.urlencode({
        'code': 'abc123'
    }))
    assert rv.status_code == 302
    assert rv.location == 'http://localhost/'
    mock_post.assert_called_once_with('https://indieauth.com/auth', data={
        'code': 'abc123',
        'client_id': 'http://example.com',
        'redirect_uri': 'http://localhost/login_callback',
        'state': None,
    })

    mock_login.assert_called_once_with(User('example.com'), remember=True)
    client.get('/logout')
    mock_logout.assert_called_once_with()