示例#1
0
def generate_domain():
    domain = create_token()
    update_token = create_token()
    domain = Domain(domain,
                    '00:00:00:00:00:00',
                    'some-device',
                    'Some Device',
                    update_token=update_token)
    return domain
示例#2
0
    def test_domain_update_server_side_client_ip(self):
        email, password = self.create_active_user()

        user_domain = create_token()
        update_token = self.acquire_domain(email, password, user_domain)

        update_data = {
            'token': update_token,
            'web_protocol': 'http',
            'web_port': 10001,
            'web_local_port': 80,
        }

        response = self.app.post('/domain/update', data=json.dumps(update_data), environ_base={'REMOTE_ADDR': '127.0.0.1'})
        self.assertEqual(200, response.status_code)

        expected_data = {
            'ip': '127.0.0.1',
            'user_domain': user_domain,
            'web_protocol': 'http',
            'web_port': 10001,
            'web_local_port': 80,
        }

        self.check_domain(update_token, expected_data)
示例#3
0
    def test_new(self):
        email, password = self.create_active_user()

        user_domain = create_token()
        acquire_data = dict(
            user_domain=user_domain,
            device_mac_address='00:00:00:00:00:00',
            device_name='my-super-board',
            device_title='My Super Board',
            email=email,
            password=password)
        response = self.app.post('/domain/acquire', data=acquire_data)

        self.assertEqual(200, response.status_code)
        domain_data = json.loads(response.data)

        update_token = domain_data['update_token']
        self.assertIsNotNone(update_token)

        expected_data = {
            'ip': None,
            'user_domain': user_domain,
            'device_mac_address': '00:00:00:00:00:00',
            'device_name': 'my-super-board',
            'device_title': 'My Super Board'
        }

        self.check_domain(update_token, expected_data)
示例#4
0
    def test(self):
        update_token = create_token()

        full_domain_name = 'name1.{0}.{1}'.format(self.user_domain,
                                                  self.main_domain)
        original_ip = self.query_dns(full_domain_name, 'A')

        domain = Domain(self.user_domain, '00:00:00:00:00:00', 'some-device',
                        'Some Device', update_token)
        domain.ip = '192.168.0.1'
        self.dns.update_domain(self.main_domain, domain)
        full_domain_name = 'name1.{0}.{1}'.format(self.user_domain,
                                                  self.main_domain)
        self.validate_dns('192.168.0.1', full_domain_name)

        domain.ip = '192.168.0.2'
        self.dns.update_domain(self.main_domain, domain)
        full_domain_name = 'name1.{0}.{1}'.format(self.user_domain,
                                                  self.main_domain)
        self.validate_dns('192.168.0.2', full_domain_name)

        self.dns.delete_domain(self.main_domain, domain)
        full_domain_name = 'name1.{0}.{1}'.format(self.user_domain,
                                                  self.main_domain)
        self.validate_dns(original_ip.address, full_domain_name)
示例#5
0
    def test_simple(self):
        email, password = self.create_active_user()

        user_domain = create_token()
        acquire_data = dict(
            user_domain=user_domain,
            device_mac_address='00:00:00:00:00:00',
            device_name='my-super-board',
            device_title='My Super Board',
            email=email,
            password=password)
        response = self.app.post('/domain/acquire', data=acquire_data)

        self.assertEqual(200, response.status_code)
        domain_data = json.loads(response.data)

        update_token = domain_data['update_token']

        drop_data = {
            'email': email,
            'password': password,
            'user_domain': user_domain
        }

        response = self.app.post('/domain/drop_device', data=drop_data)
        self.assertEqual(200, response.status_code)

        response = self.app.get('/domain/get', query_string={'token': update_token})
        self.assertEqual(400, response.status_code)
