def test_apihandler_ws_error(conn): values = {'format': 'json'} builder = EnvironBuilder(method='POST', data=values) handler = WebServiceErrorHandler(connect=provider(conn)) resp = handler.handle(Request(builder.get_environ())) assert_equals('application/json; charset=UTF-8', resp.content_type) expected = { "status": "error", "error": { "message": "invalid API key", "code": 4, } } assert_json_equals(expected, resp.data) assert_equals('400 BAD REQUEST', resp.status) handler = InternalErrorHandler(connect=provider(conn)) resp = handler.handle(Request(builder.get_environ())) assert_equals('application/json; charset=UTF-8', resp.content_type) expected = { "status": "error", "error": { "message": "internal error", "code": 5, } } assert_json_equals(expected, resp.data) assert_equals('500 INTERNAL SERVER ERROR', resp.status)
def test_lookup_handler(conn): values = { 'client': 'app1key', 'length': str(TEST_1_LENGTH), 'fingerprint': TEST_1_FP } builder = EnvironBuilder(method='POST', data=values) handler = LookupHandler(connect=provider(conn)) # no matches handler = LookupHandler(connect=provider(conn)) resp = handler.handle(Request(builder.get_environ())) assert_equals('text/xml; charset=UTF-8', resp.content_type) expected = "<?xml version='1.0' encoding='UTF-8'?>\n<response><status>ok</status><results /></response>" assert_equals(expected, resp.data) assert_equals('200 OK', resp.status) # one exact match prepare_database( conn, """ INSERT INTO fingerprint (length, fingerprint, track_id, submission_count) VALUES (%s, %s, 1, 1); """, (TEST_1_LENGTH, TEST_1_FP_RAW)) handler = LookupHandler(connect=provider(conn)) resp = handler.handle(Request(builder.get_environ())) assert_equals('text/xml; charset=UTF-8', resp.content_type) expected = "<?xml version='1.0' encoding='UTF-8'?>\n<response><status>ok</status><results><result><score>1.0</score><id>eb31d1c3-950e-468b-9e36-e46fa75b1291</id></result></results></response>" assert_equals(expected, resp.data) assert_equals('200 OK', resp.status) # one exact match with MBIDs values = { 'client': 'app1key', 'length': str(TEST_1_LENGTH), 'fingerprint': TEST_1_FP, 'meta': '1' } builder = EnvironBuilder(method='POST', data=values) handler = LookupHandler(connect=provider(conn)) resp = handler.handle(Request(builder.get_environ())) assert_equals('text/xml; charset=UTF-8', resp.content_type) expected = "<?xml version='1.0' encoding='UTF-8'?>\n<response><status>ok</status><results><result><tracks><track><id>b81f83ee-4da4-11e0-9ed8-0025225356f3</id></track></tracks><score>1.0</score><id>eb31d1c3-950e-468b-9e36-e46fa75b1291</id></result></results></response>" assert_equals(expected, resp.data) assert_equals('200 OK', resp.status) # one exact match with MBIDs (no exta metadata in v1) values = { 'client': 'app1key', 'length': str(TEST_1_LENGTH), 'fingerprint': TEST_1_FP, 'meta': '2' } builder = EnvironBuilder(method='POST', data=values) handler = LookupHandler(connect=provider(conn)) resp = handler.handle(Request(builder.get_environ())) assert_equals('text/xml; charset=UTF-8', resp.content_type) expected = "<?xml version='1.0' encoding='UTF-8'?>\n<response><status>ok</status><results><result><tracks><track><id>b81f83ee-4da4-11e0-9ed8-0025225356f3</id></track></tracks><score>1.0</score><id>eb31d1c3-950e-468b-9e36-e46fa75b1291</id></result></results></response>" #expected = "<?xml version='1.0' encoding='UTF-8'?>\n<response><status>ok</status><results><result><tracks><track><length>123</length><artist><id>a64796c0-4da4-11e0-bf81-0025225356f3</id><name>Artist A</name></artist><id>b81f83ee-4da4-11e0-9ed8-0025225356f3</id><releases><release><track_num>1</track_num><id>dd6c2cca-a0e9-4cc4-9a5f-7170bd098e23</id><track_count>2</track_count><name>Album A</name></release></releases><name>Track A</name></track></tracks><score>1.0</score><id>1</id></result></results></response>" assert_equals(expected, resp.data) assert_equals('200 OK', resp.status)
def test_submit_handler_foreignid(conn): values = {'format': 'json', 'client': 'app1key', 'user': '******', 'duration': str(TEST_1_LENGTH), 'fingerprint': TEST_1_FP, 'bitrate': 192, 'foreignid': 'foo:123', 'fileformat': 'FLAC'} builder = EnvironBuilder(method='POST', data=values) handler = SubmitHandler(connect=provider(conn)) resp = handler.handle(Request(builder.get_environ())) assert_equals('application/json; charset=UTF-8', resp.content_type) expected = {"status": "ok"} assert_json_equals(expected, resp.data) assert_equals('200 OK', resp.status) query = tables.submission.select().order_by(tables.submission.c.id.desc()).limit(1) submission = conn.execute(query).fetchone() assert_equals(None, submission['mbid']) assert_equals(None, submission['puid']) assert_equals(1, submission['foreignid_id']) assert_equals(1, submission['format_id']) assert_equals(192, submission['bitrate']) assert_equals(TEST_1_FP_RAW, submission['fingerprint']) assert_equals(TEST_1_LENGTH, submission['length']) query = tables.foreignid_vendor.select().order_by(tables.foreignid_vendor.c.id.desc()).limit(1) row = conn.execute(query).fetchone() assert_equals(1, row['id']) assert_equals('foo', row['name']) query = tables.foreignid.select().order_by(tables.foreignid.c.id.desc()).limit(1) row = conn.execute(query).fetchone() assert_equals(1, row['id']) assert_equals(1, row['vendor_id']) assert_equals('123', row['name'])
def test_submit_handler_puid(conn): values = { 'format': 'json', 'client': 'app1key', 'user': '******', 'duration': str(TEST_1_LENGTH), 'fingerprint': TEST_1_FP, 'bitrate': 192, 'puid': 'b9c05616-1874-4d5d-b30e-6b959c922d28', 'fileformat': 'FLAC' } builder = EnvironBuilder(method='POST', data=values) handler = SubmitHandler(connect=provider(conn)) resp = handler.handle(Request(builder.get_environ())) assert_equals('application/json; charset=UTF-8', resp.content_type) expected = {"status": "ok"} assert_json_equals(expected, resp.data) assert_equals('200 OK', resp.status) query = tables.submission.select().order_by( tables.submission.c.id.desc()).limit(1) submission = conn.execute(query).fetchone() assert_equals(None, submission['mbid']) assert_equals('b9c05616-1874-4d5d-b30e-6b959c922d28', submission['puid']) assert_equals(1, submission['format_id']) assert_equals(192, submission['bitrate']) assert_equals(TEST_1_FP_RAW, submission['fingerprint']) assert_equals(TEST_1_LENGTH, submission['length'])
def test_submit_handler(conn): values = { 'client': 'app1key', 'user': '******', 'length': str(TEST_1_LENGTH), 'fingerprint': TEST_1_FP, 'bitrate': 192, 'mbid': 'b9c05616-1874-4d5d-b30e-6b959c922d28', 'format': 'FLAC' } builder = EnvironBuilder(method='POST', data=values) handler = SubmitHandler(connect=provider(conn)) resp = handler.handle(Request(builder.get_environ())) assert_equals('text/xml; charset=UTF-8', resp.content_type) expected = "<?xml version='1.0' encoding='UTF-8'?>\n<response><status>ok</status></response>" assert_equals(expected, resp.data) assert_equals('200 OK', resp.status) query = tables.submission.select().order_by( tables.submission.c.id.desc()).limit(1) submission = conn.execute(query).fetchone() assert_equals('b9c05616-1874-4d5d-b30e-6b959c922d28', submission['mbid']) assert_equals(1, submission['format_id']) assert_equals(192, submission['bitrate']) assert_equals(TEST_1_FP_RAW, submission['fingerprint']) assert_equals(TEST_1_LENGTH, submission['length'])
def test_submit_handler_with_meta(conn): values = {'format': 'json', 'client': 'app1key', 'user': '******', 'duration': str(TEST_1_LENGTH), 'fingerprint': TEST_1_FP, 'bitrate': 192, 'mbid': 'b9c05616-1874-4d5d-b30e-6b959c922d28', 'fileformat': 'FLAC', 'track': 'Voodoo People', 'artist': 'The Prodigy', 'album': 'Music For The Jitled People', 'albumartist': 'Prodigy', 'trackno': '2', 'discno': '3', 'year': '2030' } builder = EnvironBuilder(method='POST', data=values) handler = SubmitHandler(connect=provider(conn)) resp = handler.handle(Request(builder.get_environ())) assert_equals('application/json; charset=UTF-8', resp.content_type) expected = {"status": "ok"} assert_json_equals(expected, resp.data) assert_equals('200 OK', resp.status) query = tables.submission.select().order_by(tables.submission.c.id.desc()).limit(1) submission = conn.execute(query).fetchone() assert_equals('b9c05616-1874-4d5d-b30e-6b959c922d28', submission['mbid']) assert_equals(1, submission['meta_id']) row = conn.execute("SELECT * FROM meta WHERE id=1").fetchone() expected = { 'id': 1, 'track': 'Voodoo People', 'artist': 'The Prodigy', 'album': 'Music For The Jitled People', 'album_artist': 'Prodigy', 'track_no': 2, 'disc_no': 3, 'year': 2030 } assert_equals(expected, dict(row))
def test_user_lookup_handler_missing(conn): values = {'format': 'json', 'client': 'app1key', 'user': '******'} builder = EnvironBuilder(method='POST', data=values) handler = UserLookupHandler(connect=provider(conn)) resp = handler.handle(Request(builder.get_environ())) assert_equals('application/json; charset=UTF-8', resp.content_type) assert_equals('400 BAD REQUEST', resp.status) data = json.loads(resp.data) assert_equal('error', data['status']) assert_equal(6, data['error']['code'])
def test_user_lookup_handler(conn): values = {'format': 'json', 'client': 'app1key', 'user': '******'} builder = EnvironBuilder(method='POST', data=values) handler = UserLookupHandler(connect=provider(conn)) resp = handler.handle(Request(builder.get_environ())) assert_equals('application/json; charset=UTF-8', resp.content_type) assert_equals('200 OK', resp.status) data = json.loads(resp.data) assert_equal('ok', data['status']) assert_equal('user1key', data['user']['apikey'])
def create_from_server(cls, server, conn=None): if conn is not None: connect = provider(conn) else: connect = server.engine.connect handler = cls(connect=connect) handler.index = server.index handler.redis = server.redis handler.config = server.config handler.cluster = server.config.cluster return handler
def test_lookup_handler(conn): values = {'client': 'app1key', 'length': str(TEST_1_LENGTH), 'fingerprint': TEST_1_FP} builder = EnvironBuilder(method='POST', data=values) handler = LookupHandler(connect=provider(conn)) # no matches handler = LookupHandler(connect=provider(conn)) resp = handler.handle(Request(builder.get_environ())) assert_equals('text/xml; charset=UTF-8', resp.content_type) expected = "<?xml version='1.0' encoding='UTF-8'?>\n<response><status>ok</status><results /></response>" assert_equals(expected, resp.data) assert_equals('200 OK', resp.status) # one exact match prepare_database(conn, """ INSERT INTO fingerprint (length, fingerprint, track_id, submission_count) VALUES (%s, %s, 1, 1); """, (TEST_1_LENGTH, TEST_1_FP_RAW)) handler = LookupHandler(connect=provider(conn)) resp = handler.handle(Request(builder.get_environ())) assert_equals('text/xml; charset=UTF-8', resp.content_type) expected = "<?xml version='1.0' encoding='UTF-8'?>\n<response><status>ok</status><results><result><score>1.0</score><id>eb31d1c3-950e-468b-9e36-e46fa75b1291</id></result></results></response>" assert_equals(expected, resp.data) assert_equals('200 OK', resp.status) # one exact match with MBIDs values = {'client': 'app1key', 'length': str(TEST_1_LENGTH), 'fingerprint': TEST_1_FP, 'meta': '1'} builder = EnvironBuilder(method='POST', data=values) handler = LookupHandler(connect=provider(conn)) resp = handler.handle(Request(builder.get_environ())) assert_equals('text/xml; charset=UTF-8', resp.content_type) expected = "<?xml version='1.0' encoding='UTF-8'?>\n<response><status>ok</status><results><result><tracks><track><id>b81f83ee-4da4-11e0-9ed8-0025225356f3</id></track></tracks><score>1.0</score><id>eb31d1c3-950e-468b-9e36-e46fa75b1291</id></result></results></response>" assert_equals(expected, resp.data) assert_equals('200 OK', resp.status) # one exact match with MBIDs (no exta metadata in v1) values = {'client': 'app1key', 'length': str(TEST_1_LENGTH), 'fingerprint': TEST_1_FP, 'meta': '2'} builder = EnvironBuilder(method='POST', data=values) handler = LookupHandler(connect=provider(conn)) resp = handler.handle(Request(builder.get_environ())) assert_equals('text/xml; charset=UTF-8', resp.content_type) expected = "<?xml version='1.0' encoding='UTF-8'?>\n<response><status>ok</status><results><result><tracks><track><id>b81f83ee-4da4-11e0-9ed8-0025225356f3</id></track></tracks><score>1.0</score><id>eb31d1c3-950e-468b-9e36-e46fa75b1291</id></result></results></response>" #expected = "<?xml version='1.0' encoding='UTF-8'?>\n<response><status>ok</status><results><result><tracks><track><length>123</length><artist><id>a64796c0-4da4-11e0-bf81-0025225356f3</id><name>Artist A</name></artist><id>b81f83ee-4da4-11e0-9ed8-0025225356f3</id><releases><release><track_num>1</track_num><id>dd6c2cca-a0e9-4cc4-9a5f-7170bd098e23</id><track_count>2</track_count><name>Album A</name></release></releases><name>Track A</name></track></tracks><score>1.0</score><id>1</id></result></results></response>" assert_equals(expected, resp.data) assert_equals('200 OK', resp.status)
def test_user_create_anonumous_handler(conn): values = {'format': 'json', 'client': 'app1key'} builder = EnvironBuilder(method='POST', data=values) handler = UserCreateAnonymousHandler(connect=provider(conn)) resp = handler.handle(Request(builder.get_environ())) assert_equals('application/json; charset=UTF-8', resp.content_type) assert_equals('200 OK', resp.status) data = json.loads(resp.data) assert_equals('ok', data['status']) query = tables.account.select().where(tables.account.c.apikey == data['user']['apikey']) user = conn.execute(query).fetchone() assert_true(user)
def test_user_create_anonumous_handler(conn): values = {'format': 'json', 'client': 'app1key'} builder = EnvironBuilder(method='POST', data=values) handler = UserCreateAnonymousHandler(connect=provider(conn)) resp = handler.handle(Request(builder.get_environ())) assert_equals('application/json; charset=UTF-8', resp.content_type) assert_equals('200 OK', resp.status) data = json.loads(resp.data) assert_equals('ok', data['status']) query = tables.account.select().where( tables.account.c.apikey == data['user']['apikey']) user = conn.execute(query).fetchone() assert_true(user)
def test_submit_handler(conn): values = {'client': 'app1key', 'user': '******', 'length': str(TEST_1_LENGTH), 'fingerprint': TEST_1_FP, 'bitrate': 192, 'mbid': 'b9c05616-1874-4d5d-b30e-6b959c922d28', 'format': 'FLAC'} builder = EnvironBuilder(method='POST', data=values) handler = SubmitHandler(connect=provider(conn)) resp = handler.handle(Request(builder.get_environ())) assert_equals('text/xml; charset=UTF-8', resp.content_type) expected = "<?xml version='1.0' encoding='UTF-8'?>\n<response><status>ok</status></response>" assert_equals(expected, resp.data) assert_equals('200 OK', resp.status) query = tables.submission.select().order_by(tables.submission.c.id.desc()).limit(1) submission = conn.execute(query).fetchone() assert_equals('b9c05616-1874-4d5d-b30e-6b959c922d28', submission['mbid']) assert_equals(1, submission['format_id']) assert_equals(192, submission['bitrate']) assert_equals(TEST_1_FP_RAW, submission['fingerprint']) assert_equals(TEST_1_LENGTH, submission['length'])
def test_submit_handler_with_meta(conn): values = { 'format': 'json', 'client': 'app1key', 'user': '******', 'duration': str(TEST_1_LENGTH), 'fingerprint': TEST_1_FP, 'bitrate': 192, 'mbid': 'b9c05616-1874-4d5d-b30e-6b959c922d28', 'fileformat': 'FLAC', 'track': 'Voodoo People', 'artist': 'The Prodigy', 'album': 'Music For The Jitled People', 'albumartist': 'Prodigy', 'trackno': '2', 'discno': '3', 'year': '2030' } builder = EnvironBuilder(method='POST', data=values) handler = SubmitHandler(connect=provider(conn)) resp = handler.handle(Request(builder.get_environ())) assert_equals('application/json; charset=UTF-8', resp.content_type) expected = {"status": "ok"} assert_json_equals(expected, resp.data) assert_equals('200 OK', resp.status) query = tables.submission.select().order_by( tables.submission.c.id.desc()).limit(1) submission = conn.execute(query).fetchone() assert_equals('b9c05616-1874-4d5d-b30e-6b959c922d28', submission['mbid']) assert_equals(1, submission['meta_id']) row = conn.execute("SELECT * FROM meta WHERE id=1").fetchone() expected = { 'id': 1, 'track': 'Voodoo People', 'artist': 'The Prodigy', 'album': 'Music For The Jitled People', 'album_artist': 'Prodigy', 'track_no': 2, 'disc_no': 3, 'year': 2030 } assert_equals(expected, dict(row))
def test_provider(): assert_equals('foo', provider('foo')())
def test_lookup_handler(conn): values = {'format': 'json', 'client': 'app1key', 'duration': str(TEST_1_LENGTH), 'fingerprint': TEST_1_FP} builder = EnvironBuilder(method='POST', data=values) handler = LookupHandler(connect=provider(conn)) # no matches handler = LookupHandler(connect=provider(conn)) resp = handler.handle(Request(builder.get_environ())) assert_equals('application/json; charset=UTF-8', resp.content_type) expected = { "status": "ok", "results": [] } assert_json_equals(expected, resp.data) assert_equals('200 OK', resp.status) # one exact match prepare_database(conn, """ INSERT INTO fingerprint (length, fingerprint, source_id, track_id) VALUES (%s, %s, 1, 1); """, (TEST_1_LENGTH, TEST_1_FP_RAW)) handler = LookupHandler(connect=provider(conn)) resp = handler.handle(Request(builder.get_environ())) assert_equals('application/json; charset=UTF-8', resp.content_type) expected = { "status": "ok", "results": [{ "id": 1, "score": 1.0, }], } assert_json_equals(expected, resp.data) assert_equals('200 OK', resp.status) # one exact match with MBIDs values = {'format': 'json', 'client': 'app1key', 'duration': str(TEST_1_LENGTH), 'fingerprint': TEST_1_FP, 'meta': '1'} builder = EnvironBuilder(method='POST', data=values) handler = LookupHandler(connect=provider(conn)) resp = handler.handle(Request(builder.get_environ())) assert_equals('application/json; charset=UTF-8', resp.content_type) expected = { "status": "ok", "results": [{ "id": 1, "score": 1.0, "recordings": [{"id": "b81f83ee-4da4-11e0-9ed8-0025225356f3"}], }], } assert_json_equals(expected, resp.data) assert_equals('200 OK', resp.status) # one exact match with MBIDs and metadata prepare_database(conn, "INSERT INTO track_mbid (track_id, mbid) VALUES (1, '373e6728-35e3-4633-aab1-bf7092ec43d8')") values = {'format': 'json', 'client': 'app1key', 'duration': str(TEST_1_LENGTH), 'fingerprint': TEST_1_FP, 'meta': '2'} builder = EnvironBuilder(method='POST', data=values) handler = LookupHandler(connect=provider(conn)) resp = handler.handle(Request(builder.get_environ())) assert_equals('application/json; charset=UTF-8', resp.content_type) expected = { "status": "ok", "results": [{ "id": 1, "score": 1.0, "recordings": [{ "id": "373e6728-35e3-4633-aab1-bf7092ec43d8", }, { "id": "b81f83ee-4da4-11e0-9ed8-0025225356f3", "tracks": [{ "title": "Track A", "duration": 123, "position": 1, "medium": { "track_count": 2, "release": { "id": "dd6c2cca-a0e9-4cc4-9a5f-7170bd098e23", "title": "Album A", }, }, "artist": { "id": "a64796c0-4da4-11e0-bf81-0025225356f3", "name": "Artist A", }, }], }], }] } assert_json_equals(expected, resp.data) assert_equals('200 OK', resp.status) # duplicate fingerprint prepare_database(conn, """ INSERT INTO fingerprint (length, fingerprint, source_id, track_id) VALUES (%s, %s, 1, 1); """, (TEST_1_LENGTH, TEST_1_FP_RAW)) values = {'format': 'json', 'client': 'app1key', 'duration': str(TEST_1_LENGTH), 'fingerprint': TEST_1_FP} builder = EnvironBuilder(method='POST', data=values) handler = LookupHandler(connect=provider(conn)) resp = handler.handle(Request(builder.get_environ())) assert_equals('application/json; charset=UTF-8', resp.content_type) expected = { "status": "ok", "results": [{ "id": 1, "score": 1.0, }], } assert_json_equals(expected, resp.data) assert_equals('200 OK', resp.status)
def test_lookup_handler(conn): values = {'format': 'json', 'client': 'app1key', 'duration': str(TEST_1_LENGTH), 'fingerprint': TEST_1_FP} builder = EnvironBuilder(method='POST', data=values) handler = LookupHandler(connect=provider(conn)) # no matches handler = LookupHandler(connect=provider(conn)) resp = handler.handle(Request(builder.get_environ())) assert_equals('application/json; charset=UTF-8', resp.content_type) expected = { "status": "ok", "results": [] } assert_json_equals(expected, resp.data) assert_equals('200 OK', resp.status) # one exact match prepare_database(conn, """ INSERT INTO fingerprint (length, fingerprint, track_id, submission_count) VALUES (%s, %s, 1, 1); """, (TEST_1_LENGTH, TEST_1_FP_RAW)) handler = LookupHandler(connect=provider(conn)) resp = handler.handle(Request(builder.get_environ())) assert_equals('application/json; charset=UTF-8', resp.content_type) expected = { "status": "ok", "results": [{ "id": 'eb31d1c3-950e-468b-9e36-e46fa75b1291', "score": 1.0, }], } assert_json_equals(expected, resp.data) assert_equals('200 OK', resp.status) # one exact match with MBIDs values = {'format': 'json', 'client': 'app1key', 'duration': str(TEST_1_LENGTH), 'fingerprint': TEST_1_FP, 'meta': '1'} builder = EnvironBuilder(method='POST', data=values) handler = LookupHandler(connect=provider(conn)) resp = handler.handle(Request(builder.get_environ())) assert_equals('application/json; charset=UTF-8', resp.content_type) expected = { "status": "ok", "results": [{ "id": 'eb31d1c3-950e-468b-9e36-e46fa75b1291', "score": 1.0, "recordings": [{"id": "b81f83ee-4da4-11e0-9ed8-0025225356f3"}], }], } assert_json_equals(expected, resp.data) assert_equals('200 OK', resp.status) # one exact match with MBIDs and metadata prepare_database(conn, "INSERT INTO track_mbid (track_id, mbid, submission_count) VALUES (1, '373e6728-35e3-4633-aab1-bf7092ec43d8', 1)") values = {'format': 'json', 'client': 'app1key', 'duration': str(TEST_1_LENGTH), 'fingerprint': TEST_1_FP, 'meta': '2'} builder = EnvironBuilder(method='POST', data=values) handler = LookupHandler(connect=provider(conn)) resp = handler.handle(Request(builder.get_environ())) assert_equals('application/json; charset=UTF-8', resp.content_type) expected = { "status": "ok", "results": [{ "id": 'eb31d1c3-950e-468b-9e36-e46fa75b1291', "score": 1.0, "recordings": [{ "id": "373e6728-35e3-4633-aab1-bf7092ec43d8", }, { "id": "b81f83ee-4da4-11e0-9ed8-0025225356f3", "duration": 123, "tracks": [{ "title": "Track A", "duration": 123, "position": 1, "medium": { "track_count": 2, "position": 1, "format": "DVD", "release": { "id": "1d4d546f-e2ec-4553-8df7-9004298924d5", "title": "Album A", }, }, "artists": [{ "id": "a64796c0-4da4-11e0-bf81-0025225356f3", "name": "Artist A", }], }, { "title": "Track A", "duration": 123, "position": 1, "medium": { "track_count": 2, "position": 1, "format": "CD", "release": { "id": "dd6c2cca-a0e9-4cc4-9a5f-7170bd098e23", "title": "Album A", }, }, "artists": [{ "id": "a64796c0-4da4-11e0-bf81-0025225356f3", "name": "Artist A", }], }], }], }] } assert_json_equals(expected, resp.data) assert_equals('200 OK', resp.status) # duplicate fingerprint prepare_database(conn, """ INSERT INTO fingerprint (length, fingerprint, track_id, submission_count) VALUES (%s, %s, 1, 1); """, (TEST_1_LENGTH, TEST_1_FP_RAW)) values = {'format': 'json', 'client': 'app1key', 'duration': str(TEST_1_LENGTH), 'fingerprint': TEST_1_FP} builder = EnvironBuilder(method='POST', data=values) handler = LookupHandler(connect=provider(conn)) resp = handler.handle(Request(builder.get_environ())) assert_equals('application/json; charset=UTF-8', resp.content_type) expected = { "status": "ok", "results": [{ "id": 'eb31d1c3-950e-468b-9e36-e46fa75b1291', "score": 1.0, }], } assert_json_equals(expected, resp.data) assert_equals('200 OK', resp.status)