Exemple #1
0
    def testRenderHTTPAllowDefault(self):
        streamer = FakeStreamer(mediumClass=FakeAuthFailingMedium)
        httpauth = HTTPAuthentication(streamer)
        resource = resources.HTTPStreamingResource(streamer, httpauth)
        httpauth.setBouncerName('fakebouncer')

        streamer.caps = True
        self.failUnless(resource.isReady())

        d = defer.Deferred()

        def wrongToken(_):
            request = FakeRequest(user='******')
            return self.deferAssertUnauthorized(httpauth, request)

        def errorDisallowDefault(_, error):
            streamer.medium.failure = error
            request = FakeRequest(user='******')
            return self.deferAssertInternalServerError(httpauth, request)

        def errorAllowDefault(_, error):
            streamer.medium.failure = error
            httpauth.setAllowDefault(True)
            request = FakeRequest(user='******')
            return self.deferAssertAuthorized(httpauth, request)

        d.addCallback(wrongToken)
        d.addCallback(errorDisallowDefault, errors.NotConnectedError())
        d.addCallback(errorDisallowDefault, errors.UnknownComponentError())
        d.addCallback(errorAllowDefault, errors.NotConnectedError())
        d.addCallback(errorAllowDefault, errors.UnknownComponentError())

        d.callback(None)
        return d
Exemple #2
0
    def testRenderHTTPTokenUnauthorized(self):
        streamer = FakeStreamer(mediumClass=FakeTokenMedium)
        httpauth = HTTPAuthentication(streamer)
        resource = MultiFdSinkStreamingResource(streamer, httpauth)
        # override issuer
        httpauth.setBouncerName('fakebouncer')
        httpauth.setDomain('FakeDomain')

        streamer.caps = True
        self.failUnless(resource.isReady())

        d = defer.Deferred()

        def wrongToken(_):
            request = FakeRequest(ip='127.0.0.1', args={'token': 'WRONG'})
            return self.deferAssertUnauthorized(httpauth, request)

        def noToken(_):
            request = FakeRequest(ip='127.0.0.1', args={'notoken': 'LETMEIN'})
            return self.deferAssertUnauthorized(httpauth, request)

        def doubleWrongToken(_):
            request = FakeRequest(ip='127.0.0.1',
                args={'token': ['WRONG', 'AGAIN']})
            return self.deferAssertUnauthorized(httpauth, request)

        d.addCallback(wrongToken)
        d.addCallback(noToken)
        d.addCallback(doubleWrongToken)

        d.callback(None)
        return d
Exemple #3
0
    def testRenderTopStreamer(self):
        # a streamer that is at /a
        root = resources.HTTPRoot()
        site = server.Site(resource=root)

        streamer = FakeStreamer()
        httpauth = HTTPAuthentication(streamer)
        resource = resources.HTTPStreamingResource(streamer, httpauth)
        root.putChild('a', resource)

        # a request for / should give 404
        log.debug('unittest', 'requesting /, should 404')
        request = FakeRequest(ip='')
        r = site.getResourceFor(request)
        output = r.render(request)
        self.assertEquals(request.response, http.NOT_FOUND)

        # a request for /a should work
        log.debug('unittest', 'requesting /a, should work')
        request = FakeRequest(ip='', postpath=['a'])
        r = site.getResourceFor(request)
        self.assertEquals(r, resource)
        output = r.render(request)
        self.assertEquals(output, server.NOT_DONE_YET)

        # a request for /a/b should give 404
        log.debug('unittest', 'requesting /a/b, should 404')
        request = FakeRequest(ip='', postpath=['a', 'b'])
        r = site.getResourceFor(request)
        output = r.render(request)
        self.assertEquals(request.response, http.NOT_FOUND)
Exemple #4
0
    def testRenderReachedMaxClients(self):
        streamer = FakeStreamer()
        httpauth = HTTPAuthentication(streamer)
        resource = resources.HTTPStreamingResource(streamer, httpauth)
        self.failIf(resource.isReady())
        streamer.caps = True
        self.failUnless(resource.isReady())

        #assert resource.maxAllowedClients() == 974
        resource._requests = ' ' * (resource.maxclients + 1)

        self.failUnless(resource.reachedServerLimits())

        request = FakeRequest(ip='127.0.0.1')
        data = resource.render(request)
        error_code = http.SERVICE_UNAVAILABLE
        self.assertEquals(request.headers.get('content-type', ''), 'text/html')
        self.assertEquals(request.headers.get('server', ''),
            resources.HTTP_VERSION)
        self.assertEquals(request.response, error_code)

        expected = resources.ERROR_TEMPLATE % {
            'code': error_code,
            'error': http.RESPONSES[error_code]}
        self.assertEquals(data, expected)