示例#6
0
    def test_domain_update_date(self):
        email, password = self.create_active_user()

        user_domain = create_token()

        update_token = self.acquire_domain(email, password, user_domain)

        update_data = {
            'token': update_token,
            'ip': '127.0.0.1',
            'web_protocol': 'http',
            'web_port': 10001,
            'web_local_port': 80
        }

        self.app.post('/domain/update', data=json.dumps(update_data))
        domain = self.get_domain(update_token)
        last_updated1 = domain['last_update']

        time.sleep(1)

        self.app.post('/domain/update', data=json.dumps(update_data))
        domain = self.get_domain(update_token)
        last_updated2 = domain['last_update']

        self.assertGreater(last_updated2, last_updated1)
示例#7
0
    def test_local_ip_changed(self):
        email, password = self.create_active_user()

        user_domain = create_token()
        update_token = self.acquire_domain(email, password, user_domain)

        update_data = {
            'token': update_token,
            'ip': '127.0.0.1',
            'local_ip': '192.168.1.5',
            'web_protocol': 'http',
            'web_port': 10001,
            'web_local_port': 80,
        }

        response = self.app.post('/domain/update', data=json.dumps(update_data))
        self.assertEqual(200, response.status_code)

        update_data = {
            'token': update_token,
            'ip': '127.0.0.2',
            'local_ip': '192.168.1.6',
            'web_protocol': 'http',
            'web_port': 10001,
            'web_local_port': 80,
        }

        response = self.app.post('/domain/update', data=json.dumps(update_data))

        self.assertEqual(200, response.status_code)

        self.check_domain(update_token, {'ip': '127.0.0.2', 'local_ip': '192.168.1.6', 'user_domain': user_domain})
示例#8
0
    def test_user_delete(self):
        email, password = self.create_active_user()

        user_domain_1 = create_token()
        update_token_1 = self.acquire_domain(email, password, user_domain_1)

        user_domain_2 = create_token()
        update_token_2 = self.acquire_domain(email, password, user_domain_2)

        response = self.app.post('/user/delete', data={'email': email, 'password': password})
        self.assertEquals(200, response.status_code)

        response = self.app.get('/domain/get', query_string={'token': update_token_1})
        self.assertEqual(400, response.status_code)

        response = self.app.get('/domain/get', query_string={'token': update_token_2})
        self.assertEqual(400, response.status_code)
示例#9
0
 def create_active_user(self):
     self.smtp.clear()
     email = create_token()+'@mail.com'
     password = '******'
     self.app.post('/user/create', data={'email': email, 'password': password})
     activate_token = self.get_token(self.smtp.emails()[0])
     self.app.get('/user/activate', query_string={'token': activate_token})
     self.smtp.clear()
     return email, password
示例#10
0
    def test_user_activate_success(self):
        user_domain = create_token()
        email = user_domain+'@mail.com'
        self.app.post('/user/create', data={'email': email, 'password': '******'})

        self.assertFalse(self.smtp.empty())
        token = self.get_token(self.smtp.emails()[0])

        activate_response = self.app.get('/user/activate', query_string={'token': token})
        self.assertEqual(200, activate_response.status_code)
示例#11
0
    def test_acquire_new(self):
        email, password = self.create_active_user()

        user_domain = create_token()
        response = self.app.post('/domain/acquire', data=dict(user_domain=user_domain, email=email, password=password))

        self.assertEqual(200, response.status_code)
        domain_data = json.loads(response.data)

        update_token = domain_data['update_token']
        self.assertIsNotNone(update_token)

        self.check_domain(update_token, {'ip': None, 'user_domain': user_domain, 'services': []})
示例#12
0
    def test_simple(self):
        email, password = self.create_active_user()

        user_domain = create_token()
        update_token = self.acquire_domain(email, password, user_domain)

        delete_data = {'user_domain': user_domain, 'email': email, 'password': password}

        response = self.app.post('/domain/delete', data=json.dumps(delete_data))
        self.assertEqual(200, response.status_code)

        user_data = self.get_user(email, password)

        self.assertEquals(0, len(user_data['domains']))
