Changed the object factory instances of nomcom private key and cert to be byte objects (matching the production settings), and fixed the issue with nomcom key handling under Py3 found by fenton@bluepopcorn.net. Did some renaming in nomcom/tests.py to better match setup/teardown function names to functionality.

- Legacy-Id: 17536
This commit is contained in:
Henrik Levkowetz 2020-03-25 13:36:29 +00:00
parent 827ab69705
commit dc4c05ec5b
4 changed files with 33 additions and 32 deletions

View file

@ -13,7 +13,7 @@ from ietf.person.factories import PersonFactory, UserFactory
import debug # pyflakes:ignore
cert = '''-----BEGIN CERTIFICATE-----
cert = b'''-----BEGIN CERTIFICATE-----
MIIDHjCCAgagAwIBAgIJAKDCCjbQboJzMA0GCSqGSIb3DQEBCwUAMBMxETAPBgNV
BAMMCE5vbUNvbTE1MB4XDTE0MDQwNDIxMTQxNFoXDTE2MDQwMzIxMTQxNFowEzER
MA8GA1UEAwwITm9tQ29tMTUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB
@ -34,7 +34,7 @@ toX3j+FUe2UiUak3ACXdrOPSsFP0KRrFwuMnuHHXkGj/Uw==
-----END CERTIFICATE-----
'''
key = '''-----BEGIN PRIVATE KEY-----
key = b'''-----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC2QXCsAitYSOgP
Yor77zQnEeHuVqlcuhpH1wpKB+N6WcScA5N3AnX9uZEFOt6McJ+MCiHECdqDlH6n
pQTJlpCpIVgAD4B6xzjRBRww8d3lClA/kKwsKzuX93RS0Uv30hAD6q9wjqK/m6vR

View file

@ -18,7 +18,7 @@ from django.conf import settings
from django.core.files import File
from django.contrib.auth.models import User
from django.urls import reverse
from django.utils.encoding import force_text
from django.utils.encoding import force_text, force_str
import debug # pyflakes:ignore
@ -52,12 +52,12 @@ def get_cert_files():
client_test_cert_files = generate_cert()
return client_test_cert_files
def build_test_public_keys_dir(obj):
def setup_test_public_keys_dir(obj):
obj.saved_nomcom_public_keys_dir = settings.NOMCOM_PUBLIC_KEYS_DIR
obj.nomcom_public_keys_dir = obj.tempdir('nomcom-public-keys')
settings.NOMCOM_PUBLIC_KEYS_DIR = obj.nomcom_public_keys_dir
def clean_test_public_keys_dir(obj):
def teardown_test_public_keys_dir(obj):
settings.NOMCOM_PUBLIC_KEYS_DIR = obj.saved_nomcom_public_keys_dir
shutil.rmtree(obj.nomcom_public_keys_dir)
@ -70,7 +70,7 @@ class NomcomViewsTest(TestCase):
return response
def setUp(self):
build_test_public_keys_dir(self)
setup_test_public_keys_dir(self)
nomcom_test_data()
self.cert_file, self.privatekey_file = get_cert_files()
self.year = NOMCOM_YEAR
@ -99,7 +99,7 @@ class NomcomViewsTest(TestCase):
self.public_nominate_newperson_url = reverse('ietf.nomcom.views.public_nominate_newperson', kwargs={'year': self.year})
def tearDown(self):
clean_test_public_keys_dir(self)
teardown_test_public_keys_dir(self)
def access_member_url(self, url):
login_testing_unauthorized(self, COMMUNITY_USER, url)
@ -943,12 +943,12 @@ class NomineePositionStateSaveTest(TestCase):
"""Tests for the NomineePosition save override method"""
def setUp(self):
build_test_public_keys_dir(self)
setup_test_public_keys_dir(self)
nomcom_test_data()
self.nominee = Nominee.objects.get(email__person__user__username=COMMUNITY_USER)
def tearDown(self):
clean_test_public_keys_dir(self)
teardown_test_public_keys_dir(self)
def test_state_autoset(self):
"""Verify state is autoset correctly"""
@ -978,13 +978,13 @@ class NomineePositionStateSaveTest(TestCase):
class FeedbackTest(TestCase):
def setUp(self):
build_test_public_keys_dir(self)
setup_test_public_keys_dir(self)
nomcom_test_data()
self.cert_file, self.privatekey_file = get_cert_files()
def tearDown(self):
clean_test_public_keys_dir(self)
teardown_test_public_keys_dir(self)
def test_encrypted_comments(self):
@ -1011,7 +1011,7 @@ class FeedbackTest(TestCase):
class ReminderTest(TestCase):
def setUp(self):
build_test_public_keys_dir(self)
setup_test_public_keys_dir(self)
nomcom_test_data()
self.nomcom = get_nomcom_by_year(NOMCOM_YEAR)
self.cert_file, self.privatekey_file = get_cert_files()
@ -1053,7 +1053,7 @@ class ReminderTest(TestCase):
feedback.nominees.add(n)
def tearDown(self):
clean_test_public_keys_dir(self)
teardown_test_public_keys_dir(self)
def test_is_time_to_send(self):
self.nomcom.reminder_interval = 4
@ -1109,14 +1109,14 @@ class ReminderTest(TestCase):
class InactiveNomcomTests(TestCase):
def setUp(self):
build_test_public_keys_dir(self)
setup_test_public_keys_dir(self)
self.nc = NomComFactory.create(**nomcom_kwargs_for_year(group__state_id='conclude'))
self.plain_person = PersonFactory.create()
self.chair = self.nc.group.role_set.filter(name='chair').first().person
self.member = self.nc.group.role_set.filter(name='member').first().person
def tearDown(self):
clean_test_public_keys_dir(self)
teardown_test_public_keys_dir(self)
def test_feedback_closed(self):
for view in ['ietf.nomcom.views.public_feedback', 'ietf.nomcom.views.private_feedback']:
@ -1303,7 +1303,7 @@ class InactiveNomcomTests(TestCase):
class FeedbackLastSeenTests(TestCase):
def setUp(self):
build_test_public_keys_dir(self)
setup_test_public_keys_dir(self)
self.nc = NomComFactory.create(**nomcom_kwargs_for_year())
self.author = PersonFactory.create().email_set.first().address
self.member = self.nc.group.role_set.filter(name='member').first().person
@ -1322,7 +1322,7 @@ class FeedbackLastSeenTests(TestCase):
self.second_from_now = now + datetime.timedelta(seconds=1)
def tearDown(self):
clean_test_public_keys_dir(self)
teardown_test_public_keys_dir(self)
def test_feedback_index_badges(self):
url = reverse('ietf.nomcom.views.view_feedback',kwargs={'year':self.nc.year()})
@ -1409,13 +1409,13 @@ class FeedbackLastSeenTests(TestCase):
class NewActiveNomComTests(TestCase):
def setUp(self):
build_test_public_keys_dir(self)
setup_test_public_keys_dir(self)
self.nc = NomComFactory.create(**nomcom_kwargs_for_year())
self.chair = self.nc.group.role_set.filter(name='chair').first().person
self.saved_days_to_expire_nomination_link = settings.DAYS_TO_EXPIRE_NOMINATION_LINK
def tearDown(self):
clean_test_public_keys_dir(self)
teardown_test_public_keys_dir(self)
settings.DAYS_TO_EXPIRE_NOMINATION_LINK = self.saved_days_to_expire_nomination_link
def test_help(self):
@ -1485,7 +1485,7 @@ class NewActiveNomComTests(TestCase):
login_testing_unauthorized(self,self.chair.user.username,url)
response = self.client.get(url)
self.assertEqual(response.status_code,200)
response = self.client.post(url,{'key':key})
response = self.client.post(url,{'key': force_str(key)})
self.assertEqual(response.status_code,302)
def test_email_pasting(self):
@ -1872,13 +1872,13 @@ class NoPublicKeyTests(TestCase):
class AcceptingTests(TestCase):
def setUp(self):
build_test_public_keys_dir(self)
setup_test_public_keys_dir(self)
self.nc = NomComFactory(**nomcom_kwargs_for_year())
self.plain_person = PersonFactory.create()
self.member = self.nc.group.role_set.filter(name='member').first().person
def tearDown(self):
clean_test_public_keys_dir(self)
teardown_test_public_keys_dir(self)
def test_public_accepting_nominations(self):
url = reverse('ietf.nomcom.views.public_nominate',kwargs={'year':self.nc.year()})
@ -1979,12 +1979,12 @@ class AcceptingTests(TestCase):
class ShowNomineeTests(TestCase):
def setUp(self):
build_test_public_keys_dir(self)
setup_test_public_keys_dir(self)
self.nc = NomComFactory(**nomcom_kwargs_for_year())
self.plain_person = PersonFactory.create()
def tearDown(self):
clean_test_public_keys_dir(self)
teardown_test_public_keys_dir(self)
def test_feedback_pictures(self):
url = reverse('ietf.nomcom.views.public_nominate',kwargs={'year':self.nc.year()})
@ -2000,13 +2000,13 @@ class ShowNomineeTests(TestCase):
class TopicTests(TestCase):
def setUp(self):
build_test_public_keys_dir(self)
setup_test_public_keys_dir(self)
self.nc = NomComFactory(**nomcom_kwargs_for_year(populate_topics=False))
self.plain_person = PersonFactory.create()
self.chair = self.nc.group.role_set.filter(name='chair').first().person
def tearDown(self):
clean_test_public_keys_dir(self)
teardown_test_public_keys_dir(self)
def testAddEditListRemoveTopic(self):
self.assertFalse(self.nc.topic_set.exists())

View file

@ -169,7 +169,7 @@ def retrieve_nomcom_private_key(request, year):
command = "%s bf -d -in /dev/stdin -k \"%s\" -a"
code, out, error = pipe(command % (settings.OPENSSL_COMMAND,
settings.SECRET_KEY), private_key.encode('utf-8'))
settings.SECRET_KEY), private_key)
if code != 0:
log("openssl error: %s:\n Error %s: %s" %(command, code, error))
return out
@ -181,7 +181,7 @@ def store_nomcom_private_key(request, year, private_key):
else:
command = "%s bf -e -in /dev/stdin -k \"%s\" -a"
code, out, error = pipe(command % (settings.OPENSSL_COMMAND,
settings.SECRET_KEY), private_key.encode('utf-8'))
settings.SECRET_KEY), private_key)
if code != 0:
log("openssl error: %s:\n Error %s: %s" %(command, code, error))
if error:

View file

@ -9,15 +9,16 @@ import re
from collections import OrderedDict, Counter
from django.conf import settings
from django.contrib import messages
from django.contrib.auth.decorators import login_required
from django.contrib.auth.models import AnonymousUser
from django.contrib import messages
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
from django.urls import reverse
from django.forms.models import modelformset_factory, inlineformset_factory
from django.http import Http404, HttpResponseRedirect, HttpResponseForbidden
from django.shortcuts import render, get_object_or_404, redirect
from django.template.loader import render_to_string
from django.forms.models import modelformset_factory, inlineformset_factory
from django.urls import reverse
from django.utils.encoding import force_bytes
from ietf.dbtemplate.models import DBTemplate
@ -119,7 +120,7 @@ def private_key(request, year):
if request.method == 'POST':
form = PrivateKeyForm(data=request.POST)
if form.is_valid():
store_nomcom_private_key(request, year, form.cleaned_data.get('key', ''))
store_nomcom_private_key(request, year, force_bytes(form.cleaned_data.get('key', '')))
return HttpResponseRedirect(back_url)
else:
form = PrivateKeyForm()