Best Python code snippet using slash
test_downloadermiddleware_redirect.py
Source:test_downloadermiddleware_redirect.py  
1import unittest2from scrapy.downloadermiddlewares.redirect import RedirectMiddleware, MetaRefreshMiddleware3from scrapy.spiders import Spider4from scrapy.exceptions import IgnoreRequest5from scrapy.http import Request, Response, HtmlResponse6from scrapy.utils.test import get_crawler7class RedirectMiddlewareTest(unittest.TestCase):8    def setUp(self):9        crawler = get_crawler(Spider)10        self.spider = crawler._create_spider('foo')11        self.mw = RedirectMiddleware.from_crawler(crawler)12    def test_priority_adjust(self):13        req = Request('http://a.com')14        rsp = Response('http://a.com', headers={'Location': 'http://a.com/redirected'}, status=301)15        req2 = self.mw.process_response(req, rsp, self.spider)16        assert req2.priority > req.priority17    def test_redirect_301(self):18        def _test(method):19            url = 'http://www.example.com/301'20            url2 = 'http://www.example.com/redirected'21            req = Request(url, method=method)22            rsp = Response(url, headers={'Location': url2}, status=301)23            req2 = self.mw.process_response(req, rsp, self.spider)24            assert isinstance(req2, Request)25            self.assertEqual(req2.url, url2)26            self.assertEqual(req2.method, method)27            # response without Location header but with status code is 3XX should be ignored28            del rsp.headers['Location']29            assert self.mw.process_response(req, rsp, self.spider) is rsp30        _test('GET')31        _test('POST')32        _test('HEAD')33    def test_dont_redirect(self):34        url = 'http://www.example.com/301'35        url2 = 'http://www.example.com/redirected'36        req = Request(url, meta={'dont_redirect': True})37        rsp = Response(url, headers={'Location': url2}, status=301)38        r = self.mw.process_response(req, rsp, self.spider)39        assert isinstance(r, Response)40        assert r is rsp41        # Test that it redirects when dont_redirect is False42        req = Request(url, meta={'dont_redirect': False})43        rsp = Response(url2, status=200)44        r = self.mw.process_response(req, rsp, self.spider)45        assert isinstance(r, Response)46        assert r is rsp47    def test_redirect_302(self):48        url = 'http://www.example.com/302'49        url2 = 'http://www.example.com/redirected2'50        req = Request(url, method='POST', body='test',51            headers={'Content-Type': 'text/plain', 'Content-length': '4'})52        rsp = Response(url, headers={'Location': url2}, status=302)53        req2 = self.mw.process_response(req, rsp, self.spider)54        assert isinstance(req2, Request)55        self.assertEqual(req2.url, url2)56        self.assertEqual(req2.method, 'GET')57        assert 'Content-Type' not in req2.headers, \58            "Content-Type header must not be present in redirected request"59        assert 'Content-Length' not in req2.headers, \60            "Content-Length header must not be present in redirected request"61        assert not req2.body, \62            "Redirected body must be empty, not '%s'" % req2.body63        # response without Location header but with status code is 3XX should be ignored64        del rsp.headers['Location']65        assert self.mw.process_response(req, rsp, self.spider) is rsp66    def test_redirect_302_head(self):67        url = 'http://www.example.com/302'68        url2 = 'http://www.example.com/redirected2'69        req = Request(url, method='HEAD')70        rsp = Response(url, headers={'Location': url2}, status=302)71        req2 = self.mw.process_response(req, rsp, self.spider)72        assert isinstance(req2, Request)73        self.assertEqual(req2.url, url2)74        self.assertEqual(req2.method, 'HEAD')75        # response without Location header but with status code is 3XX should be ignored76        del rsp.headers['Location']77        assert self.mw.process_response(req, rsp, self.spider) is rsp78    def test_max_redirect_times(self):79        self.mw.max_redirect_times = 180        req = Request('http://scrapytest.org/302')81        rsp = Response('http://scrapytest.org/302', headers={'Location': '/redirected'}, status=302)82        req = self.mw.process_response(req, rsp, self.spider)83        assert isinstance(req, Request)84        assert 'redirect_times' in req.meta85        self.assertEqual(req.meta['redirect_times'], 1)86        self.assertRaises(IgnoreRequest, self.mw.process_response, req, rsp, self.spider)87    def test_ttl(self):88        self.mw.max_redirect_times = 10089        req = Request('http://scrapytest.org/302', meta={'redirect_ttl': 1})90        rsp = Response('http://www.scrapytest.org/302', headers={'Location': '/redirected'}, status=302)91        req = self.mw.process_response(req, rsp, self.spider)92        assert isinstance(req, Request)93        self.assertRaises(IgnoreRequest, self.mw.process_response, req, rsp, self.spider)94    def test_redirect_urls(self):95        req1 = Request('http://scrapytest.org/first')96        rsp1 = Response('http://scrapytest.org/first', headers={'Location': '/redirected'}, status=302)97        req2 = self.mw.process_response(req1, rsp1, self.spider)98        rsp2 = Response('http://scrapytest.org/redirected', headers={'Location': '/redirected2'}, status=302)99        req3 = self.mw.process_response(req2, rsp2, self.spider)100        self.assertEqual(req2.url, 'http://scrapytest.org/redirected')101        self.assertEqual(req2.meta['redirect_urls'], ['http://scrapytest.org/first'])102        self.assertEqual(req3.url, 'http://scrapytest.org/redirected2')103        self.assertEqual(req3.meta['redirect_urls'], ['http://scrapytest.org/first', 'http://scrapytest.org/redirected'])104class MetaRefreshMiddlewareTest(unittest.TestCase):105    def setUp(self):106        crawler = get_crawler(Spider)107        self.spider = crawler._create_spider('foo')108        self.mw = MetaRefreshMiddleware.from_crawler(crawler)109    def _body(self, interval=5, url='http://example.org/newpage'):110        return """<html><head><meta http-equiv="refresh" content="{0};url={1}"/></head></html>"""\111                .format(interval, url)112    def test_priority_adjust(self):113        req = Request('http://a.com')114        rsp = HtmlResponse(req.url, body=self._body())115        req2 = self.mw.process_response(req, rsp, self.spider)116        assert req2.priority > req.priority117    def test_meta_refresh(self):118        req = Request(url='http://example.org')119        rsp = HtmlResponse(req.url, body=self._body())120        req2 = self.mw.process_response(req, rsp, self.spider)121        assert isinstance(req2, Request)122        self.assertEqual(req2.url, 'http://example.org/newpage')123    def test_meta_refresh_with_high_interval(self):124        # meta-refresh with high intervals don't trigger redirects125        req = Request(url='http://example.org')126        rsp = HtmlResponse(url='http://example.org', body=self._body(interval=1000))127        rsp2 = self.mw.process_response(req, rsp, self.spider)128        assert rsp is rsp2129    def test_meta_refresh_trough_posted_request(self):130        req = Request(url='http://example.org', method='POST', body='test',131                      headers={'Content-Type': 'text/plain', 'Content-length': '4'})132        rsp = HtmlResponse(req.url, body=self._body())133        req2 = self.mw.process_response(req, rsp, self.spider)134        assert isinstance(req2, Request)135        self.assertEqual(req2.url, 'http://example.org/newpage')136        self.assertEqual(req2.method, 'GET')137        assert 'Content-Type' not in req2.headers, \138            "Content-Type header must not be present in redirected request"139        assert 'Content-Length' not in req2.headers, \140            "Content-Length header must not be present in redirected request"141        assert not req2.body, \142            "Redirected body must be empty, not '%s'" % req2.body143    def test_max_redirect_times(self):144        self.mw.max_redirect_times = 1145        req = Request('http://scrapytest.org/max')146        rsp = HtmlResponse(req.url, body=self._body())147        req = self.mw.process_response(req, rsp, self.spider)148        assert isinstance(req, Request)149        assert 'redirect_times' in req.meta150        self.assertEqual(req.meta['redirect_times'], 1)151        self.assertRaises(IgnoreRequest, self.mw.process_response, req, rsp, self.spider)152    def test_ttl(self):153        self.mw.max_redirect_times = 100154        req = Request('http://scrapytest.org/302', meta={'redirect_ttl': 1})155        rsp = HtmlResponse(req.url, body=self._body())156        req = self.mw.process_response(req, rsp, self.spider)157        assert isinstance(req, Request)158        self.assertRaises(IgnoreRequest, self.mw.process_response, req, rsp, self.spider)159    def test_redirect_urls(self):160        req1 = Request('http://scrapytest.org/first')161        rsp1 = HtmlResponse(req1.url, body=self._body(url='/redirected'))162        req2 = self.mw.process_response(req1, rsp1, self.spider)163        assert isinstance(req2, Request), req2164        rsp2 = HtmlResponse(req2.url, body=self._body(url='/redirected2'))165        req3 = self.mw.process_response(req2, rsp2, self.spider)166        assert isinstance(req3, Request), req3167        self.assertEqual(req2.url, 'http://scrapytest.org/redirected')168        self.assertEqual(req2.meta['redirect_urls'], ['http://scrapytest.org/first'])169        self.assertEqual(req3.url, 'http://scrapytest.org/redirected2')170        self.assertEqual(req3.meta['redirect_urls'], ['http://scrapytest.org/first', 'http://scrapytest.org/redirected'])171if __name__ == "__main__":...script.js
Source:script.js  
1//FUNÃÃO MODAL VISUALIZAR E EDITAR ENDEREÃO2var req2;3function loadXMLDoc01(url,valor)4{5    req2 = null;6    // Procura por um objeto nativo (Mozilla/Safari)7    if (window.XMLHttpRequest) {8        req2 = new XMLHttpRequest();9        req2.onreadystatechange = processReqChange01;10        req2.open("GET", url+'?localidade='+valor, true);11        req2.send(null);12    // Procura por uma versao ActiveX (IE)13    } else if (window.ActiveXObject) {14        req2 = new ActiveXObject("Microsoft.XMLHTTP");15        if (req2) {16            req2.onreadystatechange = processReqChange01;17            req2.open("GET", url+'?localidade='+valor, true);18            req2.send();19        }20    }21}22function loadXMLDoc02(url,valor,valor2)23{24    req2 = null;25    // Procura por um objeto nativo (Mozilla/Safari)26    if (window.XMLHttpRequest) {27        req2 = new XMLHttpRequest();28        req2.onreadystatechange = processReqChange02;29        req2.open("GET", url+'?localidade='+valor2+'&bairro='+valor, true);30        req2.send(null);31    // Procura por uma versao ActiveX (IE)32    } else if (window.ActiveXObject) {33        req2 = new ActiveXObject("Microsoft.XMLHTTP");34        if (req2) {35            req2.onreadystatechange = processReqChange02;36            req2.open("GET", url+'?localidade='+valor2+'&bairro='+valor, true);37            req2.send();38        }39    }40}41function processReqChange01()42{43    // apenas quando o estado for "completado"44    if (req2.readyState == 4) {45        // apenas se o servidor retornar "OK"46        if (req2.status == 200) {47            // procura pela div id="atualiza" e insere o conteudo48            // retornado nela, como texto HTML49            document.getElementById('atualiza0').innerHTML = req2.responseText;50        } else {51            alert("Houve um problema ao obter os dados:\n" + req2.statusText);52        }53    }54}55function processReqChange02()56{57    // apenas quando o estado for "completado"58    if (req2.readyState == 4) {59        // apenas se o servidor retornar "OK"60        if (req2.status == 200) {61            // procura pela div id="atualiza" e insere o conteudo62            // retornado nela, como texto HTML63            document.getElementById('atualiza02').innerHTML = req2.responseText;64        } else {65            alert("Houve um problema ao obter os dados:\n" + req2.statusText);66        }67    }68}69function Atualizar01(valor)70{71    loadXMLDoc01("atualiza0.php",valor);72}73function Atualizar02(valor,valor2)74{75    loadXMLDoc02("atualiza02.php",valor,valor2);76}77var req;78function loadXMLDoc(url,valor)79{80    req = null;81    // Procura por um objeto nativo (Mozilla/Safari)82    if (window.XMLHttpRequest) {83        req = new XMLHttpRequest();84        req.onreadystatechange = processReqChange;85        req.open("GET", url+'?localidade='+valor, true);86        req.send(null);87    // Procura por uma versao ActiveX (IE)88    } else if (window.ActiveXObject) {89        req = new ActiveXObject("Microsoft.XMLHTTP");90        if (req) {91            req.onreadystatechange = processReqChange;92            req.open("GET", url+'?localidade='+valor, true);93            req.send();94        }95    }96}97function loadXMLDoc2(url,valor,valor2)98{99    req = null;100    // Procura por um objeto nativo (Mozilla/Safari)101    if (window.XMLHttpRequest) {102        req = new XMLHttpRequest();103        req.onreadystatechange = processReqChange2;104        req.open("GET", url+'?localidade='+valor2+'&bairro='+valor, true);105        req.send(null);106    // Procura por uma versao ActiveX (IE)107    } else if (window.ActiveXObject) {108        req = new ActiveXObject("Microsoft.XMLHTTP");109        if (req) {110            req.onreadystatechange = processReqChange2;111            req.open("GET", url+'?localidade='+valor2+'&bairro='+valor, true);112            req.send();113        }114    }115}116function processReqChange()117{118    // apenas quando o estado for "completado"119    if (req.readyState == 4) {120        // apenas se o servidor retornar "OK"121        if (req.status == 200) {122            // procura pela div id="atualiza" e insere o conteudo123            // retornado nela, como texto HTML124            document.getElementById('atualiza').innerHTML = req.responseText;125        } else {126            alert("Houve um problema ao obter os dados:\n" + req.statusText);127        }128    }129}130function processReqChange2()131{132    // apenas quando o estado for "completado"133    if (req.readyState == 4) {134        // apenas se o servidor retornar "OK"135        if (req.status == 200) {136            // procura pela div id="atualiza" e insere o conteudo137            // retornado nela, como texto HTML138            document.getElementById('atualiza2').innerHTML = req.responseText;139        } else {140            alert("Houve um problema ao obter os dados:\n" + req.statusText);141        }142    }143}144function Atualizar(valor)145{146    loadXMLDoc("atualiza.php",valor);147}148function Atualizar2(valor,valor2)149{150    loadXMLDoc2("atualiza2.php",valor,valor2);151}152//FUNÃÃO MODAL VISUALIZAR E EDITAR ENDEREÃO153var req2;154function loadXMLDoc01(url,valor)155{156    req2 = null;157    // Procura por um objeto nativo (Mozilla/Safari)158    if (window.XMLHttpRequest) {159        req2 = new XMLHttpRequest();160        req2.onreadystatechange = processReqChange01;161        req2.open("GET", url+'?localidade='+valor, true);162        req2.send(null);163    // Procura por uma versao ActiveX (IE)164    } else if (window.ActiveXObject) {165        req2 = new ActiveXObject("Microsoft.XMLHTTP");166        if (req2) {167            req2.onreadystatechange = processReqChange01;168            req2.open("GET", url+'?localidade='+valor, true);169            req2.send();170        }171    }172}173function loadXMLDoc02(url,valor,valor2)174{175    req2 = null;176    // Procura por um objeto nativo (Mozilla/Safari)177    if (window.XMLHttpRequest) {178        req2 = new XMLHttpRequest();179        req2.onreadystatechange = processReqChange02;180        req2.open("GET", url+'?localidade='+valor2+'&bairro='+valor, true);181        req2.send(null);182    // Procura por uma versao ActiveX (IE)183    } else if (window.ActiveXObject) {184        req2 = new ActiveXObject("Microsoft.XMLHTTP");185        if (req2) {186            req2.onreadystatechange = processReqChange02;187            req2.open("GET", url+'?localidade='+valor2+'&bairro='+valor, true);188            req2.send();189        }190    }191}192function processReqChange01()193{194    // apenas quando o estado for "completado"195    if (req2.readyState == 4) {196        // apenas se o servidor retornar "OK"197        if (req2.status == 200) {198            // procura pela div id="atualiza" e insere o conteudo199            // retornado nela, como texto HTML200            document.getElementById('atualiza0').innerHTML = req2.responseText;201        } else {202            alert("Houve um problema ao obter os dados:\n" + req2.statusText);203        }204    }205}206function processReqChange02()207{208    // apenas quando o estado for "completado"209    if (req2.readyState == 4) {210        // apenas se o servidor retornar "OK"211        if (req2.status == 200) {212            // procura pela div id="atualiza" e insere o conteudo213            // retornado nela, como texto HTML214            document.getElementById('atualiza02').innerHTML = req2.responseText;215        } else {216            alert("Houve um problema ao obter os dados:\n" + req2.statusText);217        }218    }219}220function Atualizar01(valor)221{222    loadXMLDoc01("atualiza0.php",valor);223}224function Atualizar02(valor,valor2)225{226    loadXMLDoc02("atualiza02.php",valor,valor2);...app.js
Source:app.js  
1var createError = require('http-errors');2var express = require('express');3var path = require('path');4//var cookieParser = require('cookie-parser');5var logger = require('morgan');6var http = require('http');7var https = require('https');8var url = require("url");9var port = process.env.PORT || 3000;10var app = express();11//var indexRouter = require('./routes/index');12//var usersRouter = require('./routes/users');13app.use(express.static(path.join(__dirname, 'dist/hw8')));14app.get('/', function(req, res) {15    res.sendFile(path.join(__dirname, 'dist/hw8/index.html'));16});17app.get('/autocomplete', function (req, res) {18    res.setHeader("Content-Type","text/plain");19    res.setHeader("Access-Control-Allow-Origin","*");20    var params = url.parse(req.url, true).query;21    var url_text = 'https://maps.googleapis.com/maps/api/place/autocomplete/json?input='22                 + params.city23                 + '&types=(cities)&language=en&key=AIzaSyBSDUpJbxH_8u5SyNgPR76wEqoirG0yKhg';24    https.get(url_text, function(req2,res2){25        var res_text = "";26        req2.on('data', function(data){27            res_text+=data;28        });29        req2.on('end', function(){30            return res.send(res_text);31        });32    });33    console.log("autocomplete GET");34})35app.get('/weather', function (req, res) {36    res.setHeader("Content-Type","text/plain");37    res.setHeader("Access-Control-Allow-Origin","*");38    var params = url.parse(req.url, true).query;39    var url_text = 'https://api.darksky.net/forecast/a852f76c14e853fb9de2b2aaac7e1dd5/'40                 + params.latitude41                 + ','42                 + params.longitude;43                 44    https.get(url_text, function(req2,res2){45        var res_text = "";46        req2.on('data', function(data){47            res_text+=data;48        });49        req2.on('end', function(){50            return res.send(res_text);51        });52    });53    console.log("weather GET");54})55app.get('/seal', function (req, res) {56    res.setHeader("Content-Type","text/plain");57    res.setHeader("Access-Control-Allow-Origin","*");58    var params = url.parse(req.url, true).query;59    var url_text = 'https://www.googleapis.com/customsearch/v1?q='60                 + params.state61                 + '%20State%20Seal&cx=002930201954421587923:cgyoboerh2r&imgSize=huge&imgType=news&num=1&searchType=image&key=AIzaSyBSDUpJbxH_8u5SyNgPR76wEqoirG0yKhg';62                 63    https.get(url_text, function(req2,res2){64        var res_text = "";65        req2.on('data', function(data){66            res_text+=data;67        });68        req2.on('end', function(){69            return res.send(res_text);70        });71    });72    console.log("seal GET");73})74app.get('/modal', function (req, res) {75    res.setHeader("Content-Type","text/plain");76    res.setHeader("Access-Control-Allow-Origin","*");77    var params = url.parse(req.url, true).query;78    var url_text = 'https://api.darksky.net/forecast/a852f76c14e853fb9de2b2aaac7e1dd5/'79                 + params.latitude80                 + ','81                 + params.longitude82                 + ','83                 + params.time;84                 85    https.get(url_text, function(req2,res2){86        var res_text = "";87        req2.on('data', function(data){88            res_text+=data;89        });90        req2.on('end', function(){91            return res.send(res_text);92        });93    });94    console.log("modal GET");95})96app.get('/geo', function (req, res) {97    res.setHeader("Content-Type","text/plain");98    res.setHeader("Access-Control-Allow-Origin","*");99    var params = url.parse(req.url, true).query;100    var url_text = 'https://maps.googleapis.com/maps/api/geocode/json?address='101                 + params.street102                 + ','103                 + params.city104                 + ','105                 + params.state106                 + '&key=AIzaSyBSDUpJbxH_8u5SyNgPR76wEqoirG0yKhg';107                 108    https.get(url_text, function(req2,res2){109        var res_text = "";110        req2.on('data', function(data){111            res_text+=data;112        });113        req2.on('end', function(){114            return res.send(res_text);115        });116    });117    console.log("geo GET");118})119app.get('/geoCity', function (req, res) {120    res.setHeader("Content-Type","text/plain");121    res.setHeader("Access-Control-Allow-Origin","*");122    var params = url.parse(req.url, true).query;123    var url_text = 'https://maps.googleapis.com/maps/api/geocode/json?address='124                 + params.city125                 + '&key=AIzaSyBSDUpJbxH_8u5SyNgPR76wEqoirG0yKhg';126                 127    https.get(url_text, function(req2,res2){128        var res_text = "";129        req2.on('data', function(data){130            res_text+=data;131        });132        req2.on('end', function(){133            return res.send(res_text);134        });135    });136    console.log("geoCity GET");137})138app.get('/photo', function (req, res) {139    res.setHeader("Content-Type","text/plain");140    res.setHeader("Access-Control-Allow-Origin","*");141    var params = url.parse(req.url, true).query;142    var url_text = 'https://www.googleapis.com/customsearch/v1?q='143                 + params.city144                 + '&cx=002930201954421587923:cgyoboerh2r&imgSize=large&imgType=news&num=8&searchType=image&key=AIzaSyBSDUpJbxH_8u5SyNgPR76wEqoirG0yKhg';145                 146    https.get(url_text, function(req2,res2){147        var res_text = "";148        req2.on('data', function(data){149            res_text+=data;150        });151        req2.on('end', function(){152            return res.send(res_text);153        });154    });155    console.log("photo GET");156})157/*158// view engine setup159app.set('views', path.join(__dirname, 'views'));160app.set('view engine', 'ejs');161app.use(logger('dev'));162app.use(express.json());163app.use(express.urlencoded({ extended: false }));164//app.use(cookieParser());165app.use(express.static(path.join(__dirname, 'public')));166//app.use('/', indexRouter);167//app.use('/users', usersRouter);168// catch 404 and forward to error handler169app.use(function(req, res, next) {170  next(createError(404));171});172// error handler173app.use(function(err, req, res, next) {174  // set locals, only providing error in development175  res.locals.message = err.message;176  res.locals.error = req.app.get('env') === 'development' ? err : {};177  // render the error page178  res.status(err.status || 500);179  res.render('error');180});181*/...Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!