示例#13
0
    def test_domain_update_missing_port(self):
        email, password = self.create_active_user()

        user_domain = create_token()
        response = self.app.post('/domain/acquire', data=dict(user_domain=user_domain, email=email, password=password))

        domain_data = json.loads(response.data)
        update_token = domain_data['update_token']

        service_data = {'name': 'ownCloud', 'type': '_http._tcp', 'url': None}
        update_data = {'token': update_token, 'ip': '127.0.0.1', 'services': [service_data]}

        response = self.app.post('/domain/update', data=json.dumps(update_data))
        self.assertEqual(400, response.status_code)
示例#14
0
    def test_acquire_existing(self):
        user_domain = create_token()

        other_email, other_password = self.create_active_user()
        response = self.app.post('/domain/acquire', data=dict(user_domain=user_domain, email=other_email, password=other_password))
        domain_data = json.loads(response.data)
        update_token = domain_data['update_token']

        email, password = self.create_active_user()
        response = self.app.post('/domain/acquire', data=dict(user_domain=user_domain, email=email, password=password))

        self.assertEqual(409, response.status_code)

        self.check_domain(update_token, {'ip': None, 'user_domain': user_domain, 'services': []})
示例#15
0
    def test_wrong_mac_address_format(self):
        email, password = self.create_active_user()

        user_domain = create_token()
        acquire_data = {
            'user_domain': user_domain,
            'device_mac_address': 'wrong_format',
            'device_name': 'my-super-board',
            'device_title': 'My Super Board',
            'email': email,
            'password': password
        }
        response = self.app.post('/domain/acquire', data=acquire_data)

        self.assertEqual(400, response.status_code)
示例#16
0
    def test_domain_update_two_new_services(self):
        email, password = self.create_active_user()

        user_domain = create_token()
        response = self.app.post('/domain/acquire', data=dict(user_domain=user_domain, email=email, password=password))

        domain_data = json.loads(response.data)
        update_token = domain_data['update_token']

        services_data = [{'name': 'ownCloud', 'protocol': 'http', 'type': '_http._tcp', 'port': 10001, 'url': None},
                         {'name': 'SSH', 'protocol': 'https', 'type': '_http._tcp', 'port': 10002, 'url': None}]
        update_data = {'token': update_token, 'ip': '127.0.0.1', 'services': services_data}

        response = self.app.post('/domain/update', data=json.dumps(update_data))
        self.assertEqual(200, response.status_code)

        self.check_domain(update_token, {'ip': '127.0.0.1', 'user_domain': user_domain, 'services': services_data})
示例#17
0
    def test_get_user_data(self):
        email, password = self.create_active_user()

        user_domain = create_token()
        update_token = self.acquire_domain(email, password, user_domain)

        update_data = {
            'token': update_token,
            'ip': '127.0.0.1',
            'web_protocol': 'http',
            'web_local_port': 80,
            'web_port': 10000
        }
        self.app.post('/domain/update', data=json.dumps(update_data))

        response = self.app.get('/user/get', query_string={'email': email, 'password': password})

        response_data = json.loads(response.data)
        user_data = response_data['data']

        # This is hack. We do not know last_update value - it is set by server.
        last_update = user_data["domains"][0]["last_update"]
        update_token = user_data["update_token"]

        expected = {
            'active': True,
            'email': email,
            'unsubscribed': False,
            'update_token': update_token,
            'domains': [{
                'user_domain': user_domain,
                'web_local_port': 80,
                'web_port': 10000,
                'web_protocol': 'http',
                'ip': '127.0.0.1',
                'local_ip': None,
                'map_local_address': False,
                'platform_version': None,
                'device_mac_address': '00:00:00:00:00:00',
                'device_name': 'some-device',
                'device_title': 'Some Device',
                'last_update': last_update
            }]
        }

        self.assertEquals(expected, user_data)
