Add user conflict to full schleuder test
This commit is contained in:
parent
f0c666540f
commit
f34eecd6ee
2 changed files with 67 additions and 12 deletions
|
@ -44,6 +44,7 @@ gen_key andy.example@example.org
|
|||
mv /tmp/andy.example@example.org.asc /tmp/andy.example@example.org.1.asc
|
||||
gen_key aaron.example@example.org aaron.example@example.net
|
||||
gen_key amy.example@example.org
|
||||
gen_key alice.example@example.org alice.example@example.net
|
||||
|
||||
install -m 0700 -d /tmp/gpg
|
||||
export GNUPGHOME=/tmp/gpg
|
||||
|
@ -75,6 +76,7 @@ schleuder-cli subscriptions new test-north@schleuder.example.org arno.example@ex
|
|||
subscribe test-east@schleuder.example.org anna.example@example.org # key should be updated
|
||||
subscribe test-east@schleuder.example.org anotherspammer@example.org # should not be subscribed
|
||||
subscribe test-east@schleuder.example.org aaron.example@example.org # should remain as-is
|
||||
subscribe test-east@schleuder.example.org alice.example@example.net # should be subscriped despite conflict
|
||||
|
||||
subscribe test-south@schleuder.example.org andy.example@example.org # should be subscribed despite key conflict
|
||||
subscribe test-south@schleuder.example.org amy.example@example.org # should be subscribed - conflict but same key
|
||||
|
@ -84,6 +86,7 @@ sleep 5 # to get different subscription dates
|
|||
schleuder-cli subscriptions new test-west@schleuder.example.org andy.example@example.org /tmp/andy.example@example.org.1.asc
|
||||
# should not be subscribed
|
||||
subscribe test-west@schleuder.example.org amy.example@example.org # should be subscribed - conflict but same key
|
||||
subscribe test-west@schleuder.example.org alice.example@example.org # should not be subscriped - key used by other UID
|
||||
|
||||
schleuder-cli subscriptions new test2-global@schleuder.example.org arno.example@example.org
|
||||
# should be unsubscribed - no key
|
||||
|
|
|
@ -38,6 +38,7 @@ expected_subscribers = subscribermap([
|
|||
'aaron.example@example.org',
|
||||
'admin@example.org',
|
||||
'alex.example@example.org',
|
||||
'alice.example@example.net',
|
||||
'amy.example@example.org',
|
||||
'andy.example@example.org',
|
||||
'anna.example@example.org',
|
||||
|
@ -62,6 +63,7 @@ expected_keys = keymap([
|
|||
'aaron.example@example.org',
|
||||
'admin@example.org',
|
||||
'alex.example@example.org',
|
||||
'alice.example@example.org', # schleuder returns the primary UID
|
||||
'amy.example@example.org',
|
||||
'andy.example@example.org',
|
||||
'anna.example@example.org',
|
||||
|
@ -84,20 +86,23 @@ if len(keysdiff) > 0:
|
|||
# Test mbox
|
||||
|
||||
mbox = mailbox.mbox('/var/spool/mail/root')
|
||||
if len(mbox) != 2:
|
||||
print(f'Expected 2 messages in mbox, got {len(mbox)}')
|
||||
if len(mbox) != 4:
|
||||
print(f'Expected 4 messages in mbox, got {len(mbox)}')
|
||||
exit(1)
|
||||
_, msg1 = mbox.popitem()
|
||||
_, msg2 = mbox.popitem()
|
||||
messages = []
|
||||
for i in range(4):
|
||||
messages.append(mbox.popitem()[1])
|
||||
mbox.close()
|
||||
if 'X-MultiSchleuder-Digest' not in msg1:
|
||||
msg1, msg2 = msg2, msg1
|
||||
|
||||
msg1 = [m for m in messages if m['To'] == 'andy.example@example.org'][0]
|
||||
msg2 = [m for m in messages if m['To'] == 'admin@example.org'][0]
|
||||
msg3 = [m for m in messages if m['To'] == 'alice.example@example.org'][0]
|
||||
msg4 = [m for m in messages if m['To'] == 'alice.example@example.net'][0]
|
||||
|
||||
if 'X-MultiSchleuder-Digest' not in msg1:
|
||||
print(f'Key conflict message should have a X-MultiSchleuder-Digest header, missing')
|
||||
exit(1)
|
||||
digest = msg1['X-MultiSchleuder-Digest'].strip()
|
||||
digest1 = msg1['X-MultiSchleuder-Digest'].strip()
|
||||
if msg1['From'] != 'test-global-owner@schleuder.example.org':
|
||||
print(f'Expected "From: test-global-owner@schleuder.example.org", got {msg1["From"]}')
|
||||
exit(1)
|
||||
|
@ -127,27 +132,74 @@ if msg2['Precedence'] != 'list':
|
|||
print(f'Expected "Precedence: list", got {msg2["Precedence"]}')
|
||||
exit(1)
|
||||
|
||||
if 'X-MultiSchleuder-Digest' not in msg3:
|
||||
print(f'User conflict message should have a X-MultiSchleuder-Digest header, missing')
|
||||
exit(1)
|
||||
digest3 = msg3['X-MultiSchleuder-Digest'].strip()
|
||||
if msg3['From'] != 'test-global-owner@schleuder.example.org':
|
||||
print(f'Expected "From: test-global-owner@schleuder.example.org", got {msg3["From"]}')
|
||||
exit(1)
|
||||
if msg3['To'] != 'alice.example@example.org':
|
||||
print(f'Expected "To: alice.example@example.org", got {msg3["To"]}')
|
||||
exit(1)
|
||||
if msg3['Auto-Submitted'] != 'auto-generated':
|
||||
print(f'Expected "Auto-Submitted: auto-generated", got {msg3["Auto-Submitted"]}')
|
||||
exit(1)
|
||||
if msg3['Precedence'] != 'list':
|
||||
print(f'Expected "Precedence: list", got {msg3["Precedence"]}')
|
||||
exit(1)
|
||||
|
||||
if 'X-MultiSchleuder-Digest' not in msg4:
|
||||
print(f'User conflict message should have a X-MultiSchleuder-Digest header, missing')
|
||||
exit(1)
|
||||
digest4 = msg4['X-MultiSchleuder-Digest'].strip()
|
||||
if msg4['From'] != 'test-global-owner@schleuder.example.org':
|
||||
print(f'Expected "From: test-global-owner@schleuder.example.org", got {msg4["From"]}')
|
||||
exit(1)
|
||||
if msg4['To'] != 'alice.example@example.net':
|
||||
print(f'Expected "To: alice.example@example.net", got {msg4["To"]}')
|
||||
exit(1)
|
||||
if msg4['Auto-Submitted'] != 'auto-generated':
|
||||
print(f'Expected "Auto-Submitted: auto-generated", got {msg4["Auto-Submitted"]}')
|
||||
exit(1)
|
||||
if msg4['Precedence'] != 'list':
|
||||
print(f'Expected "Precedence: list", got {msg4["Precedence"]}')
|
||||
exit(1)
|
||||
|
||||
if digest3 != digest4:
|
||||
print(f'User conflict messages should have the same digest, got: "{digest3}" vs "{digest4}"')
|
||||
exit(1)
|
||||
|
||||
gpg1 = subprocess.Popen(['/usr/bin/gpg', '-d'],
|
||||
stdin=subprocess.PIPE,
|
||||
stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
||||
gpg1o, _ = gpg1.communicate(msg1.get_payload()[1].get_payload(decode=True))
|
||||
print(f'Key conflict message (decrypted):\n{gpg1o.decode()}')
|
||||
print(f'\nKey conflict message (decrypted):\n{gpg1o.decode()}')
|
||||
gpg2 = subprocess.Popen(['/usr/bin/gpg', '-d'],
|
||||
stdin=subprocess.PIPE,
|
||||
stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
||||
gpg2o, _ = gpg2.communicate(msg2.get_payload()[1].get_payload(decode=True))
|
||||
print(f'Admin report message (decrypted):\n{gpg2o.decode()}')
|
||||
print(f'\nAdmin report message (decrypted):\n{gpg2o.decode()}')
|
||||
gpg3 = subprocess.Popen(['/usr/bin/gpg', '-d'],
|
||||
stdin=subprocess.PIPE,
|
||||
stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
||||
gpg3o, _ = gpg3.communicate(msg3.get_payload()[1].get_payload(decode=True))
|
||||
print(f'\nUser conflict message (decrypted):\n{gpg3o.decode()}')
|
||||
|
||||
# Test conflict statefile
|
||||
|
||||
with open('/tmp/conflict.json', 'r') as f:
|
||||
conflict = json.load(f)
|
||||
if len(conflict) != 1:
|
||||
if len(conflict) != 2:
|
||||
print('Expected 1 entry in conflict statefile, got:')
|
||||
print(json.dumps(conflict))
|
||||
exit(1)
|
||||
if digest not in conflict:
|
||||
print(f'Expected key "{digest}" in conflict statefile, got:')
|
||||
if digest1 not in conflict:
|
||||
print(f'Expected key "{digest1}" in conflict statefile, got:')
|
||||
print(json.dumps(conflict))
|
||||
exit(1)
|
||||
if digest3 not in conflict:
|
||||
print(f'Expected key "{digest3}" in conflict statefile, got:')
|
||||
print(json.dumps(conflict))
|
||||
exit(1)
|
||||
|
||||
|
|
Loading…
Reference in a new issue