Exemple #1
0
    def test_validate_token_false(self, mock_from_json):
        token = mtoken.Token()

        mock_from_json.return_value = token
        validate_func = mock.Mock()
        validate_func.side_effect = [False, True, False]

        token.is_ip_restricted = True

        self.assertFalse(
            handlers.common.token.validate_token(
                token, "GET", None, validate_func)[0])

        token.is_ip_restricted = True
        token.ip_address = "127.1.1.1"

        self.assertFalse(
            handlers.common.token.validate_token(
                token, "GET", "127.0.0.1", validate_func)[0])

        token.is_ip_restricted = False

        self.assertFalse(
            handlers.common.token.validate_token(
                token, "GET", None, validate_func)[0])
    def test_valid_ip_single_ip(self):
        token_obj = modt.Token()
        token_obj.is_ip_restricted = True
        token_obj.ip_address = '127.0.0.1'

        self.assertTrue(token_obj.is_valid_ip('127.0.0.1'))
        self.assertFalse(token_obj.is_valid_ip('127.0.0.3'))
    def test_valid_ip_network(self):
        token_obj = modt.Token()
        token_obj.is_ip_restricted = True
        token_obj.ip_address = '192.0.4.0/25'

        self.assertTrue(token_obj.is_valid_ip('192.0.4.125'))
        self.assertFalse(token_obj.is_valid_ip('192.0.5.1'))
    def test_token_to_dict_is_dict(self):
        token_obj = modt.Token()
        token_obj.id = "token-id"
        token_obj.email = "*****@*****.**"
        token_obj.created_on = "now"
        token_obj.token = "token"
        token_obj.username = "******"
        token_obj.version = "1.1"

        expected = {
            "_id": "token-id",
            "created_on": "now",
            "email": "*****@*****.**",
            "expired": False,
            "expires_on": None,
            "ip_address": None,
            "properties": [0 for _ in range(0, 16)],
            "token": "token",
            "username": "******",
            "version": "1.1",
        }

        obtained = token_obj.to_dict()

        self.assertIsInstance(obtained, types.DictionaryType)
        self.assertDictEqual(expected, obtained)
    def test_ip_address_check_with_ip_address(self):
        addrlist = ['127.0.0.1']
        token_obj = modt.Token()
        token_obj.ip_address = addrlist

        expected = [netaddr.IPAddress('127.0.0.1').ipv6(ipv4_compatible=True)]
        self.assertEqual(expected, token_obj.ip_address)
    def test_get_lab_name_none(self, mock_find):
        mock_find.return_value = {}
        token = mtoken.Token()

        lab_name = hbtrigger._get_lab_name(token, self.database)

        self.assertIsNone(lab_name)
    def test_get_lab_name_with_name(self, mock_find):
        mock_find.return_value = {"name": "fake_name"}
        token = mtoken.Token()

        lab_name = hbtrigger._get_lab_name(token, self.database)

        self.assertIsNotNone(lab_name)
        self.assertEqual("fake_name", lab_name)