示例#18
0
    def test_domain_update_platform_version(self):
        email, password = self.create_active_user()

        user_domain = create_token()
        update_token = self.acquire_domain(email, password, user_domain)

        update_data = {
            'token': update_token,
            'ip': '127.0.0.1',
            'platform_version': '366',
            'web_protocol': 'http',
            'web_port': 10001,
            'web_local_port': 80,
        }

        response = self.app.post('/domain/update', data=json.dumps(update_data))
        self.assertEqual(200, response.status_code)

        self.check_domain(update_token, {'platform_version': '366'})
示例#19
0
    def test(self):
        update_token = create_token()

        full_domain_name = 'name1.{0}.{1}'.format(self.user_domain, self.main_domain)
        original_ip = self.query_dns(full_domain_name, 'A')

        domain = Domain(self.user_domain, '00:00:00:00:00:00', 'some-device', 'Some Device', update_token)
        domain.ip = '192.168.0.1'
        self.dns.update_domain(self.main_domain, domain)
        full_domain_name = 'name1.{0}.{1}'.format(self.user_domain, self.main_domain)
        self.validate_dns('192.168.0.1', full_domain_name)

        domain.ip = '192.168.0.2'
        self.dns.update_domain(self.main_domain, domain)
        full_domain_name = 'name1.{0}.{1}'.format(self.user_domain, self.main_domain)
        self.validate_dns('192.168.0.2', full_domain_name)

        self.dns.delete_domain(self.main_domain, domain)
        full_domain_name = 'name1.{0}.{1}'.format(self.user_domain, self.main_domain)
        self.validate_dns(original_ip.address, full_domain_name)
示例#20
0
    def test_domain_update_map_local_address(self):
        email, password = self.create_active_user()

        user_domain = create_token()
        update_token = self.acquire_domain(email, password, user_domain)

        update_data = {
            'token': update_token,
            'ip': '108.108.108.108',
            'local_ip': '192.168.1.2',
            'map_local_address': True,
            'web_protocol': 'http',
            'web_port': 10001,
            'web_local_port': 80
        }

        response = self.app.post('/domain/update', data=json.dumps(update_data))
        self.assertEqual(200, response.status_code)

        self.check_domain(update_token, {'ip': '108.108.108.108', 'local_ip': '192.168.1.2', 'map_local_address': True, 'user_domain': user_domain})
示例#21
0
    def test_domain_update_date(self):
        email, password = self.create_active_user()

        user_domain = create_token()
        response = self.app.post('/domain/acquire', data=dict(user_domain=user_domain, email=email, password=password))

        domain_data = json.loads(response.data)
        update_token = domain_data['update_token']

        update_data = {'token': update_token, 'ip': '127.0.0.1', 'services': []}

        self.app.post('/domain/update', data=json.dumps(update_data))
        domain = self.get_domain(update_token)
        last_updated1 = domain['last_update']

        time.sleep(1)

        self.app.post('/domain/update', data=json.dumps(update_data))
        domain = self.get_domain(update_token)
        last_updated2 = domain['last_update']

        self.assertGreater(last_updated2, last_updated1)
示例#22
0
    def test_domain_update_web_updated(self):
        email, password = self.create_active_user()

        user_domain = create_token()
        update_token = self.acquire_domain(email, password, user_domain)

        update_data = {
            'token': update_token,
            'ip': '127.0.0.1',
            'web_protocol': 'http',
            'web_port': 10001,
            'web_local_port': 80,
        }

        response = self.app.post('/domain/update', data=json.dumps(update_data))
        self.assertEqual(200, response.status_code)

        update_data = {
            'token': update_token,
            'ip': '127.0.0.1',
            'web_protocol': 'https',
            'web_port': 10002,
            'web_local_port': 443,
        }

        response = self.app.post('/domain/update', data=json.dumps(update_data))

        self.assertEqual(200, response.status_code)

        expected_data = {
            'ip': '127.0.0.1',
            'user_domain': user_domain,
            'web_protocol': 'https',
            'web_port': 10002,
            'web_local_port': 443,
        }

        self.check_domain(update_token, expected_data)
