68 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			68 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| # -*- coding: utf-8 -*-
 | |
| import uuid
 | |
| 
 | |
| import pytest
 | |
| 
 | |
| from mongoengine import *
 | |
| from tests.utils import MongoDBTestCase, get_as_pymongo
 | |
| 
 | |
| 
 | |
| class Person(Document):
 | |
|     api_key = UUIDField(binary=False)
 | |
| 
 | |
| 
 | |
| class TestUUIDField(MongoDBTestCase):
 | |
|     def test_storage(self):
 | |
|         uid = uuid.uuid4()
 | |
|         person = Person(api_key=uid).save()
 | |
|         assert get_as_pymongo(person) == {"_id": person.id, "api_key": str(uid)}
 | |
| 
 | |
|     def test_field_string(self):
 | |
|         """Test UUID fields storing as String
 | |
|         """
 | |
|         Person.drop_collection()
 | |
| 
 | |
|         uu = uuid.uuid4()
 | |
|         Person(api_key=uu).save()
 | |
|         assert 1 == Person.objects(api_key=uu).count()
 | |
|         assert uu == Person.objects.first().api_key
 | |
| 
 | |
|         person = Person()
 | |
|         valid = (uuid.uuid4(), uuid.uuid1())
 | |
|         for api_key in valid:
 | |
|             person.api_key = api_key
 | |
|             person.validate()
 | |
| 
 | |
|         invalid = (
 | |
|             "9d159858-549b-4975-9f98-dd2f987c113g",
 | |
|             "9d159858-549b-4975-9f98-dd2f987c113",
 | |
|         )
 | |
|         for api_key in invalid:
 | |
|             person.api_key = api_key
 | |
|             with pytest.raises(ValidationError):
 | |
|                 person.validate()
 | |
| 
 | |
|     def test_field_binary(self):
 | |
|         """Test UUID fields storing as Binary object."""
 | |
|         Person.drop_collection()
 | |
| 
 | |
|         uu = uuid.uuid4()
 | |
|         Person(api_key=uu).save()
 | |
|         assert 1 == Person.objects(api_key=uu).count()
 | |
|         assert uu == Person.objects.first().api_key
 | |
| 
 | |
|         person = Person()
 | |
|         valid = (uuid.uuid4(), uuid.uuid1())
 | |
|         for api_key in valid:
 | |
|             person.api_key = api_key
 | |
|             person.validate()
 | |
| 
 | |
|         invalid = (
 | |
|             "9d159858-549b-4975-9f98-dd2f987c113g",
 | |
|             "9d159858-549b-4975-9f98-dd2f987c113",
 | |
|         )
 | |
|         for api_key in invalid:
 | |
|             person.api_key = api_key
 | |
|             with pytest.raises(ValidationError):
 | |
|                 person.validate()
 |