manual_session_test.go 3.09 KB
Newer Older
1
2
3
package irmaclient

import (
Koen van Ingen's avatar
Koen van Ingen committed
4
	"fmt"
5
6
7

	"github.com/go-errors/errors"

Koen van Ingen's avatar
Koen van Ingen committed
8
	"testing"
9
10

	"github.com/privacybydesign/irmago"
11
12
13
14
15
)

type ManualSessionHandler struct {
	permissionHandler PermissionHandler
	pinHandler        PinHandler
Koen van Ingen's avatar
Koen van Ingen committed
16
17
	t                 *testing.T
	c                 chan *irma.SessionError
18
19
20
21
22
}

var client *Client

func TestManualSession(t *testing.T) {
23
24
	client = parseStorage(t)

25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
	request := "{\"nonce\": 0, \"message\":\"I owe you everything\",\"messageType\":\"STRING\",\"content\":[{\"label\":\"Student number (RU)\",\"attributes\":[\"irma-demo.RU.studentCard.studentID\"]}]}"

	channel := make(chan *irma.SessionError)
	manualSessionHandler := ManualSessionHandler{t: t, c: channel}

	client.NewManualSession(request, &manualSessionHandler)

	teardown(t)

	if err := <-channel; err != nil {
		t.Fatal(*err)
	}
}

func TestManualKeyShareSession(t *testing.T) {
40
41
	client = parseStorage(t)

42
43
44
45
46
47
48
49
50
51
52
53
54
55
	keyshareRequest := "{\"nonce\": 0, \"message\":\"I owe you everything\",\"messageType\":\"STRING\",\"content\":[{\"label\":\"Student number (RU)\",\"attributes\":[\"test.test.mijnirma.email\"]}]}"

	channel := make(chan *irma.SessionError)
	manualSessionHandler := ManualSessionHandler{t: t, c: channel}

	client.NewManualSession(keyshareRequest, &manualSessionHandler)

	teardown(t)

	if err := <-channel; err != nil {
		t.Fatal(*err)
	}
}

56
func (sh *ManualSessionHandler) Success(irmaAction irma.Action, result string) {
57
58
	sh.c <- nil
}
59
func (sh *ManualSessionHandler) UnsatisfiableRequest(irmaAction irma.Action, serverName string, missingAttributes irma.AttributeDisjunctionList) {
Koen van Ingen's avatar
Koen van Ingen committed
60
61
	sh.t.Fail()
}
62
63

// Done in irma bridge?
Koen van Ingen's avatar
Koen van Ingen committed
64
func (sh *ManualSessionHandler) StatusUpdate(irmaAction irma.Action, status irma.Status) {}
65
66
67
68
69
70
71
72
func (sh *ManualSessionHandler) RequestPin(remainingAttempts int, ph PinHandler) {
	ph(true, "12345")
}
func (sh *ManualSessionHandler) RequestSignaturePermission(request irma.SignatureRequest, requesterName string, ph PermissionHandler) {
	c := irma.DisclosureChoice{request.Candidates[0]}
	ph(true, &c)
}

73
// These handlers should not be called, fail test if they are called
74
75
76
func (sh *ManualSessionHandler) Cancelled(irmaAction irma.Action) {
	sh.c <- &irma.SessionError{Err: errors.New("Session was cancelled")}
}
Koen van Ingen's avatar
Koen van Ingen committed
77
func (sh *ManualSessionHandler) MissingKeyshareEnrollment(manager irma.SchemeManagerIdentifier) {
78
	sh.c <- &irma.SessionError{Err: errors.Errorf("Missing keyshare server %s", manager.String())}
Koen van Ingen's avatar
Koen van Ingen committed
79
80
}
func (sh *ManualSessionHandler) RequestIssuancePermission(request irma.IssuanceRequest, issuerName string, ph PermissionHandler) {
81
	sh.c <- &irma.SessionError{Err: errors.New("Unexpected session type")}
Koen van Ingen's avatar
Koen van Ingen committed
82
83
}
func (sh *ManualSessionHandler) RequestSchemeManagerPermission(manager *irma.SchemeManager, callback func(proceed bool)) {
84
	sh.c <- &irma.SessionError{Err: errors.New("Unexpected session type")}
Koen van Ingen's avatar
Koen van Ingen committed
85
86
}
func (sh *ManualSessionHandler) RequestVerificationPermission(request irma.DisclosureRequest, verifierName string, ph PermissionHandler) {
87
	sh.c <- &irma.SessionError{Err: errors.New("Unexpected session type")}
Koen van Ingen's avatar
Koen van Ingen committed
88
}
89
90
func (sh *ManualSessionHandler) Failure(irmaAction irma.Action, err *irma.SessionError) {
	fmt.Println(err.Err)
91
	sh.c <- err
92
}