def testAccessWebRoot(server, db): """ Requests the webroot and tests the existence of several elements in the returned html """ # Check webroot default settings defaultEmailAddress = Setting().getDefault(SettingKey.CONTACT_EMAIL_ADDRESS) defaultBrandName = Setting().getDefault(SettingKey.BRAND_NAME) resp = server.request(path='/', method='GET', isJson=False, prefix='') assertStatusOk(resp) body = getResponseBody(resp) assert WebrootBase._escapeJavascript(defaultEmailAddress) in body assert '<title>%s</title>' % defaultBrandName in body assert 'girder_app.min.js' in body assert 'girder_lib.min.js' in body # Change webroot settings Setting().set(SettingKey.CONTACT_EMAIL_ADDRESS, '*****@*****.**') Setting().set(SettingKey.BRAND_NAME, 'FooBar') resp = server.request(path='/', method='GET', isJson=False, prefix='') assertStatusOk(resp) body = getResponseBody(resp) assert WebrootBase._escapeJavascript('*****@*****.**') in body assert '<title>FooBar</title>' in body # Remove webroot settings Setting().unset(SettingKey.CONTACT_EMAIL_ADDRESS) Setting().unset(SettingKey.BRAND_NAME) resp = server.request(path='/', method='GET', isJson=False, prefix='') assertStatusOk(resp) body = getResponseBody(resp) assert WebrootBase._escapeJavascript(defaultEmailAddress) in body assert '<title>%s</title>' % defaultBrandName in body
def testRouteTableBehavior(server, admin): Setting().set(SettingKey.ROUTE_TABLE, { GIRDER_ROUTE_ID: '/', GIRDER_STATIC_ROUTE_ID: '/static', 'has_webroot': '/has_webroot' }) # /has_webroot should serve our plugin webroot resp = server.request('/has_webroot', prefix='', isJson=False, appPrefix='/has_webroot') assertStatusOk(resp) assert 'some webroot' in getResponseBody(resp) # girder should be at / resp = server.request('/', prefix='', isJson=False) assertStatusOk(resp) assert 'g-global-info-apiroot' in getResponseBody(resp) table = Setting().get(SettingKey.ROUTE_TABLE) assert 'has_webroot' in table assert table['has_webroot'] == '/has_webroot' # Disabling the plugin should remove it from the route table assertStatusOk(server.request('/system/plugins', method='PUT', user=admin, params={ 'plugins': json.dumps([]) })) table = Setting().get(SettingKey.ROUTE_TABLE) assert 'has_webroot' not in table
def testRouteTableBehavior(server, admin): Setting().set( SettingKey.ROUTE_TABLE, { GIRDER_ROUTE_ID: '/', GIRDER_STATIC_ROUTE_ID: '/static', 'has_webroot': '/has_webroot' }) # /has_webroot should serve our plugin webroot resp = server.request('/has_webroot', prefix='', isJson=False, appPrefix='/has_webroot') assertStatusOk(resp) assert 'some webroot' in getResponseBody(resp) # girder should be at / resp = server.request('/', prefix='', isJson=False) assertStatusOk(resp) assert 'g-global-info-apiroot' in getResponseBody(resp) table = Setting().get(SettingKey.ROUTE_TABLE) assert 'has_webroot' in table assert table['has_webroot'] == '/has_webroot' # Disabling the plugin should remove it from the route table assertStatusOk( server.request('/system/plugins', method='PUT', user=admin, params={'plugins': json.dumps([])})) table = Setting().get(SettingKey.ROUTE_TABLE) assert 'has_webroot' not in table
def testWebRootProperlyHandlesCustomStaticPublicPath(server): cherrypy.config['server']['static_public_path'] = 'http://my-cdn-url.com/static' resp = server.request(path='/', method='GET', isJson=False, prefix='') assertStatusOk(resp) body = getResponseBody(resp) assert 'href="http://my-cdn-url.com/static/built/Girder_Favicon.png"' in body # Same assertion should hold true for Swagger resp = server.request(path='/', method='GET', isJson=False) assertStatusOk(resp) body = getResponseBody(resp) assert 'href="http://my-cdn-url.com/static/built/Girder_Favicon.png"' in body cherrypy.config['server']['static_public_path'] = '/static'
def testServerInfoInErrorPage(server): # For security, we want to ensure cherrypy does not appear in server info resp = server.request('/girder/api/v1', prefix='', isJson=False) assertStatus(resp, 404) body = getResponseBody(resp).lower() server = resp.headers['Server'].lower() assert 'cherrypy' not in body + server assert 'girder' in body assert 'girder' in server
def testWebRootProperlyHandlesCustomStaticPublicPath(server): cherrypy.config['server'][ 'static_public_path'] = 'http://my-cdn-url.com/static' resp = server.request(path='/', method='GET', isJson=False, prefix='') assertStatusOk(resp) body = getResponseBody(resp) assert 'href="http://my-cdn-url.com/static/built/Girder_Favicon.png"' in body # Same assertion should hold true for Swagger resp = server.request(path='/', method='GET', isJson=False) assertStatusOk(resp) body = getResponseBody(resp) assert 'href="http://my-cdn-url.com/static/built/Girder_Favicon.png"' in body cherrypy.config['server']['static_public_path'] = '/static'
def testServerInfoInErrorPage(server): # For security, we want to ensure cherrypy does not appear in server info resp = server.request('/girder/api/v1', prefix='', isJson=False) assertStatus(resp, 404) body = getResponseBody(resp).lower() server = resp.headers['Server'].lower() assert 'cherrypy' not in body + server assert 'girder' in body assert 'girder' in server
def testWebRootProperlyHandlesStaticRouteUrls(server, db): Setting().set(SettingKey.ROUTE_TABLE, { GIRDER_ROUTE_ID: '/', GIRDER_STATIC_ROUTE_ID: 'http://my-cdn-url.com/static' }) resp = server.request(path='/', method='GET', isJson=False, prefix='') assertStatusOk(resp) body = getResponseBody(resp) assert 'href="http://my-cdn-url.com/static/img/Girder_Favicon.png"' in body # Same assertion should hold true for Swagger resp = server.request(path='/', method='GET', isJson=False) assertStatusOk(resp) body = getResponseBody(resp) assert 'href="http://my-cdn-url.com/static/img/Girder_Favicon.png"' in body
def testRouteTableBehavior(server, admin): Setting().set(SettingKey.ROUTE_TABLE, { GIRDER_ROUTE_ID: '/', 'has_webroot': '/has_webroot' }) # /has_webroot should serve our plugin webroot resp = server.request('/has_webroot', prefix='', isJson=False, appPrefix='/has_webroot') assertStatusOk(resp) assert 'some webroot' in getResponseBody(resp) # girder should be at / resp = server.request('/', prefix='', isJson=False) assertStatusOk(resp) assert 'g-global-info-apiroot' in getResponseBody(resp) table = Setting().get(SettingKey.ROUTE_TABLE) assert 'has_webroot' in table assert table['has_webroot'] == '/has_webroot'
def testApiDocsContent(server): """ Test content of API documentation page. """ resp = server.request(path='/api/v1', method='GET', isJson=False, prefix='') assertStatusOk(resp) body = getResponseBody(resp) assert 'Girder REST API Documentation' in body assert 'This is not a sandbox' in body assert 'id="swagger-ui-container"' in body
def testRouteTableBehavior(server, admin): Setting().set(SettingKey.ROUTE_TABLE, { GIRDER_ROUTE_ID: '/', 'has_webroot': '/has_webroot' }) # /has_webroot should serve our plugin webroot resp = server.request('/has_webroot', prefix='', isJson=False, appPrefix='/has_webroot') assertStatusOk(resp) assert 'some webroot' in getResponseBody(resp) # girder should be at / resp = server.request('/', prefix='', isJson=False) assertStatusOk(resp) assert 'g-global-info-apiroot' in getResponseBody(resp) table = Setting().get(SettingKey.ROUTE_TABLE) assert 'has_webroot' in table assert table['has_webroot'] == '/has_webroot'
def testApiDocsCustomContent(server): """ Test content of API documentation page that's customized by a plugin. """ resp = server.request(path='/api/v1', method='GET', isJson=False, prefix='') assertStatusOk(resp) body = getResponseBody(resp) assert 'Girder REST API Documentation' not in body assert 'This is not a sandbox' not in body assert 'Girder Web Application Programming Interface' in body assert '<p>Custom API description</p>' in body assert 'id="swagger-ui-container"' in body
def testApiDocsContent(server): """ Test content of API documentation page. """ resp = server.request(path='/api/v1', method='GET', isJson=False, prefix='') assertStatusOk(resp) body = getResponseBody(resp) assert 'Girder REST API Documentation' in body assert 'This is not a sandbox' in body assert 'id="swagger-ui-container"' in body
def testDockerAdd(images, server): # try to cache a good image to the mongo database img_name = 'girder/slicer_cli_web:small' images.assertNoImages() images.addImage(img_name, JobStatus.SUCCESS) images.imageIsLoaded(img_name, True) # If checked without a user, we should get an empty list resp = server.request(path='/slicer_cli_web/docker_image') assertStatus(resp, 200) assert json.loads(getResponseBody(resp)) == {} images.endpointsExist(img_name, ['Example1', 'Example2', 'Example3'], ['NotAnExample']) images.deleteImage(img_name, True) images.assertNoImages()
def testApiDocsCustomContent(server): """ Test content of API documentation page that's customized by a plugin. """ resp = server.request(path='/api/v1', method='GET', isJson=False, prefix='') assertStatusOk(resp) body = getResponseBody(resp) assert 'Girder REST API Documentation' not in body assert 'This is not a sandbox' not in body assert 'Girder Web Application Programming Interface' in body assert '<p>Custom API description</p>' in body assert 'id="swagger-ui-container"' in body
def testXmlEndpoint(images, server, admin): # loads an image and attempts to run an arbitrary xml endpoint img_name = 'girder/slicer_cli_web:small' images.addImage(img_name, JobStatus.SUCCESS) images.imageIsLoaded(img_name, True) name, tag = splitName(img_name) data = images.getEndpoint() for tag in six.itervalues(data): for cli in six.itervalues(tag): for info in six.itervalues(cli): route = info['xmlspec'] resp = server.request(path=route, user=admin, isJson=False) assertStatus(resp, 200) xmlString = getResponseBody(resp) # TODO validate with xml schema assert xmlString != '' images.deleteImage( img_name, True, )
def getEndpoint(self): resp = self.server.request(path='/slicer_cli_web/docker_image', user=self.admin) assertStatus(resp, 200) return json.loads(getResponseBody(resp))
def testPluginRoutesForHumans(server, route, text): resp = server.request(route, prefix='', isJson=False) assertStatusOk(resp) assert text in getResponseBody(resp)
def testPluginRoutesForHumans(server, route, text): resp = server.request(route, prefix='', isJson=False) assertStatusOk(resp) assert text in getResponseBody(resp)