Exemple #8
0
    def test_validate_token_expired(self, mock_from_json):
        token = mtoken.Token()
        token.expired = True

        mock_from_json.return_value = token
        validate_func = mock.Mock()

        self.assertFalse(handlers.common.token.validate_token(
            token, "GET", None, validate_func)[0])
    def test_ip_address_check_with_ip_network(self):
        addrlist = ['192.0.4.0/25']
        token_obj = modt.Token()
        token_obj.ip_address = addrlist

        expected = [
            netaddr.IPNetwork('192.0.4.0/25').ipv6(ipv4_compatible=True)
        ]
        self.assertEqual(expected, token_obj.ip_address)
    def test_token_expiry_correct_double_digits(self):
        expire_str = "2014-07-01"

        token_obj = modt.Token()
        token_obj.expires_on = expire_str

        expected = datetime.datetime(2014, 7, 1, 0, 0)

        self.assertEqual(expected, token_obj.expires_on)
    def test_valid_ip_mix_valid(self):
        token_obj = modt.Token()
        token_obj.is_ip_restricted = True
        token_obj.ip_address = ['10.2.3.4', '192.0.4.0/25']

        self.assertTrue(token_obj.is_valid_ip('192.0.4.1'))
        self.assertTrue(token_obj.is_valid_ip('10.2.3.4'))
        self.assertFalse(token_obj.is_valid_ip('192.1.4.0'))
        self.assertFalse(token_obj.is_valid_ip('10.2.3.3'))
        self.assertFalse(token_obj.is_valid_ip('127.0.0.1'))
    def test_token_properties_setter_wrong_len(self):
        token_obj = modt.Token()
        expected = [0 for _ in range(0, 16)]

        # Make sure the list we have is all 0 and 16 in length.
        self.assertListEqual(token_obj.properties, expected)
        self.assertRaises(ValueError, setattr, token_obj, "properties",
                          [0 for _ in range(0, random.randint(0, 15))])
        self.assertRaises(ValueError, setattr, token_obj, "properties",
                          [0 for _ in range(0, random.randint(17, 1024))])
        self.assertRaises(ValueError, setattr, token_obj, "properties", [])
    def test_token_is_admin(self):
        token_obj = modt.Token()
        token_obj.is_admin = 1

        self.assertEqual(token_obj.is_admin, 1)
        self.assertEqual(token_obj.can_create_token, 1)
        self.assertEqual(token_obj.is_superuser, 1)
        self.assertEqual(token_obj.is_get_token, 1)
        self.assertEqual(token_obj.is_delete_token, 1)
        self.assertEqual(token_obj.is_post_token, 1)
        self.assertEqual(token_obj.is_test_lab_token, 0)
        self.assertEqual(token_obj.is_lab_token, 0)
    def setUp(self):
        # Default Content-Type header returned by Tornado.
        self.content_type = "application/json; charset=UTF-8"
        self.req_token = mtoken.Token()
        self.database = mongomock.MongoClient()["kernel-ci"]
        self.redisdb = fakeredis.FakeStrictRedis()
        self.dboptions = {
            "mongodb_password": "",
            "mongodb_user": ""
        }
        self.mail_options = {
            "smtp_port": 465,
            "smtp_host": "localhost",
            "smtp_user": "******",
            "smtp_password": "******",
            "smtp_sender": "*****@*****.**",
            "smtp_sender_desc": "Me Email"
        }
        self.settings = {
            "dboptions": self.dboptions,
            "mailoptions": self.mail_options,
            "redis_connection": self.redisdb,
            "database": self.database,
            "executor": concurrent.futures.ThreadPoolExecutor(max_workers=1),
            "default_handler_class": handlers.app.AppHandler,
            "debug": False,
            "version": "foo",
            "master_key": "bar",
            "senddelay": 60 * 60
        }

        super(TestHandlerBase, self).setUp()

        patched_find_token = mock.patch(
            "handlers.common.token.find_token")
        self.find_token = patched_find_token.start()
        self.find_token.return_value = self.req_token

        patched_validate_token = mock.patch(
            "handlers.common.token.validate_token")
        self.validate_token = patched_validate_token.start()
        self.validate_token.return_value = (True, self.req_token)

        self.addCleanup(patched_find_token.stop)
        self.addCleanup(patched_validate_token.stop)

        self.doc_id = "".join(
            [random.choice(string.digits) for x in xrange(24)])
    def test_is_lab_token_normal(self, mock_get_lab):
        token = mtoken.Token()
        token.is_lab_token = True
        mock_get_lab.return_value = "fake"

        is_lab, is_super, lab_name = hbtrigger._is_lab_token(
            token, self.database)

        self.assertTrue(is_lab)
        self.assertFalse(is_super)
        self.assertIsNotNone(lab_name)

        token.is_lab_token = False

        is_lab, is_super, lab_name = hbtrigger._is_lab_token(
            token, self.database)

        self.assertFalse(is_lab)
        self.assertFalse(is_super)
        self.assertIsNone(lab_name)
    def test_is_lab_token_admin_super(self):
        token = mtoken.Token()
        token.is_admin = True

        is_lab, is_super, lab_name = hbtrigger._is_lab_token(
            token, self.database)

        self.assertTrue(is_lab)
        self.assertTrue(is_super)
        self.assertIsNone(lab_name)

        token.is_admin = False
        token.is_superuser = True

        is_lab, is_super, lab_name = hbtrigger._is_lab_token(
            token, self.database)

        self.assertTrue(is_lab)
        self.assertTrue(is_super)
        self.assertIsNone(lab_name)