Exemple #5
0
 def testRenderNotReady(self):
     streamer = FakeStreamer()
     httpauth = HTTPAuthentication(streamer)
     resource = resources.HTTPStreamingResource(streamer, httpauth)
     self.failIf(resource.isReady())
     status = resource.render(FakeRequest(ip=''))
     self.assertEquals(status, server.NOT_DONE_YET)
Exemple #6
0
    def testRenderNew(self):
        streamer = FakeStreamer()
        httpauth = HTTPAuthentication(streamer)
        resource = resources.HTTPStreamingResource(streamer, httpauth)
        streamer.caps = True
        streamer.mime = 'application/x-ogg'

        request = FakeRequest(ip='127.0.0.1')
        data = resource.render(request)
        self.failUnless(server.NOT_DONE_YET)
Exemple #7
0
    def testRenderHTTPTokenAuthorized(self):
        streamer = FakeStreamer(mediumClass=FakeTokenMedium)
        httpauth = HTTPAuthentication(streamer)
        resource = resources.HTTPStreamingResource(streamer, httpauth)
        # override issuer
        httpauth.setBouncerName('fakebouncer')
        httpauth.setDomain('FakeDomain')

        streamer.caps = True
        self.failUnless(resource.isReady())

        d = defer.Deferred()

        def rightToken(_):
            request = FakeRequest(ip='127.0.0.1', args={'token': 'LETMEIN'})
            return self.deferAssertAuthorized(httpauth, request)

        def rightTokenTwice(_):
            request = FakeRequest(ip='127.0.0.1',
                args={'token': ['LETMEIN', 'LETMEIN']})
            return self.deferAssertAuthorized(httpauth, request)

        d.addCallback(rightToken)
        d.addCallback(rightTokenTwice)

        d.callback(None)
        return d
Exemple #8
0
    def testRenderHTTPTokenUnauthorized(self):
        streamer = FakeStreamer(mediumClass=FakeTokenMedium)
        httpauth = HTTPAuthentication(streamer)
        resource = MultiFdSinkStreamingResource(streamer, httpauth)
        # override issuer
        httpauth.setBouncerName('fakebouncer')
        httpauth.setDomain('FakeDomain')

        streamer.caps = True
        self.failUnless(resource.isReady())

        d = defer.Deferred()

        def wrongToken(_):
            request = FakeRequest(ip='127.0.0.1', args={'token': 'WRONG'})
            return self.deferAssertUnauthorized(httpauth, request)

        def noToken(_):
            request = FakeRequest(ip='127.0.0.1', args={'notoken': 'LETMEIN'})
            return self.deferAssertUnauthorized(httpauth, request)

        def doubleWrongToken(_):
            request = FakeRequest(ip='127.0.0.1',
                                  args={'token': ['WRONG', 'AGAIN']})
            return self.deferAssertUnauthorized(httpauth, request)

        d.addCallback(wrongToken)
        d.addCallback(noToken)
        d.addCallback(doubleWrongToken)

        d.callback(None)
        return d
Exemple #9
0
    def __init__(self):
        self.clients = 0
        self.currentBitRate = 1000
        self.ready = True
        self.mountPoint = "localhost"
        self.ring = hlsring.HLSRing("main.m3u8", "stream.m3u8", "")
        self.ring.setHostname("localhost")
        self.ring.addFragment(FRAGMENT, 0, 10)

        self.medium = FakeAuthMedium()
        self.plugs = {
            'flumotion.component.plugs.request.RequestLoggerPlug': {}
        }
        self.httpauth = HTTPAuthentication(self)
Exemple #10
0
    def testRenderHTTPAuthUnauthorized(self):
        streamer = FakeStreamer()
        httpauth = HTTPAuthentication(streamer)
        resource = resources.HTTPStreamingResource(streamer, httpauth)
        httpauth.setBouncerName('fakebouncer')
        httpauth.setDomain('FakeDomain')

        streamer.caps = True
        self.failUnless(resource.isReady())

        request = FakeRequest(ip='127.0.0.1', user='******')
        return self.deferAssertUnauthorized(httpauth, request)