Skip to content

Instantly share code, notes, and snippets.

// GetReposHandler returns a list of (public) repositories for a given GitHub user
func (a *App) GetReposHandler(w http.ResponseWriter, r *http.Request) {
user := r.FormValue("user")
if user == "" {
http.Error(w, "MISSING_ARG_USER", 400)
return
}
repos, err := a.repos.Get(user)
if err != nil {
@kpurdon
kpurdon / App
Last active April 24, 2016 21:53
type App struct {
repos repos.Client
}
type Client interface {
Get(string) ([]Repo, error)
}
type ReposClient struct{}
func (c ReposClient) Get(user string) ([]Repo, error) {
// call github api
}
type ReposTestClient struct {
Repos []repos.Repo
Err error
}
func (c ReposTestClient) Get(string) ([]repos.Repo, error) {
return c.Repos, c.Err
}
func TestGetReposHandler(t *testing.T) {
assert := assert.New(t)
tests := []struct {
description string
reposClient *ReposTestClient
url string
expectedStatusCode int
expectedBody string
}{
var c = ReposClient{}
func TestGet(t *testing.T) {
assert := assert.New(t)
httpmock.Activate()
defer httpmock.DeactivateAndReset()
tests := []struct {
description string
package main
import (
"log"
"net/http"
"github.com/gorilla/context"
)
var (
// GetTestHandler returns a http.HandlerFunc for testing http middleware
func GetTestHandler() http.HandlerFunc {
fn := func(rw http.ResponseWriter, req *http.Request) {
panic("test entered test handler, this should not happen")
}
return http.HandlerFunc(fn)
}
func TestAuth(t *testing.T) {
assert := assert.New(t)
tests := []struct {
description string
url string
expectedBody string
expectedCode int
}{
{
@kpurdon
kpurdon / main.go
Created June 30, 2017 18:10
golang graceful server shutdown example
package main
import (
"context"
"flag"
"fmt"
"log"
"net/http"
"os"
"os/signal"