Ejemplo n.º 1
0
 def do_lookup( self, params ):
     """ Runs lookup; returns patron-api html output.
         Called by papiweb_app.handle_v1() """
     self.logger.debug( "params['patron_barcode'], `%s`" % params['patron_barcode'] )
     papi = PatronAPI( self.defaults )
     self.logger.debug( 'a' )
     try:
         papi_json = papi.grab_data( params['patron_barcode'] )
         self.logger.debug( 'b' )
         self.logger.debug( 'papi_json, `%s`' % papi_json )
         self.logger.debug( 'c' )
         jdct = json.loads( papi_json )
         self.logger.debug( 'jdct, `%s`' % pprint.pformat(jdct) )
     except Exception as e:
         jdct = self.build_error_dict( e )
     return jdct
Ejemplo n.º 2
0
 def setUp(self):
     self.PATRON_BARCODE = unicode( os.environ['PAPI__TEST_PATRON_BARCODE'] )
     defaults = { 'PATRON_API_URL_PATTERN': unicode(os.environ['PAPI__PATRON_API_URL_PATTERN']) }
     self.papi = PatronAPI( defaults )
Ejemplo n.º 3
0
class PatronApiTests( unittest.TestCase ):

    def setUp(self):
        self.PATRON_BARCODE = unicode( os.environ['PAPI__TEST_PATRON_BARCODE'] )
        defaults = { 'PATRON_API_URL_PATTERN': unicode(os.environ['PAPI__PATRON_API_URL_PATTERN']) }
        self.papi = PatronAPI( defaults )

    def test_grab_data(self):
        """ Tests response is json of hashes.
            May not be able to run this test locally due to port/ip filters. """
        output = self.papi.grab_data( self.PATRON_BARCODE )
        logger.debug( 'output, `%s`' % output )
        d = json.loads( output )
        self.assertEqual(
            self.PATRON_BARCODE,
            d['p_barcode']['converted_value']
            )

    def test_parse_line(self):
        """ Tests that dict is returned for line. """
        line = 'P TYPE[p47]=7<BR>'
        self.assertEqual(
            { u'label': u'P TYPE', u'code': u'p47', u'value': u'7' },
            self.papi.parse_line( line )
            )
        ## problem line
        line = 'LINK REC[p^]=in<BR>'
        self.assertEqual(
            { u'label': u'LINK REC', u'code': u'p^', u'value': u'in' },
            self.papi.parse_line( line )
            )

    def test_parse_label(self):
        """ Tests regex perception of number in label. """
        ## text with space
        line = 'P TYPE[p47]=7<BR>'
        self.assertEqual(
            'P TYPE',
            self.papi.parse_label( line )
            )
        ## numeral
        line = 'PCODE1[p44]=-<BR>'
        self.assertEqual(
            'PCODE1',
            self.papi.parse_label( line )
            )
        ## text with hyphen
        line = 'E-MAIL[pe][email protected]<BR>'
        self.assertEqual(
            'E-MAIL',
            self.papi.parse_label( line )
            )

    def test_parse_code(self):
        """ Tests code extract from updated_line. """
        ## exclamation point
        updated_line = '[p!]=p<BR>'
        self.assertEqual(
            ( '[p!]', 'p!' ),  # ( sliced_code, code )
            self.papi.parse_code( updated_line )
            )
        ## caret
        updated_line = '[p^]=in<BR>'
        self.assertEqual(
            ( '[p^]', 'p^' ),  # ( sliced_code, code )
            self.papi.parse_code( updated_line )
            )

    def test_parse_value(self):
        """ Tests simple slice for value. """
        updated_line = '[email protected]<BR>'
        self.assertEqual(
            '*****@*****.**',
            self.papi.parse_value( updated_line )
            )