public void verify_get_next_job_set_identity() { var info = new QueueInfo("test", "", "pdf|docx"); QueueHandler sut = new QueueHandler(info, _db); StreamReadModel rm = new StreamReadModel() { Id = 1L, Handle = "FirstHandle", Filename = new FileNameWithExtension("test.docx"), EventType = HandleStreamEventTypes.DocumentHasNewFormat, FormatInfo = new FormatInfo() { PipelineId = new PipelineId("soffice"), DocumentFormat = new DocumentFormat("office"), BlobId = new BlobId("soffice.1") }, DocumentDescriptorId = new DocumentDescriptorId(1), }; sut.Handle(rm, new TenantId("test")); rm.Handle = "SecondHandle"; rm.Id = 2L; //This is typical situation when handle is de-duplicated, because //and handle is assigned to another document, but the underling blob id is the same. sut.Handle(rm, new TenantId("test")); var collection = _db.GetCollection <QueuedJob>("queue.test"); //no need to schedule another job Assert.That(collection.AsQueryable().Count(), Is.EqualTo(1)); }
public void verify_pipeline_id_filter() { var info = new QueueInfo("test", "tika", ""); QueueHandler sut = new QueueHandler(info, _db); StreamReadModel rm = new StreamReadModel() { Filename = new FileNameWithExtension("test.docx"), EventType = HandleStreamEventTypes.DocumentHasNewFormat, FormatInfo = new FormatInfo() { PipelineId = new PipelineId("soffice") } }; sut.Handle(rm, new TenantId("test")); var collection = _db.GetCollection <QueuedJob>("queue.test"); Assert.That(collection.AsQueryable().Count(), Is.EqualTo(0), "pipeline filter is not filtering out unwanted pipeline"); rm = new StreamReadModel() { Filename = new FileNameWithExtension("test.docx"), FormatInfo = new FormatInfo() { PipelineId = new PipelineId("tika"), DocumentFormat = new DocumentFormat("tika"), BlobId = new BlobId("tika.1") } }; sut.Handle(rm, new TenantId("test")); Assert.That(collection.AsQueryable().Count(), Is.EqualTo(1), "pipeline filter is not filtering in admitted pipeline"); }
public void verify_filtering_on_mime_types() { var mimeTypeDocx = MimeTypes.GetMimeTypeByExtension("docx"); var info = new QueueInfo("test", mimeTypes: mimeTypeDocx); QueueHandler sut = new QueueHandler(info, _db); StreamReadModel rm = new StreamReadModel() { Filename = new FileNameWithExtension("test.pdf"), FormatInfo = new FormatInfo() { DocumentFormat = new DocumentFormat("thumb.small"), BlobId = new BlobId("blob.1"), PipelineId = new PipelineId("thumbnail") } }; sut.Handle(rm, new TenantId("test")); var collection = _db.GetCollection <QueuedJob>("queue.test"); Assert.That(collection.AsQueryable().Count(), Is.EqualTo(0)); rm = new StreamReadModel() { Filename = new FileNameWithExtension("test.docx"), FormatInfo = new FormatInfo() { DocumentFormat = new DocumentFormat("thumb.small"), BlobId = new BlobId("blob.1"), PipelineId = new PipelineId("thumbnail") } }; sut.Handle(rm, new TenantId("test")); Assert.That(collection.AsQueryable().Count(), Is.EqualTo(1)); }
public void verify_id_is_opaque_and_not_contains_blob_id() { var info = new QueueInfo("test", "", "docx"); QueueHandler sut = new QueueHandler(info, _db); StreamReadModel rm = new StreamReadModel() { Filename = new FileNameWithExtension("test.docx"), FormatInfo = new FormatInfo() { DocumentFormat = new DocumentFormat("thumb.small"), BlobId = new BlobId("blob.1"), PipelineId = new PipelineId("thumbnail"), }, DocumentDescriptorId = new DocumentDescriptorId(1), Handle = new DocumentHandle("Revision_2"), }; sut.Handle(rm, new TenantId("test_tenant")); var collection = _db.GetCollection <QueuedJob>("queue.test"); Assert.That(collection.AsQueryable().Count(), Is.EqualTo(1)); var job = collection.AsQueryable().Single(); Assert.That(job.BlobId, Is.EqualTo(new BlobId("blob.1"))); Assert.That(job.TenantId, Is.EqualTo(new TenantId("test_tenant"))); Assert.That(job.DocumentDescriptorId, Is.EqualTo(new DocumentDescriptorId(1))); Assert.That(job.Handle.ToString(), Is.EqualTo(rm.Handle)); Assert.That(job.Id.ToString(), Is.Not.Contains("blob.1"), "Id should not contains internal concempts like blob id"); Assert.That(job.Id.ToString(), Is.Not.Contains("tenant"), "Id should not contains internal concempts like tenant id"); Assert.That(job.Parameters.Keys, Is.Not.Contains(JobKeys.BlobId)); Assert.That(job.Parameters.Keys, Is.Not.Contains(JobKeys.DocumentId)); }
public void verify_job_created_with_handle_metadata() { var info = new QueueInfo("test", "", "pdf|docx"); QueueHandler sut = new QueueHandler(info, _db); var customData = new DocumentCustomData() { { "test", "value" }, { "complex", 42 }, }; StreamReadModel rm = new StreamReadModel() { Id = 1L, Handle = "FirstHandle", Filename = new FileNameWithExtension("test.docx"), EventType = HandleStreamEventTypes.DocumentHasNewFormat, FormatInfo = new FormatInfo() { PipelineId = new PipelineId("soffice"), DocumentFormat = new DocumentFormat("office"), BlobId = new BlobId("soffice.1") }, DocumentDescriptorId = new DocumentDescriptorId(1), DocumentCustomData = customData, }; sut.Handle(rm, new TenantId("test")); var collection = _db.GetCollection <QueuedJob>("queue.test"); Assert.That(collection.AsQueryable().Single().HandleCustomData, Is.EquivalentTo(customData)); }
public void verify_job_parameters_contains_mime_type() { var info = new QueueInfo("test", "", "docx"); QueueHandler sut = new QueueHandler(info, _db); StreamReadModel rm = new StreamReadModel() { Filename = new FileNameWithExtension("test.docx"), FormatInfo = new FormatInfo() { DocumentFormat = new DocumentFormat("thumb.small"), BlobId = new BlobId("blob.1"), PipelineId = new PipelineId("thumbnail"), }, DocumentDescriptorId = new DocumentDescriptorId(1), }; sut.Handle(rm, new TenantId("test_tenant")); var collection = _db.GetCollection <QueuedJob>("queue.test"); Assert.That(collection.AsQueryable().Count(), Is.EqualTo(1)); var job = collection.AsQueryable().Single(); Assert.That(job.BlobId, Is.EqualTo(new BlobId("blob.1"))); Assert.That(job.Parameters[JobKeys.MimeType], Is.EqualTo(MimeTypes.GetMimeTypeByExtension("docx"))); }
public void verify_file_extension_on_handler_filter_exact_extension() { var info = new QueueInfo("test", "", "pdf|doc"); QueueHandler sut = new QueueHandler(info, _db); StreamReadModel rm = new StreamReadModel() { Filename = new FileNameWithExtension("test.docx") }; sut.Handle(rm, new TenantId("test")); var collection = _db.GetCollection <QueuedJob>("queue.test"); Assert.That(collection.AsQueryable().Count(), Is.EqualTo(0)); }
private static void HandleStreamToCreateJob( QueueHandler sut, String tenant = "test", Dictionary <String, Object> customData = null) { StreamReadModel rm = new StreamReadModel() { Filename = new FileNameWithExtension("test.docx"), EventType = HandleStreamEventTypes.DocumentHasNewFormat, FormatInfo = new FormatInfo() { PipelineId = new PipelineId("tika"), DocumentFormat = new DocumentFormat("tika"), BlobId = new BlobId("tika." + lastBlobId++) }, DocumentCustomData = new DocumentCustomData(customData ?? new Dictionary <String, Object>()), }; sut.Handle(rm, new TenantId(tenant)); }
public void Verify_file_extension_permitted() { var info = new QueueInfo("test", "", "pdf|docx"); QueueHandler sut = new QueueHandler(info, _db); StreamReadModel rm = new StreamReadModel() { Filename = new FileNameWithExtension("test.docx"), EventType = HandleStreamEventTypes.DocumentHasNewFormat, FormatInfo = new FormatInfo() { PipelineId = new PipelineId("soffice"), DocumentFormat = new DocumentFormat("office"), BlobId = new BlobId("soffice.1") } }; sut.Handle(rm, new TenantId("test")); var collection = _db.GetCollection <QueuedJob>("queue.test"); Assert.That(collection.AsQueryable().Count(), Is.EqualTo(1)); }