mirror of
https://github.com/peeringdb/peeringdb.git
synced 2024-05-11 05:55:09 +00:00
set anonymous user context for whois output
This commit is contained in:
@@ -4,6 +4,8 @@ import logging
|
||||
|
||||
from ._db_command import CommandError, DBCommand
|
||||
|
||||
from django.contrib.auth.models import AnonymousUser
|
||||
|
||||
from peeringdb.whois import WhoisFormat
|
||||
from peeringdb_server import models
|
||||
from peeringdb_server import serializers
|
||||
@@ -58,6 +60,6 @@ class Command(DBCommand):
|
||||
log.error("Unknown ref tag: %s" % ref_tag)
|
||||
raise ValueError(msg)
|
||||
|
||||
data = Serializer(obj).data
|
||||
data = Serializer(obj, context={"user":AnonymousUser()}).data
|
||||
fmt = WhoisFormat()
|
||||
fmt. print(obj._handleref.tag, data)
|
||||
|
46
tests/test_whois.py
Normal file
46
tests/test_whois.py
Normal file
@@ -0,0 +1,46 @@
|
||||
from peeringdb_server.models import REFTAG_MAP
|
||||
from django.core.management import call_command
|
||||
from util import ClientCase
|
||||
|
||||
import StringIO
|
||||
import sys
|
||||
|
||||
|
||||
class TestWhois(ClientCase):
|
||||
@classmethod
|
||||
def setUpTestData(cls):
|
||||
super(TestWhois, cls).setUpTestData()
|
||||
cls.org = REFTAG_MAP["org"].objects.create(name="Test org",
|
||||
status="ok")
|
||||
cls.net = REFTAG_MAP["net"].objects.create(
|
||||
name="Test net", status="ok", asn=63311, org=cls.org)
|
||||
cls.pocs = []
|
||||
for visibility in ["Private", "Users", "Public"]:
|
||||
cls.pocs.append(REFTAG_MAP["poc"].objects.create(
|
||||
network=cls.net, status="ok", role="Abuse",
|
||||
name="POC-{}".format(visibility),
|
||||
email="{}@localhost".format(visibility), visible=visibility))
|
||||
|
||||
def test_whois_perms(self):
|
||||
"""
|
||||
test that anonymous user permissions are applied
|
||||
to whois output - any pocs other than public ones should
|
||||
be excluded
|
||||
"""
|
||||
|
||||
# whois does not go to the command's stdout so we need to
|
||||
# capture the output through sys.stdout
|
||||
out = StringIO.StringIO()
|
||||
oldout = sys.stdout
|
||||
sys.stdout = out
|
||||
|
||||
call_command("pdb_whois", "as63311")
|
||||
|
||||
# restore sys.stdout
|
||||
sys.stdout = oldout
|
||||
|
||||
out = out.getvalue()
|
||||
|
||||
assert out.find("POC-Private") == -1
|
||||
assert out.find("POC-Users") == -1
|
||||
assert out.find("POC-Public") > -1
|
Reference in New Issue
Block a user