Skip to content

Commit

Permalink
use Resource instead of Page for web-status
Browse files Browse the repository at this point in the history
  • Loading branch information
meejah committed Apr 26, 2016
1 parent 01b09f3 commit 6910309
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 12 deletions.
14 changes: 7 additions & 7 deletions src/allmydata/test/test_web.py
Original file line number Diff line number Diff line change
Expand Up @@ -5939,15 +5939,15 @@ def test_not_post(self):

self.assertRaises(
server.UnsupportedMethod,
self.page.renderHTTP, req,
self.page.render, req,
)

def test_missing_token(self):
req = FakeRequest()

exc = self.assertRaises(
common.WebError,
self.page.renderHTTP, req,
self.page.render, req,
)
self.assertEquals(exc.text, "Missing token")
self.assertEquals(exc.code, 401)
Expand All @@ -5958,7 +5958,7 @@ def test_token_in_get_args(self):

exc = self.assertRaises(
common.WebError,
self.page.renderHTTP, req,
self.page.render, req,
)
self.assertEquals(exc.text, "Do not pass 'token' as URL argument")
self.assertEquals(exc.code, 400)
Expand All @@ -5970,7 +5970,7 @@ def test_invalid_token(self):

exc = self.assertRaises(
common.WebError,
self.page.renderHTTP, req,
self.page.render, req,
)
self.assertEquals(exc.text, "Invalid token")
self.assertEquals(exc.code, 401)
Expand All @@ -5980,7 +5980,7 @@ def test_valid_token_no_t_arg(self):
req.fields['token'] = FakeField(self.client.token)

with self.assertRaises(common.WebError) as exc:
self.page.renderHTTP(req)
self.page.render(req)
self.assertEquals(exc.exception.text, "Must provide 't=' argument")
self.assertEquals(exc.exception.code, 400)

Expand All @@ -5990,7 +5990,7 @@ def test_valid_token_invalid_t_arg(self):
req.args['t'] = 'not at all json'

with self.assertRaises(common.WebError) as exc:
self.page.renderHTTP(req)
self.page.render(req)
self.assertTrue("invalid type" in exc.exception.text)
self.assertEquals(exc.exception.code, 400)

Expand All @@ -5999,5 +5999,5 @@ def test_valid(self):
req.fields['token'] = FakeField(self.client.token)
req.args['t'] = ['json']

result = self.page.renderHTTP(req)
result = self.page.render(req)
self.assertTrue(result == NotImplemented)
8 changes: 3 additions & 5 deletions src/allmydata/web/common.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
import time
import simplejson

from twisted.web import http, server
from twisted.web import http, server, resource
from twisted.python import log
from zope.interface import Interface
from nevow import loaders, appserver, rend
Expand Down Expand Up @@ -386,7 +386,7 @@ def renderHTTP(self, ctx):
return m(ctx)


class TokenOnlyWebApi(rend.Page):
class TokenOnlyWebApi(resource.Resource):
"""
I provide a rend.Page implementation that only accepts POST calls,
and only if they have a 'token=' arg with the correct
Expand All @@ -402,14 +402,12 @@ class TokenOnlyWebApi(rend.Page):
"""

def __init__(self, client):
super(TokenOnlyWebApi, self).__init__()
self.client = client

def post_json(self, req):
return NotImplemented

def renderHTTP(self, ctx):
req = IRequest(ctx)
def render(self, req):
if req.method != 'POST':
raise server.UnsupportedMethod(('POST',))
if req.args.get('token', False):
Expand Down

0 comments on commit 6910309

Please sign in to comment.