Exemple #1
0
def test_accounts(client):
    user = provider.user()
    accessToken = provider.getAccessTokenForUser(user)

    _test_getAccounts(client, accessToken, expectedNumber=0)

    data = [[
        'setAccounts', {
            'ifInState': {},
            'create': {},
            'update': {},
            'destroy': {}
        }, '#1'
    ]]
    response = client.post('/',
                           headers={'Authorization': accessToken},
                           data=json.dumps(data),
                           content_type='application/json')
    assert response.status_code == 200
    responseData = json.loads(response.data)

    for resp in responseData:
        assert resp[0] == 'accounts'
        assert resp[2] == data[0][2]
        assert len(resp[1]) == 8

    _test_getAccounts(client, accessToken, expectedNumber=0)

    data[0][1]['create'] = {
        "creationId": {
            'name': 'ligro daligro',
            'server': 'mail.daligro.net',
            'port': '997',
            'protocol': 'imaps'
        }
    }

    response = client.post('/',
                           headers={'Authorization': accessToken},
                           data=json.dumps(data),
                           content_type='application/json')
    assert response.status_code == 200
    responseData = json.loads(response.data)

    for resp in responseData:
        assert resp[0] == 'accounts'
        assert resp[2] == data[0][2]
        assert len(resp[1]) == 8
        assert len(resp[1]['created']) == 1

    _test_getAccounts(client, accessToken, expectedNumber=1)
Exemple #2
0
def test_accounts(client):
    user = provider.user()
    accessToken = provider.getAccessTokenForUser(user)

    _test_getAccounts(client, accessToken, expectedNumber=0)

    data = [
        [
            'setAccounts',
            {
                'ifInState': {},
                'create': {},
                'update': {},
                'destroy': {}
            },
            '#1'
        ]
    ]
    response = client.post('/', headers={'Authorization': accessToken}, data=json.dumps(data), content_type='application/json')
    assert response.status_code == 200
    responseData = json.loads(response.data)

    for resp in responseData:
        assert resp[0] == 'accounts'
        assert resp[2] == data[0][2]
        assert len(resp[1]) == 8

    _test_getAccounts(client, accessToken, expectedNumber=0)

    data[0][1]['create'] = {
        "creationId": {
            'name': 'ligro daligro',
            'server': 'mail.daligro.net',
            'port': '997',
            'protocol': 'imaps'
        }
    }

    response = client.post('/', headers={'Authorization': accessToken}, data=json.dumps(data), content_type='application/json')
    assert response.status_code == 200
    responseData = json.loads(response.data)

    for resp in responseData:
        assert resp[0] == 'accounts'
        assert resp[2] == data[0][2]
        assert len(resp[1]) == 8
        assert len(resp[1]['created']) == 1

    _test_getAccounts(client, accessToken, expectedNumber=1)
Exemple #3
0
    def test_bad_continuation_token(self):
        """Response when token is bad."""
        password = provider.func_name() + 'password'
        user = provider.user(password)

        data = provider.deviceData(user.username)
        response = self.client.post('/access-token', data=json.dumps(data), content_type='application/json')
        assert response.status_code == 200
        data = json.loads(response.data)

        data = {
            'method' : 'password',
            'token' : data['continuationToken'] + 'plop',
            'password' : password
        }
        response = self.client.post('/access-token', data=json.dumps(data), content_type='application/json')
        assert response.status_code == 403
Exemple #4
0
    def test_retrieve(self):
        """Access token retrieving workflow, without error."""

        password = provider.func_name() + 'password'
        user = provider.user(password)

        data = provider.deviceData(user.username)
        response = self.client.post('/access-token', data=json.dumps(data), content_type='application/json')
        assert response.status_code == 200
        data = json.loads(response.data)
        self._assert_access_token_step1_response(data)

        data = {
            'method' : 'password',
            'token' : data['continuationToken'],
            'password' : password
        }
        response = self.client.post('/access-token', data=json.dumps(data), content_type='application/json')
        assert response.status_code == 201

        responseData = json.loads(response.data)
        assert 'accessToken' in responseData
        accessToken = responseData['accessToken']
        # does it creates a device
        assert pyjmap.database.Device.query.filter_by(userId=user.id).count() == 1

        # check it doesn't create a new device at each connection
        response = self.client.post('/access-token', data=json.dumps(data), content_type='application/json')
        assert response.status_code == 201
        assert pyjmap.database.Device.query.filter_by(userId=user.id).count() == 1

        response = self.client.get('/endpoints', headers={'Authorization': accessToken})
        assert response.status_code == 200

        response = self.client.post('/', headers={'Authorization': accessToken}, data='[]', content_type='application/json')
        assert response.status_code == 200

        response = self.client.delete('/access-token', headers={'Authorization': accessToken})
        assert response.status_code == 204

        response = self.client.get('/endpoints', headers={'Authorization': accessToken})
        assert response.status_code == 401

        response = self.client.post('/', headers={'Authorization': accessToken}, data='[]')
        assert response.status_code == 401
Exemple #5
0
    def test_expired_continuation_token(self):
        """Response when continuation token is expired."""
        password = provider.func_name() + 'password'
        user = provider.user(password)

        data = provider.deviceData(user.username)
        response = self.client.post('/access-token',
                                    data=json.dumps(data),
                                    content_type='application/json')
        assert response.status_code == 200
        data = json.loads(response.data)

        data = {
            'method': 'password',
            'token': data['continuationToken'] + 'plop',
            'password': password
        }
        response = self.client.post('/access-token',
                                    data=json.dumps(data),
                                    content_type='application/json')
        assert response.status_code == 403
Exemple #6
0
    def test_retrieve(self):
        """Access token retrieving workflow, without error."""

        password = provider.func_name() + 'password'
        user = provider.user(password)

        data = provider.deviceData(user.username)
        response = self.client.post('/access-token',
                                    data=json.dumps(data),
                                    content_type='application/json')
        assert response.status_code == 200
        data = json.loads(response.data)
        self._assert_access_token_step1_response(data)

        data = {
            'method': 'password',
            'token': data['continuationToken'],
            'password': password
        }
        response = self.client.post('/access-token',
                                    data=json.dumps(data),
                                    content_type='application/json')
        assert response.status_code == 201

        responseData = json.loads(response.data)
        assert 'accessToken' in responseData
        accessToken = responseData['accessToken']
        # does it creates a device
        assert pyjmap.database.Device.query.filter_by(
            userId=user.id).count() == 1

        # check it doesn't create a new device at each connection
        response = self.client.post('/access-token',
                                    data=json.dumps(data),
                                    content_type='application/json')
        assert response.status_code == 201
        assert pyjmap.database.Device.query.filter_by(
            userId=user.id).count() == 1

        response = self.client.get('/endpoints',
                                   headers={'Authorization': accessToken})
        assert response.status_code == 200

        response = self.client.post('/',
                                    headers={'Authorization': accessToken},
                                    data='[]',
                                    content_type='application/json')
        assert response.status_code == 200

        response = self.client.delete('/access-token',
                                      headers={'Authorization': accessToken})
        assert response.status_code == 204

        response = self.client.get('/endpoints',
                                   headers={'Authorization': accessToken})
        assert response.status_code == 401

        response = self.client.post('/',
                                    headers={'Authorization': accessToken},
                                    data='[]')
        assert response.status_code == 401