Exemple #17
0
    def _token_update_create(json_obj, token=None, fail=True):
        """Create or update a `Token` object.

        If the `token` argument is null, a new one will be created.

        :param json_obj: The JSON object with the values to update.
        :param token: The `Token` to update. Default to None meaning a new
            token will be created.
        param fail: If when a mandatory Token field is missing we should fail.
            By default True, and it fails when the `email` field is missing.
        :return A `Token`.
        :raise KeyError, ValueError, TypeError, Exception.
        """
        if not token:
            token = mtoken.Token()

        json_get = json_obj.get

        if fail:
            token.email = json_obj[models.EMAIL_KEY]
        else:
            if json_get(models.EMAIL_KEY, None):
                token.email = json_get(models.EMAIL_KEY)

        if json_get(models.USERNAME_KEY, None):
            token.username = json_get(models.USERNAME_KEY)

        if json_get(models.EXPIRES_KEY, None):
            token.expires_on = json_get(models.EXPIRES_KEY)

        if str(json_get(models.EXPIRED_KEY, None)) != "None":
            token.expired = json_get(models.EXPIRED_KEY)

        if str(json_get(models.GET_KEY, None)) != "None":
            token.is_get_token = json_get(models.GET_KEY)

        if str(json_get(models.POST_KEY, None)) != "None":
            token.is_post_token = json_get(models.POST_KEY)

        if str(json_get(models.DELETE_KEY, None)) != "None":
            token.is_delete_token = json_get(models.DELETE_KEY)

        if str(json_get(models.SUPERUSER_KEY, None)) != "None":
            token.is_superuser = json_get(models.SUPERUSER_KEY)

        if str(json_get(models.ADMIN_KEY, None)) != "None":
            token.is_admin = json_get(models.ADMIN_KEY)

        if str(json_get(models.IP_RESTRICTED, None)) != "None":
            token.is_ip_restricted = json_get(models.IP_RESTRICTED)

        if str(json_get(models.LAB_KEY, None)) != "None":
            token.is_lab_token = json_get(models.LAB_KEY)

        if str(json_get(models.UPLOAD_KEY, None)) != "None":
            token.is_upload_token = json_get(models.UPLOAD_KEY)

        if str(json_get(models.TEST_LAB_KEY, None)) != "None":
            token.is_test_lab_token = json_get(models.TEST_LAB_KEY)

        if (token.is_ip_restricted
                and not json_get(models.IP_ADDRESS_KEY, None)):
            raise Exception("IP restricted but no IP addresses given")
        elif (json_get(models.IP_ADDRESS_KEY, None)
              and not token.is_ip_restricted):
            raise Exception(
                "IP addresses given, but token is not IP restricted")
        elif token.is_ip_restricted and json_get(models.IP_ADDRESS_KEY, None):
            token.ip_address = json_get(models.IP_ADDRESS_KEY)

        return token
    def test_token_with_boolean(self):
        token_obj = modt.Token()
        token_obj.is_admin = True

        self.assertTrue(token_obj.is_admin)
        self.assertEqual(token_obj.is_admin, 1)
 def test_token_creation_date(self):
     token_obj = modt.Token()
     self.assertIsInstance(token_obj.created_on, datetime.datetime)
 def test_token_not_none(self):
     token_obj = modt.Token()
     self.assertIsNotNone(token_obj.token)
    def test_unique_token(self):
        token_obj1 = modt.Token()
        token_obj2 = modt.Token()

        self.assertNotEqual(token_obj1.token, token_obj2.token)
 def test_properties_len(self):
     token_obj = modt.Token()
     self.assertEqual(len(token_obj.properties), 16)
 def test_not_expired(self):
     token_obj = modt.Token()
     self.assertFalse(token_obj.expired)
 def test_token_wrong_expiry(self):
     token_obj = modt.Token()
     self.assertRaises(ValueError, setattr, token_obj, "expires_on",
                       "2014-06")
 def test_token_model_is_base_document(self):
     token_obj = modt.Token()
     self.assertIsInstance(token_obj, modb.BaseDocument)
    def test_token_valid_negative_number(self):
        token_obj = modt.Token()
        token_obj.is_superuser = -1

        self.assertTrue(token_obj.is_superuser)
    def test_valid_ip_single_ip_wrong_address(self):
        token_obj = modt.Token()
        token_obj.is_ip_restricted = True
        token_obj.ip_address = '127.0.0.1'

        self.assertFalse(token_obj.is_valid_ip("a.b.c"))
    def test_token_properties_setter_wrong_type(self):
        token_obj = modt.Token()

        self.assertRaises(TypeError, setattr, token_obj, "properties", "")
        self.assertRaises(TypeError, setattr, token_obj, "properties", ())
        self.assertRaises(TypeError, setattr, token_obj, "properties", {})
 def test_valid_ip_no_restricted(self):
     token_obj = modt.Token()
     self.assertTrue(token_obj.is_valid_ip("foo"))
 def test_token_negative_number(self):
     token_obj = modt.Token()
     self.assertRaises(ValueError, setattr, token_obj, "is_admin", -22)