def test_resolve_url_hits_counter(self): tables = ShortenerTables(self.account, self.conn) yield tables.create_tables() url = 'http://en.wikipedia.org/wiki/Cthulhu' yield self.service.shorten_url(url) yield self.service.get_row_by_short_url('qr0') yield self.service.get_row_by_short_url('qr0') result = yield self.service.get_row_by_short_url('qr0') audit = yield tables.get_audit_row(result['id']) self.assertEqual(audit['hits'], 3)
def test_resolve_url(self): tables = ShortenerTables('test-account', self.conn) yield tables.create_tables() yield tables.get_or_create_row( 'wiki.org', 'test', 'http://wiki.org/test/') yield tables.update_short_url(1, 'aaa') row = yield tables.get_row_by_short_url('aaa') self.assertEqual(row['domain'], 'wiki.org') self.assertEqual(row['short_url'], 'aaa') self.assertEqual(row['id'], 1) audit = yield tables.get_audit_row(1) self.assertEqual(audit['hits'], 1) #multiple hits for i in range(0, 10): yield tables.get_row_by_short_url('aaa') audit = yield tables.get_audit_row(1) self.assertEqual(audit['hits'], 11)
def test_resolve_url(self): tables = ShortenerTables('test-account', self.conn) yield tables.create_tables() yield tables.get_or_create_row('wiki.org', 'test', 'http://wiki.org/test/') yield tables.update_short_url(1, 'aaa') row = yield tables.get_row_by_short_url('aaa') self.assertEqual(row['domain'], 'wiki.org') self.assertEqual(row['short_url'], 'aaa') self.assertEqual(row['id'], 1) audit = yield tables.get_audit_row(1) self.assertEqual(audit['hits'], 1) #multiple hits for i in range(0, 10): yield tables.get_row_by_short_url('aaa') audit = yield tables.get_audit_row(1) self.assertEqual(audit['hits'], 11)
def test_get_or_create_row(self): tables = ShortenerTables('test-account', self.conn) yield tables.create_tables() row = yield tables.get_or_create_row( 'wiki.org', 'test', 'http://wiki.org/test/') self.assertEqual(row['domain'], 'wiki.org') self.assertEqual(row['short_url'], None) self.assertEqual(row['user_token'], 'test') self.assertEqual(row['long_url'], 'http://wiki.org/test/') self.assertEqual(row['id'], 1) row = yield tables.get_or_create_row( 'wiki.org', 'test', 'http://wiki.org/test/') self.assertEqual(row['id'], 1) audit = yield tables.get_audit_row(1) self.assertEqual(audit['hits'], 0)
def test_get_or_create_row(self): tables = ShortenerTables('test-account', self.conn) yield tables.create_tables() row = yield tables.get_or_create_row('wiki.org', 'test', 'http://wiki.org/test/') self.assertEqual(row['domain'], 'wiki.org') self.assertEqual(row['short_url'], None) self.assertEqual(row['user_token'], 'test') self.assertEqual(row['long_url'], 'http://wiki.org/test/') self.assertEqual(row['id'], 1) row = yield tables.get_or_create_row('wiki.org', 'test', 'http://wiki.org/test/') self.assertEqual(row['id'], 1) audit = yield tables.get_audit_row(1) self.assertEqual(audit['hits'], 0)
def render(self, request): short_url = request.args.get('url') conn = yield self.engine.connect() try: tables = ShortenerTables(self.config['account'], conn) if not short_url: request.setResponseCode(http.BAD_REQUEST) returnValue({'error': 'expected "?url=<short_url>"'}) else: row = yield tables.get_row_by_short_url(short_url[0], False) if row: audit = yield tables.get_audit_row(row['id']) returnValue(self._format(row, audit)) else: request.setResponseCode(http.NOT_FOUND) returnValue({'error': 'short url not found'}) finally: yield conn.close()