示例#23
0
    def test_get_user_data(self):
        email, password = self.create_active_user()

        user_domain = create_token()
        update_token = self.acquire_domain(email, password, user_domain)

        service_data = {'name': 'ownCloud', 'protocol': 'http', 'type': '_http._tcp', 'port': 10000, 'url': None}
        update_data = {'token': update_token, 'ip': '127.0.0.1', 'services': [service_data]}
        self.app.post('/domain/update', data=json.dumps(update_data))

        response = self.app.get('/user/get', query_string={'email': email, 'password': password})

        response_data = json.loads(response.data)
        user_data = response_data['data']

        # This is hack. We do not know last_update value - it is set by server.
        last_update = user_data["domains"][0]["last_update"]

        expected = {
            "active": True,
            "email": email,
            "domains": [{
                "user_domain": user_domain,
                "ip": "127.0.0.1",
                "last_update": last_update,
                "services": [{
                    "name": "ownCloud",
                    "protocol": "http",
                    "port": 10000,
                    "type": "_http._tcp",
                    "url": None
                }],
            }]
        }

        self.assertEquals(expected, user_data)
示例#24
0
 def test_length(self):
     token = create_token()
     self.assertIsNotNone(token)
     self.assertTrue(len(token) > 10)
示例#25
0
    def test_domain_update_wrong_token(self):
        service_data = {'name': 'ownCloud', 'type': '_http._tcp', 'port': 10000, 'url': None}
        update_data = {'token': create_token(), 'ip': '127.0.0.1', 'services': [service_data]}

        response = self.app.post('/domain/update', data=json.dumps(update_data))
        self.assertEqual(400, response.status_code)
示例#26
0
 def test_user_create_special_symbols_in_password(self):
     user_domain = create_token()
     email = user_domain+'@mail.com'
     response = self.app.post('/user/create', data={'email': email, 'password': r'pass12& ^%"'})
     self.assertEqual(200, response.status_code)
     self.assertFalse(self.smtp.empty())
示例#27
0
 def test_user_create_success(self):
     user_domain = create_token()
     email = user_domain+'@mail.com'
     response = self.app.post('/user/create', data={'email': email, 'password': '******'})
     self.assertEqual(200, response.status_code)
     self.assertFalse(self.smtp.empty())
示例#28
0
def generate_user():
    email = unicode(create_token() + '@mail.com')
    user = User(email, hash('pass1234'), False)
    user.enable_action(ActionType.ACTIVATE)
    return user
示例#29
0
 def test_length(self):
     token = create_token()
     self.assertIsNotNone(token)
     self.assertTrue(len(token) > 10)
示例#30
0
 def test_different_every_time(self):
     token1 = create_token()
     token2 = create_token()
     self.assertNotEquals(token1, token2)
示例#31
0
    def test_domain_update_wrong_token(self):
        update_data = {'token': create_token(), 'ip': '127.0.0.1'}

        response = self.app.post('/domain/update', data=json.dumps(update_data))
        self.assertEqual(400, response.status_code)
示例#32
0
def generate_domain():
    domain = create_token()
    update_token = create_token()
    domain = Domain(domain, '00:00:00:00:00:00', 'some-device', 'Some Device', update_token=update_token)
    return domain
示例#33
0
文件: helpers.py 项目: algby/redirect
def generate_user():
    email = unicode(create_token() + '@mail.com')
    user = User(email, hash('pass1234'), False)
    user.enable_action(ActionType.ACTIVATE)
    return user
示例#34
0
文件: helpers.py 项目: algby/redirect
def generate_domain():
    domain = create_token()
    update_token = create_token()
    domain = Domain(domain, None, update_token)
    return domain
示例#35
0
 def test_different_every_time(self):
     token1 = create_token()
     token2 = create_token()
     self.assertNotEquals(token1, token2)