...

Source file src/github.com/dsoprea/go-utility/v2/data/mime_test.go

Documentation: github.com/dsoprea/go-utility/v2/data

     1  package ridata
     2  
     3  import (
     4  	"bytes"
     5  	"testing"
     6  
     7  	"encoding/hex"
     8  
     9  	"github.com/dsoprea/go-logging"
    10  	"github.com/dsoprea/go-utility/v2/filesystem"
    11  )
    12  
    13  func TestGetMimetypeFromContent(t *testing.T) {
    14  	raw := "ffd8ffe000104a46494600010101004800480000ffe1001845786966000049492a00080000000000000000000000ffed004850686f746f73686f7020332e30003842494d040400000000000f1c015a00031b25471c020000020002003842494d0425000000000010fce11f89c8b7c9782f346234075877ebffdb0043000403030403030404030405040405060a07060606060d090a080a0f0d10100f0d0f0e11131814111217120e0f151c151719191b1b1b10141d1f1d1a1f181a1b1affdb0043010405050605060c07070c1a110f111a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1affc20011080313057803012200021101031101ffc4001c0000000701010000000000000000000000000102030405060708ffc4001b01010101010101010100000000000000000001020304050607ffda000c03010002100310000001d2b6b73c7eb94fa55e6f4d25cd2683a48d16533c6cc4854e95ea42dcdaafb5abd490c496196c386c4427c544789d582b52ed4224b4a4971329a8094a8f429db0b49d5074e7c460f7daeebcb8a1f4da3edcf1e57755be6c2907a1181000140c800cca12879c21aa63234b5245bb1d79932656ab17b0f60f244ee4f638e4bd4bad9000eb800000000000000085a21600a000000000000000057c5833cb3957176be558"
    15  
    16  	buffer, err := hex.DecodeString(raw)
    17  	log.PanicIf(err)
    18  
    19  	b := bytes.NewBuffer(buffer)
    20  
    21  	mimetype, err := GetMimetypeFromContent(b, 0)
    22  	log.PanicIf(err)
    23  
    24  	if mimetype != "image/jpeg" {
    25  		t.Fatalf("Mime-type not correct: [%s]", mimetype)
    26  	}
    27  }
    28  
    29  func TestGetMimetypeFromContent__ShortData_Error(t *testing.T) {
    30  	raw := "ffd8ffe000104a46494600010101004800480000ffe1001845786966000049492a00080000000000000000000000ffed004850686f746f73686f7020332e30003842494d040400000000000f1c015a00031b25471c020000020002003842494d0425000000000010fce11f89c8b7c9782f346234075877ebffdb0043000403030403030404030405040405060a07060606060d090a080a0f0d10100f0d0f0e11131814111217120e0f151c151719191b1b1b10141d1f1d1a1f181a1b1affdb0043010405050605060c07070c1a110f111a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1affc20011080313057803012200021101031101ffc4001c0000000701010000000000000000000000000102030405060708ffc4001b01010101010101010100000000000000000001020304050607ffda000c03010002100310000001d2b6b73c7eb94fa55e6f4d25cd2683a48d16533c6cc4854e95ea42dcdaafb5abd490c496196c386c4427c544789d582b52ed4224b4a4971329a8094a8f429db0b49d5074e7c460f7daeebcb8a1f4da3edcf1e57755be6c2907a1181000140c800cca12879c21aa63234b5245bb1d79932656ab17b0f60f244ee4f638e4bd4bad9000eb800000000000000085a21600a000000000000000057c5833cb3957176be558"
    31  
    32  	buffer, err := hex.DecodeString(raw)
    33  	log.PanicIf(err)
    34  
    35  	buffer = buffer[:256]
    36  
    37  	b := rifs.NewSeekableBufferWithBytes(buffer)
    38  
    39  	_, err = GetMimetypeFromContent(b, 0)
    40  	if err == nil {
    41  		t.Fatalf("Expected error for not enough data.")
    42  	} else if err.Error() != "unexpected EOF" {
    43  		log.Panic(err)
    44  	}
    45  }
    46  
    47  func TestGetMimetypeFromContent__ShortData_Success(t *testing.T) {
    48  	raw := "ffd8ffe000104a46494600010101004800480000ffe1001845786966000049492a00080000000000000000000000ffed004850686f746f73686f7020332e30003842494d040400000000000f1c015a00031b25471c020000020002003842494d0425000000000010fce11f89c8b7c9782f346234075877ebffdb0043000403030403030404030405040405060a07060606060d090a080a0f0d10100f0d0f0e11131814111217120e0f151c151719191b1b1b10141d1f1d1a1f181a1b1affdb0043010405050605060c07070c1a110f111a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1affc20011080313057803012200021101031101ffc4001c0000000701010000000000000000000000000102030405060708ffc4001b01010101010101010100000000000000000001020304050607ffda000c03010002100310000001d2b6b73c7eb94fa55e6f4d25cd2683a48d16533c6cc4854e95ea42dcdaafb5abd490c496196c386c4427c544789d582b52ed4224b4a4971329a8094a8f429db0b49d5074e7c460f7daeebcb8a1f4da3edcf1e57755be6c2907a1181000140c800cca12879c21aa63234b5245bb1d79932656ab17b0f60f244ee4f638e4bd4bad9000eb800000000000000085a21600a000000000000000057c5833cb3957176be558"
    49  
    50  	buffer, err := hex.DecodeString(raw)
    51  	log.PanicIf(err)
    52  
    53  	buffer = buffer[:256]
    54  
    55  	b := rifs.NewSeekableBufferWithBytes(buffer)
    56  
    57  	mimetype, err := GetMimetypeFromContent(b, int64(len(buffer)))
    58  	log.PanicIf(err)
    59  
    60  	if mimetype != "image/jpeg" {
    61  		t.Fatalf("Mime-type not correct: [%s]", mimetype)
    62  	}
    63  }
    64  

View as plain text