##// END OF EJS Templates
Add about dialog in Notebook Help Menu....
Add about dialog in Notebook Help Menu. This allow to get info on version of IPython when running remotely. The about dialog also send a kernel info request and display the banner which is useful for non-python kernel that don't match IPython version

File last commit:

r18255:e8b4bab5
r18359:7fd73a83
Show More
test_sign.py
122 lines | 4.4 KiB | text/x-python | PythonLexer
MinRK
test notebook signing
r14863 """Test Notebook signing"""
#-----------------------------------------------------------------------------
# Copyright (C) 2014, The IPython Development Team
#
# Distributed under the terms of the BSD License. The full license is in
# the file COPYING, distributed as part of this software.
#-----------------------------------------------------------------------------
#-----------------------------------------------------------------------------
# Imports
#-----------------------------------------------------------------------------
from .. import sign
from .base import TestsBase
from ..current import read
from IPython.core.getipython import get_ipython
#-----------------------------------------------------------------------------
# Classes and functions
#-----------------------------------------------------------------------------
class TestNotary(TestsBase):
def setUp(self):
self.notary = sign.NotebookNotary(
secret=b'secret',
profile_dir=get_ipython().profile_dir
)
with self.fopen(u'test3.ipynb', u'r') as f:
self.nb = read(f, u'json')
def test_algorithms(self):
last_sig = ''
MinRK
Python 3 renamed hashlib.algorithms to algorithms_guaranteed
r14908 for algo in sign.algorithms:
MinRK
test notebook signing
r14863 self.notary.algorithm = algo
self.notary.sign(self.nb)
sig = self.nb.metadata.signature
print(sig)
self.assertEqual(sig[:len(self.notary.algorithm)+1], '%s:' % self.notary.algorithm)
self.assertNotEqual(last_sig, sig)
last_sig = sig
def test_sign_same(self):
"""Multiple signatures of the same notebook are the same"""
sig1 = self.notary.compute_signature(self.nb)
sig2 = self.notary.compute_signature(self.nb)
self.assertEqual(sig1, sig2)
def test_change_secret(self):
"""Changing the secret changes the signature"""
sig1 = self.notary.compute_signature(self.nb)
self.notary.secret = b'different'
sig2 = self.notary.compute_signature(self.nb)
self.assertNotEqual(sig1, sig2)
def test_sign(self):
self.notary.sign(self.nb)
sig = self.nb.metadata.signature
self.assertEqual(sig[:len(self.notary.algorithm)+1], '%s:' % self.notary.algorithm)
def test_check_signature(self):
nb = self.nb
md = nb.metadata
notary = self.notary
check_signature = notary.check_signature
# no signature:
md.pop('signature', None)
self.assertFalse(check_signature(nb))
# hash only, no algo
md.signature = notary.compute_signature(nb)
self.assertFalse(check_signature(nb))
# proper signature, algo mismatch
notary.algorithm = 'sha224'
notary.sign(nb)
notary.algorithm = 'sha256'
self.assertFalse(check_signature(nb))
# check correctly signed notebook
notary.sign(nb)
self.assertTrue(check_signature(nb))
def test_mark_cells_untrusted(self):
cells = self.nb.worksheets[0].cells
self.notary.mark_cells(self.nb, False)
for cell in cells:
MinRK
trust is stored in code_cell.metadata...
r18255 self.assertNotIn('trusted', cell)
MinRK
test notebook signing
r14863 if cell.cell_type == 'code':
MinRK
trust is stored in code_cell.metadata...
r18255 self.assertIn('trusted', cell.metadata)
self.assertFalse(cell.metadata.trusted)
MinRK
test notebook signing
r14863 else:
MinRK
trust is stored in code_cell.metadata...
r18255 self.assertNotIn('trusted', cell.metadata)
MinRK
test notebook signing
r14863
def test_mark_cells_trusted(self):
cells = self.nb.worksheets[0].cells
self.notary.mark_cells(self.nb, True)
for cell in cells:
MinRK
trust is stored in code_cell.metadata...
r18255 self.assertNotIn('trusted', cell)
MinRK
test notebook signing
r14863 if cell.cell_type == 'code':
MinRK
trust is stored in code_cell.metadata...
r18255 self.assertIn('trusted', cell.metadata)
self.assertTrue(cell.metadata.trusted)
MinRK
test notebook signing
r14863 else:
MinRK
trust is stored in code_cell.metadata...
r18255 self.assertNotIn('trusted', cell.metadata)
MinRK
test notebook signing
r14863
def test_check_cells(self):
nb = self.nb
self.notary.mark_cells(nb, True)
self.assertTrue(self.notary.check_cells(nb))
MinRK
don't write cell.trusted to disk...
r15023 for cell in nb.worksheets[0].cells:
self.assertNotIn('trusted', cell)
MinRK
test notebook signing
r14863 self.notary.mark_cells(nb, False)
self.assertFalse(self.notary.check_cells(nb))
MinRK
don't write cell.trusted to disk...
r15023 for cell in nb.worksheets[0].cells:
self.assertNotIn('trusted', cell)
MinRK
trust cells with no output...
r15269
def test_trust_no_output(self):
nb = self.nb
self.notary.mark_cells(nb, False)
for cell in nb.worksheets[0].cells:
if cell.cell_type == 'code':
cell.outputs = []
self.assertTrue(self.notary.check_cells(nb))
MinRK
test notebook signing
r14863