reprogl

Форк
0
/
securecookie_test.go 
56 строк · 1.1 Кб
1
package session
2

3
import (
4
	"errors"
5
	"fmt"
6
	"testing"
7
)
8

9
func TestSecureCookie(t *testing.T) {
10
	var (
11
		deserialized internalData
12
		err          error
13
	)
14

15
	secureCookie := NewSecureCookie("hash key", "block key")
16
	secureCookie.ignoreExpiration()
17
	for _, value := range testData {
18
		if err = secureCookie.encode(value.data); err != nil {
19
			t.Error(err)
20
		}
21

22
		serialized := secureCookie.Value()
23
		if deserialized, err = secureCookie.decode(serialized); err != nil {
24
			t.Error(err)
25
		}
26

27
		if fmt.Sprintf("%+v", deserialized) != fmt.Sprintf("%+v", value.data) {
28
			t.Errorf("Expected %+v, got %+v.", value.data, deserialized)
29
		}
30
	}
31
}
32

33
func TestInvalidHMAC(t *testing.T) {
34
	var (
35
		err error
36
	)
37

38
	secureCookie := NewSecureCookie("Lorem ipsum...", "dolor sit amet...")
39
	for _, value := range testData {
40
		if err = secureCookie.encode(value.data); err != nil {
41
			t.Error(err)
42
		}
43

44
		raw := []byte(secureCookie.Value())
45
		raw[1] = 'N'
46
		raw[17] = 'u'
47
		serialized := string(raw)
48
		if _, err = secureCookie.decode(serialized); err != nil {
49
			if !errors.Is(err, ErrMacInvalid) {
50
				t.Error(err)
51
			}
52
		} else {
53
			t.Errorf("Expected invalid HMAC for %+v", value.data)
54
		}
55
	}
56
}
57

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.