Ejemplo n.º 1
0
    def test_session_stats_create_without_session_record_with_unknown_ip(self):
        payload = {
            'bytes_sent': 20,
            'bytes_received': 40,
            'provider_id': '0x1',
        }
        auth = generate_test_authorization(json.dumps(payload))
        re = self._post(
            '/v1/sessions/123/stats',
            payload,
            headers=auth['headers'],
            remote_addr='127.0.0.1',
        )

        self.assertEqual(200, re.status_code)
        self.assertEqual({}, re.json)

        session = Session.query.get('123')
        self.assertEqual(20, session.client_bytes_sent)
        self.assertEqual(40, session.client_bytes_received)
        self.assertIsNotNone(session.client_updated_at)
        self.assertEqual(auth['public_address'], session.consumer_id)
        self.assertEqual('127.0.0.X', session.client_ip)
        self.assertEqual('', session.client_country)
        self.assertEqual('0x1', session.node_key)
Ejemplo n.º 2
0
    def test_session_stats_create_successful(self):
        payload = {
            'bytes_sent': 20,
            'bytes_received': 40,
            'provider_id': '0x1',
        }
        auth = generate_test_authorization(json.dumps(payload))

        session = Session('123')
        session.consumer_id = auth['public_address']
        db.session.add(session)
        db.session.commit()

        re = self._post(
            '/v1/sessions/123/stats',
            payload,
            headers=auth['headers'],
        )
        self.assertEqual(200, re.status_code)
        self.assertEqual({}, re.json)

        session = Session.query.get('123')
        self.assertEqual(20, session.client_bytes_sent)
        self.assertEqual(40, session.client_bytes_received)
        self.assertIsNotNone(session.client_updated_at)
        self.assertIsNone(session.node_key)
Ejemplo n.º 3
0
    def test_session_stats_create_with_negative_values(self):
        auth = generate_test_authorization()
        re = self._post('/v1/sessions/123/stats', {
            'bytes_sent': -20,
            'bytes_received': 40,
            'provider_id': '0x1',
        },
                        headers=auth['headers'])
        self.assertEqual(400, re.status_code)
        self.assertEqual(
            {'error': 'bytes_sent missing or value is not unsigned int'},
            re.json)

        re = self._post('/v1/sessions/123/stats', {
            'bytes_sent': 20,
            'bytes_received': -40,
            'provider_id': '0x1',
        },
                        headers=auth['headers'])
        self.assertEqual(400, re.status_code)
        self.assertEqual(
            {'error': 'bytes_received missing or value is not unsigned int'},
            re.json)

        sessions = Session.query.all()
        self.assertEqual(0, len(sessions))
Ejemplo n.º 4
0
    def test_successful(self):
        auth = generate_test_authorization()
        re = self.client.post('/v1/identities', headers=auth['headers'])
        self.assertEqual(200, re.status_code)
        self.assertEqual({}, re.json)

        identity_record = Identity.query.get(auth['public_address'])
        self.assertIsNotNone(identity_record)
Ejemplo n.º 5
0
    def test_ping_proposal(self):
        payload = {}
        auth = generate_test_authorization(json.dumps(payload))

        self._create_node(auth['public_address'])

        re = self._post('/v1/ping_proposal', payload, headers=auth['headers'])
        self.assertEqual(200, re.status_code)
        self.assertEqual({}, re.json)
Ejemplo n.º 6
0
    def test_node_send_stats_with_unknown_node(self):
        payload = {}
        auth = generate_test_authorization(json.dumps(payload))

        re = self._post('/v1/node_send_stats',
                        payload,
                        headers=auth['headers'])
        self.assertEqual(400, re.status_code)
        self.assertEqual({'error': 'node key not found'}, re.json)
