annotate cmd/tokenserver/main.go @ 196:b67208d82543

Make test output more comprehensive Running all tests in one transaction ensures the final output tells about any failing test, not just in the last transaction (i.e. test script). The price is that no traces of the tests are left in the database because we have to rollback in order to have no left-over test roles in the cluster.
author Tom Gottfried <tom@intevation.de>
date Fri, 20 Jul 2018 18:31:45 +0200
parents fe3a88f00b0a
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
0e1d0c00bc74 Useless webserver to test go-gettablity.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1 package main
0e1d0c00bc74 Useless webserver to test go-gettablity.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
2
0e1d0c00bc74 Useless webserver to test go-gettablity.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
3 import (
151
3349bfc2a047 Shutdown server gracefully.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 134
diff changeset
4 "context"
1
0e1d0c00bc74 Useless webserver to test go-gettablity.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
5 "flag"
0e1d0c00bc74 Useless webserver to test go-gettablity.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
6 "fmt"
0e1d0c00bc74 Useless webserver to test go-gettablity.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
7 "log"
0e1d0c00bc74 Useless webserver to test go-gettablity.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
8 "net/http"
151
3349bfc2a047 Shutdown server gracefully.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 134
diff changeset
9 "os"
3349bfc2a047 Shutdown server gracefully.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 134
diff changeset
10 "os/signal"
3
1597506a2241 merge with vue-cli
Thomas Junk <thomas.junk@intevation.de>
parents: 2
diff changeset
11 "path/filepath"
151
3349bfc2a047 Shutdown server gracefully.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 134
diff changeset
12 "syscall"
2
9c6f68a8e8b2 Demo generation of tokens.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1
diff changeset
13
125
a98a282f00e1 Wired token generator and connection pool to token server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 15
diff changeset
14 "gemma.intevation.de/gemma/auth"
1
0e1d0c00bc74 Useless webserver to test go-gettablity.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
15 )
0e1d0c00bc74 Useless webserver to test go-gettablity.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
16
128
441a8ee637c5 Added claims checker + example.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 127
diff changeset
17 func sysAdmin(rw http.ResponseWriter, req *http.Request) {
134
0c56c56a1c44 Removed the JWT layer from the session management.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 128
diff changeset
18 session, _ := auth.GetSession(req)
128
441a8ee637c5 Added claims checker + example.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 127
diff changeset
19 rw.Header().Set("Content-Type", "text/plain")
134
0c56c56a1c44 Removed the JWT layer from the session management.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 128
diff changeset
20 fmt.Fprintf(rw, "%s is a sys_admin\n", session.User)
128
441a8ee637c5 Added claims checker + example.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 127
diff changeset
21 }
441a8ee637c5 Added claims checker + example.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 127
diff changeset
22
1
0e1d0c00bc74 Useless webserver to test go-gettablity.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
23 func main() {
3
1597506a2241 merge with vue-cli
Thomas Junk <thomas.junk@intevation.de>
parents: 2
diff changeset
24 port := flag.Int("port", 8000, "port to listen at.")
1
0e1d0c00bc74 Useless webserver to test go-gettablity.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
25 host := flag.String("host", "localhost", "host to listen at.")
0e1d0c00bc74 Useless webserver to test go-gettablity.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
26 flag.Parse()
3
1597506a2241 merge with vue-cli
Thomas Junk <thomas.junk@intevation.de>
parents: 2
diff changeset
27 p, _ := filepath.Abs("./web")
1
0e1d0c00bc74 Useless webserver to test go-gettablity.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
28 mux := http.NewServeMux()
3
1597506a2241 merge with vue-cli
Thomas Junk <thomas.junk@intevation.de>
parents: 2
diff changeset
29 mux.Handle("/", http.StripPrefix("/", http.FileServer(http.Dir(p))))
15
05d828374256 Reverted to previous setup of /api prefixing only the token route
Thomas Junk <thomas.junk@intevation.de>
parents: 14
diff changeset
30 mux.HandleFunc("/api/token", token)
134
0c56c56a1c44 Removed the JWT layer from the session management.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 128
diff changeset
31 mux.Handle("/api/logout", auth.SessionMiddleware(http.HandlerFunc(token)))
0c56c56a1c44 Removed the JWT layer from the session management.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 128
diff changeset
32 mux.Handle("/api/renew", auth.SessionMiddleware(http.HandlerFunc(renew)))
128
441a8ee637c5 Added claims checker + example.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 127
diff changeset
33 mux.Handle("/api/sys_admin",
134
0c56c56a1c44 Removed the JWT layer from the session management.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 128
diff changeset
34 auth.SessionMiddleware(
0c56c56a1c44 Removed the JWT layer from the session management.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 128
diff changeset
35 auth.SessionChecker(http.HandlerFunc(sysAdmin), auth.HasRole("sys_admin"))))
186
fe3a88f00b0a Experimental user creation support.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 151
diff changeset
36 mux.Handle("/api/create_user",
fe3a88f00b0a Experimental user creation support.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 151
diff changeset
37 auth.SessionMiddleware(
fe3a88f00b0a Experimental user creation support.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 151
diff changeset
38 auth.SessionChecker(http.HandlerFunc(createUser), auth.HasRole("sys_admin"))))
1
0e1d0c00bc74 Useless webserver to test go-gettablity.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
39
0e1d0c00bc74 Useless webserver to test go-gettablity.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
40 addr := fmt.Sprintf("%s:%d", *host, *port)
151
3349bfc2a047 Shutdown server gracefully.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 134
diff changeset
41
3349bfc2a047 Shutdown server gracefully.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 134
diff changeset
42 server := http.Server{Addr: addr, Handler: mux}
3349bfc2a047 Shutdown server gracefully.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 134
diff changeset
43
3349bfc2a047 Shutdown server gracefully.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 134
diff changeset
44 done := make(chan error)
3349bfc2a047 Shutdown server gracefully.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 134
diff changeset
45
3349bfc2a047 Shutdown server gracefully.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 134
diff changeset
46 go func() {
3349bfc2a047 Shutdown server gracefully.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 134
diff changeset
47 defer close(done)
3349bfc2a047 Shutdown server gracefully.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 134
diff changeset
48 done <- server.ListenAndServe()
3349bfc2a047 Shutdown server gracefully.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 134
diff changeset
49 }()
3349bfc2a047 Shutdown server gracefully.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 134
diff changeset
50
3349bfc2a047 Shutdown server gracefully.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 134
diff changeset
51 sigChan := make(chan os.Signal)
3349bfc2a047 Shutdown server gracefully.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 134
diff changeset
52 signal.Notify(sigChan, os.Interrupt, os.Kill, syscall.SIGTERM)
3349bfc2a047 Shutdown server gracefully.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 134
diff changeset
53
3349bfc2a047 Shutdown server gracefully.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 134
diff changeset
54 select {
3349bfc2a047 Shutdown server gracefully.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 134
diff changeset
55 case err := <-done:
3349bfc2a047 Shutdown server gracefully.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 134
diff changeset
56 if err != nil && err != http.ErrServerClosed {
3349bfc2a047 Shutdown server gracefully.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 134
diff changeset
57 log.Fatalf("error: %v\n", err)
3349bfc2a047 Shutdown server gracefully.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 134
diff changeset
58 }
3349bfc2a047 Shutdown server gracefully.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 134
diff changeset
59 case <-sigChan:
3349bfc2a047 Shutdown server gracefully.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 134
diff changeset
60 }
3349bfc2a047 Shutdown server gracefully.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 134
diff changeset
61
3349bfc2a047 Shutdown server gracefully.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 134
diff changeset
62 server.Shutdown(context.Background())
3349bfc2a047 Shutdown server gracefully.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 134
diff changeset
63
3349bfc2a047 Shutdown server gracefully.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 134
diff changeset
64 <-done
3349bfc2a047 Shutdown server gracefully.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 134
diff changeset
65
3349bfc2a047 Shutdown server gracefully.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 134
diff changeset
66 if err := auth.ConnPool.Shutdown(); err != nil {
3349bfc2a047 Shutdown server gracefully.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 134
diff changeset
67 log.Fatalf("error: %v\n", err)
3349bfc2a047 Shutdown server gracefully.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 134
diff changeset
68 }
1
0e1d0c00bc74 Useless webserver to test go-gettablity.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
69 }