Skip to content

Commit

Permalink
Get the tests passing and clean up a bit.
Browse files Browse the repository at this point in the history
  • Loading branch information
adam-thomas committed Oct 6, 2015
1 parent 8723c13 commit 4f0e0a4
Show file tree
Hide file tree
Showing 6 changed files with 152 additions and 8 deletions.
9 changes: 4 additions & 5 deletions model_logging/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
from rest_framework.serializers import (
CharField,
Field,
HyperlinkedModelSerializer,
ModelSerializer,
)

from . import models
Expand All @@ -14,15 +14,14 @@ def to_representation(self, obj):
return json.loads(obj)


class LogEntrySerializer(HyperlinkedModelSerializer):
class LogEntrySerializer(ModelSerializer):
data = JSONField()
creator = CharField(source='creator.name')
creator = CharField(source='creator.email')
operation_label = CharField(source='get_operation_display', read_only=True)

class Meta:
model = models.LogEntry
fields = (
'url', 'date_created', 'creator', 'operation', 'operation_label', 'data',
'date_created', 'creator', 'operation', 'operation_label', 'data',
)
read_only_fields = fields
view_name = 'medication-history-detail'
57 changes: 57 additions & 0 deletions model_logging/tests/keys/private.key
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
-----BEGIN PGP PRIVATE KEY BLOCK-----
Version: GnuPG v1

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
=kJd7
-----END PGP PRIVATE KEY BLOCK-----
30 changes: 30 additions & 0 deletions model_logging/tests/keys/public.key
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1

mQENBFRJDkwBCADVJDHy7al1P8urXWDkTSMfb6vGivD6vW0N2dDFixxKHDlOej52
OB2F/B/WLFpdXFiKxLSTIWEp/d0AEtJQrNMuMCzUKT08h3YU5ypiBdGIY7fqWwi9
G18ihm29/ygPni1XzG02DCto/pYD++RieIgGPOm8xlLrHwemehxhiOQ1K9eds8wd
d0awXtiKdClaxGi24soyBxBC/tLde2Sgyh5y24RyXsmvZxORwWBM5tRZwOxwsQym
Akt2M7LIGyQVgbLmTe4k5u3Uqv/t5tVK8OdDDbbXVDwJbj4n1Jol68cutHTAahpY
mkOAuqLp7ZWqx/DsYYoJhv/G7dhcpS+CfNs3ABEBAAG0HlRlc3QgS2V5IDxleGFt
cGxlQGV4YW1wbGUuY29tPokBOAQTAQIAIgUCVEkOTAIbAwYLCQgHAwIGFQgCCQoL
BBYCAwECHgECF4AACgkQY3+K26BCfZUZPwgAzM03DFGATxldBcia63gK+vsEoDS+
xCtHaDpNvestHDlCd3bHU13LcLAXUD9E/s4LpHF+lMACCyscdeTriA/x0IJBIuq9
4KXMHJPpsh+eyGn09zhSfcfoMnQqgD682tvtBAD+oPb7Z/q+FNbKH26Pq6Daw1Ap
gDEy9AMabBoGx8db878OFk6eNEZliF38QqRplqr/hsjRq4nwkAAT3qj1zufTTN90
bHhXt1BP7z5bDv0z1fp6duFzPbfyUEjkhbFKhOgJ6p01IOLnnXEn6TGM55sKqW1W
dFX276anyb1gJm79E3gymnuwanC31QNSmlXpSNbiG8rbUfiJ40HfUf/lKrkBDQRU
SQ5MAQgAnztdietX1+rTHqyjK9yDYP+rp5NBL2b98SzTjQpFv68cjevjYy/R7VqI
rRx1qyrit470TYk9iOH2KBYscLLYylNCfpWfv2gIziZfX5Xxb+BxZPXkrq34ux5M
1BHgGvZg8XvtJLSbX5SnkibUHSotCD578MgfWzfTfH4aeVwrZVCKb5BRxZHx0ZA9
q9tNgYWoadhcKNWmT8yn28JW/ME91v1K/nSDJKd8qG9qOEy0XtGcYOZh6qZZcXI3
BRpyqSUN4G2TvzccYeEbw6hHH2VjKCetkt9412+2Qg+IR8nTehwPuY3hOZqYghN/
rT6nuPJSzb/UJ+G6vnb2r0I4To3WUQARAQABiQEfBBgBAgAJBQJUSQ5MAhsMAAoJ
EGN/itugQn2VlBcH/2dRT5yxfS9nTTimfk/wnyXnB+XgqbYOr7H1LFueMulCTSrQ
sIebVUyIKY2Txzm8UxswMBxRzoIMy8g6NxjwuUzm3/w2evdHdO1mwqNMsDNBskPD
CzJE4TLftOeVq7Jh268yLFiAxaAbULyBzr7yLVAHrGBDhjediCoy9KHijIHdM04v
nhgQkV6UpLez7Am5B0Pqd+0kFcoe3IW5cYvphhWVJ4O+w95jujrsvVB/+hg4VPgi
KMgIdXIAmJQuflAU97ilYDIXXmdQV2yUOsnaMW8JBsu2hsxvk3n+M9BNS6GBk40w
HGCOLDrMD1U4Zjwsu58qQGp4nQ9rR54y5El2iJU=
=c2SM
-----END PGP PUBLIC KEY BLOCK-----
6 changes: 4 additions & 2 deletions model_logging/tests/run.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,12 @@
DEFAULT_FILE_STORAGE='inmemorystorage.InMemoryStorage',
MIDDLEWARE_CLASSES=(),
PASSWORD_HASHERS=('django.contrib.auth.hashers.MD5PasswordHasher',),
ROOT_URLCONF='',
SITE_ID=1,