Ejemplo n.º 7
0
    def test_failure_identity_already_exists(self):
        auth = generate_test_authorization()

        identity_record = Identity(auth['public_address'])
        db.session.add(identity_record)

        re = self.client.post('/v1/identities', headers=auth['headers'])
        self.assertEqual(403, re.status_code)
        self.assertEqual({"error": 'identity already exists'}, re.json)
Ejemplo n.º 8
0
 def test_unregister_proposal_missing_provider(self):
     # unregister
     payload = {}
     auth = generate_test_authorization(json.dumps(payload))
     re = self._post('/v1/unregister_proposal',
                     payload,
                     headers=auth['headers'])
     self.assertEqual(400, re.status_code)
     self.assertEqual({"error": 'missing provider_id'}, re.json)
Ejemplo n.º 9
0
    def test_unregister_proposal_unauthorized(self):
        payload = {"provider_id": "incorrect"}

        auth = generate_test_authorization(json.dumps(payload))
        re = self._post('/v1/unregister_proposal',
                        payload,
                        headers=auth['headers'])
        self.assertEqual(403, re.status_code)
        self.assertIsNotNone(re.json)
        self.assertEqual(
            {'error': 'provider_id does not match current identity'}, re.json)
Ejemplo n.º 10
0
    def test_node_reg_successful(self):
        public_address = generate_static_public_address()
        payload = {
            "service_proposal": {
                "id": 1,
                "format": "service-proposal/v1",
                "provider_id": public_address,
            }
        }

        auth = generate_test_authorization(json.dumps(payload))
        re = self._post('/v1/node_register', payload, headers=auth['headers'])
        self.assertEqual(200, re.status_code)

        re.json
Ejemplo n.º 11
0
    def test_unregister_proposal_successful(self):
        public_address = generate_static_public_address()
        node = self._create_node(public_address)
        node.mark_activity()
        self.assertTrue(node.is_active())

        # unregister
        payload = {"provider_id": public_address}
        auth = generate_test_authorization(json.dumps(payload))
        re = self._post('/v1/unregister_proposal',
                        payload,
                        headers=auth['headers'])
        self.assertEqual(200, re.status_code)
        self.assertIsNotNone(re.json)

        self.assertFalse(node.is_active())
Ejemplo n.º 12
0
    def test_node_reg_unauthorized(self):
        payload = {
            "service_proposal": {
                "id": 1,
                "format": "service-proposal/v1",
                "provider_id": "incorrect",
            }
        }

        auth = generate_test_authorization(json.dumps(payload))
        re = self._post('/v1/node_register', payload, headers=auth['headers'])
        self.assertEqual(403, re.status_code)
        self.assertEqual(
            {'error': 'provider_id does not match current identity'}, re.json)

        re.json
Ejemplo n.º 13
0
    def test_session_stats_without_session_record_and_consumer_country(self):
        payload = {
            'bytes_sent': 20,
            'bytes_received': 40,
            'provider_id': '0x1',
        }
        auth = generate_test_authorization(json.dumps(payload))
        re = self._post(
            '/v1/sessions/123/stats',
            payload,
            headers=auth['headers'],
        )

        self.assertEqual(200, re.status_code)
        self.assertEqual({}, re.json)
        session = Session.query.get('123')
        self.assertEqual('', session.client_country)
Ejemplo n.º 14
0
    def test_session_stats_without_provider_id(self):
        payload = {
            'bytes_sent': 20,
            'bytes_received': 40,
        }
        auth = generate_test_authorization(json.dumps(payload))
        re = self._post(
            '/v1/sessions/123/stats',
            payload,
            headers=auth['headers'],
        )

        self.assertEqual(400, re.status_code)
        self.assertEqual({'error': 'provider_id missing'}, re.json)

        session = Session.query.get('123')
        self.assertIsNone(session)
