Exemple #1
0
def test_authenticate_success():
    ygg = YggdrasilCore()
    ygg._ygg_req = ygg_req = mock.MagicMock()
    ygg_req.return_value = {'accessToken': 'myaccess',
                            'clientToken': 'mytoken',
                            'availableProfiles': ['a', 'b'],
                            'selectedProfile': 'a'}

    ygg.username = '******'
    ygg.password = '******'
    ygg.client_token = 'clienttoken'

    res = ygg.authenticate()

    ygg_req.assert_called_once_with('/authenticate', {
        'agent': {
            'name': 'Minecraft',
            'version': 1,
        },
        'username': '******',
        'password': '******',
        'clientToken': 'clienttoken',
    })

    assert ygg.username == 'user'
    assert ygg.password == 'pass'
    assert ygg.client_token == 'mytoken'
    assert ygg.access_token == 'myaccess'
    assert res
Exemple #2
0
def test_authenticate_failure():
    ygg = YggdrasilCore()
    ygg._ygg_req = ygg_req = mock.MagicMock()
    ygg_req.return_value = {'error': 1}

    ygg.username = '******'
    ygg.password = '******'
    ygg.client_token = 'clienttoken'
    res = ygg.authenticate()

    ygg_req.assert_called_once_with('/authenticate', {
        'agent': {
            'name': 'Minecraft',
            'version': 1,
        },
        'username': '******',
        'password': '******',
        'clientToken': 'clienttoken',
    })

    assert ygg.username == 'user'
    assert ygg.password == 'pass'
    assert ygg.client_token == 'clienttoken'
    assert '' == ygg.access_token
    assert not res
Exemple #3
0
 def __init__(self, event, online_mode, auth_timeout):
     self.online_mode = online_mode
     self.auth_timeout = auth_timeout
     self.__event = event
     self.ygg = YggdrasilCore()
     self._shared_secret = None
     self._username = None
Exemple #4
0
def test_request_raises_error(urlopen, request):
    exception_data = MagicMock()
    exception_data.read.return_value.decode.return_value = '{"error": 1}'
    urlopen.side_effect = HTTPError('', '', '', '', exception_data)

    ygg = YggdrasilCore()
    assert not urlopen.called
    assert not request.called
    res = ygg._ygg_req('/test', {'a': 'b'})

    # Read the response
    assert exception_data.read.called
    assert exception_data.read.return_value.decode.called

    assert res == {'error': 1}
Exemple #5
0
def test_validate_error():
    ygg = YggdrasilCore()
    ygg._ygg_req = ygg_req = mock.MagicMock()
    ygg_req.return_value = {'whatever': 'dict'}

    ygg.access_token = 'accesstoken'
    res = ygg.validate()

    ygg_req.assert_called_once_with('/validate', {
        'accessToken': 'accesstoken',
    })

    assert '' == ygg.username
    assert '' == ygg.password
    assert '' == ygg.client_token
    assert 'accesstoken' == ygg.access_token
    assert not res
Exemple #6
0
def test_signout():
    ygg = YggdrasilCore()
    ygg._ygg_req = ygg_req = mock.MagicMock()
    ygg_req.return_value = {'whatever': 'dict'}

    ygg.username = '******'
    ygg.password = '******'
    res = ygg.signout()

    ygg_req.assert_called_once_with('/signout', {
        'username': '******',
        'password': '******',
    })

    assert ygg.username == 'user'
    assert ygg.password == 'pass'
    assert '' == ygg.client_token
    assert '' == ygg.access_token
    assert res
Exemple #7
0
def test_refresh_failure():
    ygg = YggdrasilCore()
    ygg._ygg_req = ygg_req = mock.MagicMock()
    ygg_req.return_value = {'error': 1}

    ygg.client_token = 'clienttoken'
    ygg.access_token = 'accesstoken'
    res = ygg.refresh()

    ygg_req.assert_called_once_with('/refresh', {
        'accessToken': 'accesstoken',
        'clientToken': 'clienttoken',
    })

    assert '' == ygg.username
    assert '' == ygg.password
    assert ygg.client_token == 'clienttoken'
    assert ygg.access_token == 'accesstoken'
    assert not res
Exemple #8
0
def test_refresh_success():
    ygg = YggdrasilCore()
    ygg._ygg_req = ygg_req = mock.MagicMock()
    ygg_req.return_value = {'accessToken': 'myaccess',
                            'clientToken': 'mytoken',
                            'availableProfiles': ['a', 'b'],
                            'selectedProfile': 'a'}

    ygg.client_token = 'clienttoken'
    ygg.access_token = 'accesstoken'
    res = ygg.refresh()

    ygg_req.assert_called_once_with('/refresh', {
        'accessToken': 'accesstoken',
        'clientToken': 'clienttoken',
    })

    assert ygg.client_token == 'mytoken'
    assert ygg.access_token == 'myaccess'
    assert '' == ygg.username
    assert '' == ygg.password
    assert res
Exemple #9
0
def test_request_is_done(urlopen, request):
    decode = urlopen.return_value.read.return_value.decode
    decode.return_value = '{"test": 1}'
    ygg = YggdrasilCore()
    assert not urlopen.called
    assert not request.called
    res = ygg._ygg_req('/test', [{'a': 'b'}, 'c', 'd', 'e'])

    # First create the request
    request.assert_called_once_with(
        url='https://authserver.mojang.com/test',
        data=b'[{"a": "b"}, "c", "d", "e"]',
        headers={'Content-Type': 'application/json'}
    )

    # Then send it
    urlopen.assert_called_once_with(request.return_value)

    # Read the response
    assert urlopen.return_value.read.called
    assert decode.called

    assert res == {'test': 1}
Exemple #10
0
def test_yggdrasil_initialization():
    ygg = YggdrasilCore()
    assert '' == ygg.username
    assert '' == ygg.password
    assert '' == ygg.client_token
    assert '' == ygg.access_token