com.joyent.manta.http.ContentTypeLookupTest.java Source code

Java tutorial

Introduction

Here is the source code for com.joyent.manta.http.ContentTypeLookupTest.java

Source

/*
 * Copyright (c) 2017, Joyent, Inc. All rights reserved.
 *
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
 */
package com.joyent.manta.http;

import org.apache.commons.io.FileUtils;
import org.apache.http.Header;
import org.apache.http.HttpHeaders;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.ContentType;
import org.apache.http.message.BasicHeader;
import org.testng.Assert;
import org.testng.annotations.Test;

import java.io.File;

@Test
public class ContentTypeLookupTest {
    private static final Header[] EXAMPLE_HEADERS = new Header[] {
            new BasicHeader("Last-Modified", "Fri, 09 Dec 2016 22:09:44 GMT"),
            new BasicHeader("Result-Set-Size", "0"), new BasicHeader("Date", "Fri, 09 Dec 2016 22:09:44 GMT"),
            new BasicHeader("Server", "Manta"),
            new BasicHeader("x-request-id", "17d243b4-f9a7-4042-bc21-7322fb40fc1c"),
            new BasicHeader("x-response-time", "16"),
            new BasicHeader("x-server-name", "02d02889-cd80-4ac1-bc0c-4775b86661e4"),
            new BasicHeader("Connection", "keep-alive") };

    public void canFindDefault() {
        MantaHttpHeaders headers = new MantaHttpHeaders(EXAMPLE_HEADERS);
        ContentType troff = ContentType.create("application/x-troff");
        ContentType jsonStream = ContentType.create("application/x-json-stream");

        Assert.assertEquals(ContentTypeLookup.findOrDefaultContentType(null, troff).getMimeType(),
                troff.getMimeType());
        Assert.assertEquals(ContentTypeLookup.findOrDefaultContentType(headers, troff).getMimeType(),
                troff.getMimeType());
        headers.put("Content-Type", "application/x-json-stream; type=directory");
        Assert.assertEquals(ContentTypeLookup.findOrDefaultContentType(headers, troff).getMimeType(),
                jsonStream.getMimeType());
    }

    // These test will fail on some platforms where libgio will return
    // "text/plain" for empty files instead of indicating an unknown type.
    @Test(enabled = false)
    public void canfindByMultipleMethodsNull() throws Exception {
        MantaHttpHeaders headers = new MantaHttpHeaders(EXAMPLE_HEADERS);
        ContentType troff = ContentType.create("application/x-troff");
        ContentType jsonStream = ContentType.create("application/x-json-stream");

        File temp = File.createTempFile("upload", ".unknown");
        FileUtils.forceDeleteOnExit(temp);
        Assert.assertNull(ContentTypeLookup.findOrDefaultContentType(null, "/stor/unknown", temp, null));

        temp = File.createTempFile("upload", ".unknown");
        FileUtils.forceDeleteOnExit(temp);
        Assert.assertNull(ContentTypeLookup.findOrDefaultContentType(headers, "/stor/unknown", temp, null));
    }

    public void canfindByMultipleMethods() throws Exception {
        MantaHttpHeaders headers = new MantaHttpHeaders(EXAMPLE_HEADERS);
        ContentType troff = ContentType.create("application/x-troff");
        ContentType jsonStream = ContentType.create("application/x-json-stream");

        File temp = File.createTempFile("upload", ".jpeg");
        FileUtils.forceDeleteOnExit(temp);
        Assert.assertEquals(
                ContentTypeLookup.findOrDefaultContentType(headers, "/stor/unknown", temp, troff).getMimeType(),
                "image/jpeg");
        headers.put("Content-Type", "application/x-json-stream; type=directory");
        temp = File.createTempFile("upload", ".jpeg");
        FileUtils.forceDeleteOnExit(temp);
        Assert.assertEquals(
                ContentTypeLookup.findOrDefaultContentType(headers, "/stor/unknown", temp, troff).getMimeType(),
                jsonStream.getMimeType());
    }

    public void canFindByFilename() {
        MantaHttpHeaders headers = new MantaHttpHeaders(EXAMPLE_HEADERS);
        ContentType troff = ContentType.create("application/x-troff");
        ContentType jsonStream = ContentType.create("application/x-json-stream");

        Assert.assertNull(ContentTypeLookup.findOrDefaultContentType(null, "/tmp/unknown", null));
        Assert.assertNull(ContentTypeLookup.findOrDefaultContentType(headers, "/tmp/unknown", null));

        Assert.assertEquals(
                ContentTypeLookup.findOrDefaultContentType(headers, "/tmp/unknown", troff).getMimeType(),
                troff.getMimeType());

        Assert.assertEquals(
                ContentTypeLookup.findOrDefaultContentType(headers, "/tmp/foo.jpeg", troff).getMimeType(),
                "image/jpeg");
        headers.put("Content-Type", "application/x-json-stream; type=directory");
        Assert.assertEquals(
                ContentTypeLookup.findOrDefaultContentType(headers, "/tmp/foo.jpeg", troff).getMimeType(),
                jsonStream.getMimeType());

    }
}