Ejemplo n.º 15
0
    def test_restrict_by_ip_fail(self):
        payload = {}
        auth = generate_test_authorization(json.dumps(payload))

        self._create_node(auth['public_address'])

        ips = [
            '1.1.1.1',
            '2.2.2.2',
        ]
        with setting('RESTRICT_BY_IP_ENABLED', True), \
                setting('ALLOWED_IP_ADDRESSES', ips):
            re = self._post('/v1/ping_proposal',
                            payload,
                            headers=auth['headers'])

        self.assertEqual(403, re.status_code)
        self.assertEqual({'error': 'resource is forbidden'}, re.json)
Ejemplo n.º 16
0
    def test_register_proposal_successful(self):
        public_address = generate_static_public_address()
        payload = {
            "service_proposal": {
                "id": 1,
                "format": "service-proposal/v1",
                "provider_id": public_address,
            }
        }

        auth = generate_test_authorization(json.dumps(payload))
        re = self._post('/v1/register_proposal',
                        payload,
                        headers=auth['headers'])
        self.assertEqual(200, re.status_code)
        self.assertIsNotNone(re.json)

        node = Node.query.get(public_address)
        self.assertEqual(self.REMOTE_ADDR, node.ip)
Ejemplo n.º 17
0
    def test_session_stats_without_bytes_received(self):
        payload = {
            'bytes_sent': 20,
            'provider_id': '0x1',
        }
        auth = generate_test_authorization(json.dumps(payload))
        re = self._post(
            '/v1/sessions/123/stats',
            payload,
            headers=auth['headers'],
        )

        self.assertEqual(400, re.status_code)
        self.assertEqual(
            {'error': 'bytes_received missing or value is not unsigned int'},
            re.json)

        sessions = Session.query.all()
        self.assertEqual(0, len(sessions))
Ejemplo n.º 18
0
    def test_register_proposal_with_unknown_ip(self):
        public_address = generate_static_public_address()
        payload = {
            "service_proposal": {
                "id": 1,
                "format": "service-proposal/v1",
                "provider_id": public_address,
            }
        }

        auth = generate_test_authorization(json.dumps(payload))
        re = self._post('/v1/register_proposal',
                        payload,
                        headers=auth['headers'],
                        remote_addr='127.0.0.1')
        self.assertEqual(200, re.status_code)
        self.assertIsNotNone(re.json)

        node = Node.query.get(public_address)
        self.assertEqual('127.0.0.1', node.ip)
Ejemplo n.º 19
0
    def test_session_stats_create_with_negative_values(self):
        auth = generate_test_authorization()
        re = self._post('/v1/sessions/123/stats', {
            'bytes_sent': -20,
            'bytes_received': 40
        },
                        headers=auth['headers'])
        self.assertEqual(400, re.status_code)
        self.assertEqual({'error': 'bytes_sent should not be negative'},
                         re.json)

        re = self._post('/v1/sessions/123/stats', {
            'bytes_sent': 20,
            'bytes_received': -40
        },
                        headers=auth['headers'])
        self.assertEqual(400, re.status_code)
        self.assertEqual({'error': 'bytes_received should not be negative'},
                         re.json)

        sessions = Session.query.all()
        self.assertEqual(0, len(sessions))
Ejemplo n.º 20
0
    def test_session_stats_create_with_different_consumer_id(self):
        session = Session('123')
        session.consumer_id = 'different'
        db.session.add(session)
        db.session.commit()

        payload = {
            'bytes_sent': 20,
            'bytes_received': 40,
        }
        auth = generate_test_authorization(json.dumps(payload))
        re = self._post(
            '/v1/sessions/123/stats',
            payload,
            headers=auth['headers'],
        )
        self.assertEqual(403, re.status_code)
        self.assertEqual(
            {'error': 'session identity does not match current one'}, re.json)

        session = Session.query.get('123')
        self.assertEqual(0, session.client_bytes_sent)
Ejemplo n.º 21
0
    def test_successful_request(self):
        auth = generate_test_authorization()
        re = self.client.get('/v1/me', headers=auth['headers'])

        self.assertEqual(200, re.status_code)
        self.assertEqual(re.json, {'identity': auth['public_address']})