Added a factory function OidClientRecordFactory for OpenID testing
- Legacy-Id: 17914
This commit is contained in:
parent
b9b36dc124
commit
4139d17308
56
ietf/ietfauth/factories.py
Normal file
56
ietf/ietfauth/factories.py
Normal file
|
@ -0,0 +1,56 @@
|
|||
# Copyright The IETF Trust 2020, All Rights Reserved
|
||||
|
||||
import debug # pyflakes:ignore
|
||||
import factory
|
||||
|
||||
from hashlib import sha224
|
||||
from random import randint
|
||||
from uuid import uuid4
|
||||
|
||||
from oidc_provider.models import Client as OidClientRecord, ResponseType
|
||||
|
||||
from ietf.person.factories import UserFactory, PersonFactory
|
||||
|
||||
class OidClientRecordFactory(factory.DjangoModelFactory):
|
||||
class Meta:
|
||||
model = OidClientRecord
|
||||
|
||||
name = factory.Faker('company')
|
||||
owner = factory.SubFactory(UserFactory)
|
||||
client_type = 'confidential'
|
||||
client_id = str(randint(1, 999999)).zfill(6)
|
||||
|
||||
@factory.lazy_attribute
|
||||
def client_secret(self):
|
||||
if self.client_type == 'confidential':
|
||||
secret = sha224(uuid4().hex.encode()).hexdigest()
|
||||
else:
|
||||
secret = ''
|
||||
return secret
|
||||
|
||||
@factory.post_generation
|
||||
def response_types(self, create, extracted, **kwargs):
|
||||
if not create:
|
||||
# Simple build, do nothing.
|
||||
return
|
||||
|
||||
if not extracted:
|
||||
extracted = ['code', ]
|
||||
|
||||
# A list of groups were passed in, use them
|
||||
for value in extracted:
|
||||
type, _ = ResponseType.objects.get_or_create(value=value)
|
||||
self.response_types.add(type)
|
||||
|
||||
@factory.post_generation
|
||||
def person(self, create, extracted, **kwargs):
|
||||
if not create:
|
||||
# Simple build, do nothing.
|
||||
return
|
||||
|
||||
user = self.owner
|
||||
if extracted:
|
||||
extracted.user = user
|
||||
extracted.save()
|
||||
else:
|
||||
PersonFactory(name='%s %s' % (user.first_name, user.last_name), user=user)
|
Loading…
Reference in a new issue