INSTALLED_APPS=(
'model_logging',
'pgcrypto',

'django',
'django.contrib.admin',
Expand All @@ -31,8 +33,8 @@

# Dummy pgcrypto configuration
PGCRYPTO_KEY='so_secure_you_guys',
PUBLIC_PGP_KEY='as_is_this',
PRIVATE_PGP_KEY='ssssshhhh',
PUBLIC_PGP_KEY=open('model_logging/tests/keys/public.key').read(),
PRIVATE_PGP_KEY=open('model_logging/tests/keys/private.key').read(),
)


Expand Down
56 changes: 56 additions & 0 deletions model_logging/tests/test_views.py
Original file line number Diff line number Diff line change
Expand Up @@ -84,3 +84,59 @@ def test_log_on_destroy(self):
self.assertEqual(entry.user, expected_entry['user'])
self.assertEqual(entry.creator, expected_entry['creator'])
self.assertEqual(entry.model_path, expected_entry['model_path'])


class TestLoggingViewSetMixin(BaseAPIRequestTestCase):
user_factory = UserFactory

@classmethod
def setUpTestData(cls):
cls.user = cls.user_factory.create()

def setUp(self):
self.request = self.create_request(user=self.user)
self.viewset_object = FakeViewSet(self.request, self.user)

def get_expected_entry_data(self):
return {
'data': FAKE_DATA,
'user': self.user,
'creator': self.user,
'model_path': 'model_logging.tests.test_views.FakeSerializer',
}

def test_log_on_create(self):
serializer = FakeSerializer()
self.viewset_object._log_on_create(serializer)

entry = models.LogEntry.objects.get()
expected_entry = self.get_expected_entry_data()
self.assertEqual(entry.operation, models.LogEntry.OPERATION_ADDED)
self.assertEqual(simplejson.loads(entry.data), expected_entry['data'])
self.assertEqual(entry.user, expected_entry['user'])
self.assertEqual(entry.creator, expected_entry['creator'])
self.assertEqual(entry.model_path, expected_entry['model_path'])

def test_log_on_update(self):
serializer = FakeSerializer()
self.viewset_object._log_on_update(serializer)

entry = models.LogEntry.objects.get()
expected_entry = self.get_expected_entry_data()
self.assertEqual(entry.operation, models.LogEntry.OPERATION_MODIFIED)
self.assertEqual(simplejson.loads(entry.data), expected_entry['data'])
self.assertEqual(entry.user, expected_entry['user'])
self.assertEqual(entry.creator, expected_entry['creator'])
self.assertEqual(entry.model_path, expected_entry['model_path'])

def test_log_on_destroy(self):
instance = FAKE_DATA
self.viewset_object._log_on_destroy(instance)

entry = models.LogEntry.objects.get()
expected_entry = self.get_expected_entry_data()
self.assertEqual(entry.operation, models.LogEntry.OPERATION_REMOVED)
self.assertEqual(simplejson.loads(entry.data), expected_entry['data'])
self.assertEqual(entry.user, expected_entry['user'])
self.assertEqual(entry.creator, expected_entry['creator'])
self.assertEqual(entry.model_path, expected_entry['model_path'])
2 changes: 1 addition & 1 deletion model_logging/tests/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ def iso_8601(datetime):
def get_log_entry_data(entry):
return {
'date_created': iso_8601(entry.date_created),
'creator': entry.creator.name,
'creator': entry.creator.email,
'operation': entry.operation,
'operation_label': entry.get_operation_display(),
'data': json.loads(entry.data),
Expand Down

0 comments on commit 4f0e0a4

Please sign in to comment.