| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144 | 
							- /*
 
-  * Public Domain Software
 
-  *
 
-  * I (Matthias Ladkau) am the author of the source code in this file.
 
-  * I have placed the source code in this file in the public domain.
 
-  *
 
-  * For further information see: http://creativecommons.org/publicdomain/zero/1.0/
 
-  */
 
- package httputil
 
- import (
 
- 	"bytes"
 
- 	"fmt"
 
- 	"io/ioutil"
 
- 	"net/http"
 
- 	"os"
 
- 	"testing"
 
- )
 
- const InvalidFileName = "**" + string(0x0)
 
- /*
 
- dummyResponse is a dummy object for http response testing
 
- */
 
- type dummyResponse struct {
 
- 	out    *bytes.Buffer
 
- 	header map[string][]string
 
- }
 
- func (dr *dummyResponse) Header() http.Header {
 
- 	return dr.header
 
- }
 
- func (dr *dummyResponse) Write(b []byte) (int, error) {
 
- 	return dr.out.Write(b)
 
- }
 
- func (dr *dummyResponse) WriteHeader(int) {
 
- }
 
- func TestCheckLocalRedirect(t *testing.T) {
 
- 	// Check local redirects
 
- 	if err := CheckLocalRedirect("/foo/bar"); err != nil {
 
- 		t.Error(err)
 
- 		return
 
- 	}
 
- 	if err := CheckLocalRedirect("foo/bar"); err != nil {
 
- 		t.Error(err)
 
- 		return
 
- 	}
 
- 	if err := CheckLocalRedirect("x"); err != nil {
 
- 		t.Error(err)
 
- 		return
 
- 	}
 
- 	// Check absolute redirects
 
- 	if err := CheckLocalRedirect("http://hans.foo/bla"); err == nil || err.Error() != "Redirection URL must not be an absolute URL" {
 
- 		t.Error(err)
 
- 		return
 
- 	}
 
- 	if err := CheckLocalRedirect("file://hans.foo/bla"); err == nil || err.Error() != "Redirection URL must not be an absolute URL" {
 
- 		t.Error(err)
 
- 		return
 
- 	}
 
- 	if err := CheckLocalRedirect("://hans.foo/bla"); err == nil || err.Error() != "parse \"://hans.foo/bla\": missing protocol scheme" {
 
- 		t.Error(err)
 
- 		return
 
- 	}
 
- 	if err := CheckLocalRedirect("https:www.foo.co.uk"); err == nil || err.Error() != "Redirection URL must not be an absolute URL" {
 
- 		t.Error(err)
 
- 		return
 
- 	}
 
- 	if err := CheckLocalRedirect("https:3627733859"); err == nil || err.Error() != "Redirection URL must not be an absolute URL" {
 
- 		t.Error(err)
 
- 		return
 
- 	}
 
- }
 
- func TestSingleFileServer(t *testing.T) {
 
- 	ioutil.WriteFile("foo.txt", []byte("foo test"), 0666)
 
- 	defer os.Remove("foo.txt")
 
- 	sfs := SingleFileServer("foo.txt", nil)
 
- 	dr := &dummyResponse{&bytes.Buffer{}, make(map[string][]string)}
 
- 	sfs.ServeHTTP(dr, nil)
 
- 	if res := fmt.Sprint(dr.header); res != "map[Content-Type:[text/plain; charset=utf-8]]" {
 
- 		t.Error("Unexpected result:", res)
 
- 		return
 
- 	}
 
- 	if res := fmt.Sprint(dr.out); res != "foo test" {
 
- 		t.Error("Unexpected result:", res)
 
- 		return
 
- 	}
 
- 	sfs = SingleFileServer(InvalidFileName, nil)
 
- 	dr = &dummyResponse{&bytes.Buffer{}, make(map[string][]string)}
 
- 	sfs.ServeHTTP(dr, nil)
 
- 	if res := fmt.Sprint(dr.header); res != "map[]" {
 
- 		t.Error("Unexpected result:", res)
 
- 		return
 
- 	}
 
- 	if res := fmt.Sprint(dr.out); res != "Unauthorized\n" {
 
- 		t.Error("Unexpected result:", res)
 
- 		return
 
- 	}
 
- }
 
- func TestRandomFileServer(t *testing.T) {
 
- 	ioutil.WriteFile("foo.txt", []byte("foo test"), 0666)
 
- 	defer os.Remove("foo.txt")
 
- 	rfs := RandomFileServer([]string{"foo.txt", "foo.txt", "foo.txt"}, nil)
 
- 	dr := &dummyResponse{&bytes.Buffer{}, make(map[string][]string)}
 
- 	rfs.ServeHTTP(dr, nil)
 
- 	if res := fmt.Sprint(dr.header); res != "map[Content-Type:[text/plain; charset=utf-8]]" {
 
- 		t.Error("Unexpected result:", res)
 
- 		return
 
- 	}
 
- 	if res := fmt.Sprint(dr.out); res != "foo test" {
 
- 		t.Error("Unexpected result:", res)
 
- 		return
 
- 	}
 
- }
 
 
  |