package jwt_test import ( "fmt" "testing" "time" "git.daebt.dev/auth/algo/rs" "git.daebt.dev/auth/jwt" ) var key = `-----BEGIN RSA PRIVATE KEY----- MIIEpAIBAAKCAQEAzIWvl1OtwExnQ3HvoYk6bFRIlcCjzdv1yHazJfr6jxk6w+tC sIWEdtKsAPm3gmmFG+mTuHq+H53sahm6DD9YC5ZQjnvSYkBKv70Zw331/tg9VLbf Jc+gN7kbD3xMQsucYD0973r7l9pEPH4Qw/I+BEKHMxlTmynStgKxnfyO6iPkL5jT zpUXlD4V9xqUoMY/uX3EpGwbJJKFJuphYX3jzJQ++tovQGGep7RgNeMEoWjyAkJ2 yb7tiSWsw7qk6GO2z6NDmnc1UsdSBZ6Vg7BPUp8EINAdX1wbmB0+QH/vp0huM6lS Y6NMBugwptQUe5UCaly9fN4kb26U0qglEoGB6wIDAQABAoIBADU244UgRKkwN/4Y ex0ws37UPz6XrQc3IDBUkjBjqSXqjpvDbsq3Mswn7JEkaFcKVZP5pnHtneJkGMtS flIJeUMqjTNFjGv8Bnb1IOr4rzTr1qlgG5ee+jUFeMECumT2zW1NAfx5p1TPecmz k3EoanJ5TOxCvro0m5q4ALb2q8jHrtfvtqEBrHepeEp3Lyh7m4ZUib+0yWXs0EPC HhF9kLpCy+tVXUPDyLCt4cldTUda/3xeswzmxVRrHkt/idsNuTAi7o1Cx/OfZYMI AzQo8OTh1Bg2DlXKtOX40frIxy3/K77F3ozwV4a3FravUO+wvcQdIyi6KAmNBFS3 9IVA7IECgYEA4x0TAn7vOvazILmg4Es0/gsWlh7RGmNTqVYtj5TfwOviUGeaculR BSsyX8pgaROJKjGDcNzSQQEhHfJXrhNXeMJ0zPUIsJCBmih8oaCpAScWpV+qpdky 1Eb2akEg7XbpqBJJ1jnoEvIhd4feCAN8Gv8vcmdER7HaGdyef4XxlFsCgYEA5okG tbyTtD2cfmYjYsoGqEfGH0Pe9vxc+MBthiPg0f2lpg+YuSPx92ZuJciLNyNWo9qf NFnzbSEFxzomK/Bgq9ujGnbPyLOCadIADM4/njEEPe+IsagDxBgTrCEUJ56W9MLj N+b4d/gnBkK4roDW8gjy7x4MbePByoDfaWtU/bECgYEApn8RCZpe7V4gMdSEIQph fgBI/aL37p10nsbDvegJJRiIoCNjsexj7iMd2eW2SjH9M4Z68smgBfG7AoZASyh4 ztnX4M2eIjq+GHKn86GhZGvwiSoaI12YitC/I2Q9rHipkQJfSQLIpOMHL+bWGg/b 8rqzYO5duyWiW6VGOPzL/tMCgYB3JVSZcrfnzHvn+8PIF9+u80FbAUnn3m/yhAlW 7Y4RGYWWOLNW5FP26DJ/RpFk0tfBYYksllywBwQkflIiHV7pE1/NmqAy+0uog0dR VvscN/sYQ4cjQlGH9GWebY4sF9Ou9lZWmwHJhzAsFSm7zozIlIVxvdbwqGiMz2Qn 6LgJUQKBgQC9H2JGm54wg0YPuDig5LjymUxYJrEiJT0IXz4vy+UEMxw+1EmeD5sm kSqHkwNDp7D+3nik5HzoFVifJAvqFWU73fpvqQlvZSNfVrtq8UvJBIuH7eHkrJrC L8dEn16HWjLX50GlT+9eYyHWtYI4sMdnzz1/JS6PwQRxKlFQN9HJYg== -----END RSA PRIVATE KEY-----` func TestCreate(t *testing.T) { alg, err := rs.NewRS256( rs.WithPEM(nil, []byte(key)), ) if err != nil { t.Fatal(err.Error()) } tm := time.Now() var data = [][]jwt.Option{ { jwt.WithHeaderKeyId([]byte("019451f1-f789-72a6-836d-3bc6146ad76a")), jwt.WithIssuer("https://git.daebt.dev"), jwt.WithAudience("https://0.example.com"), jwt.WithSubject("example:0"), }, { jwt.WithHeaderKeyId([]byte("019451f1-f789-72a6-836d-3bc6146ad76a")), jwt.WithIssuer("https://git.daebt.dev"), jwt.WithAudience("https://1.example.com"), jwt.WithSubject("example:1"), jwt.WithIssuedAt(tm), jwt.WithExpirationTime(tm.Add(time.Hour)), }, { jwt.WithHeaderKeyId([]byte("019451f1-f789-72a6-2911-3bc6146ad76a")), jwt.WithIssuer("https://git.daebt.dev"), jwt.WithAudience("https://2.example.com"), jwt.WithSubject("example:2"), jwt.WithIssuedAt(tm), jwt.WithNotBefore(tm), }, { jwt.WithHeaderKeyId([]byte("019451f1-f789-72a6-2911-3bc6146ad76a")), jwt.WithIssuer("https://git.daebt.dev"), jwt.WithAudience("https://3.example.com"), jwt.WithSubject("example:3"), jwt.WithIssuedAt(tm), jwt.WithNotBefore(tm.Add(time.Minute)), }, { jwt.WithHeaderKeyId([]byte("019451f1-f789-72a6-2911-3bc6146ad76a")), jwt.WithIssuer("https://git.daebt.dev"), jwt.WithAudience("https://4.example.com"), jwt.WithSubject("example:4"), jwt.WithIssuedAt(tm), jwt.WithNotBefore(tm.Add(time.Minute)), jwt.WithExpirationTime(tm.Add(time.Hour)), }, } for _, v := range data { // t.Run(fmt.Sprint(i), func(t *testing.T) { val, err := jwt.New(v...).Sign(alg) if err != nil { t.Fatal(err.Error()) } // t.Log(val) fmt.Printf(`"%s",`, val) // }) } } // func TestJwt(t *testing.T) { // alg, err := rs.NewRS256( // rs.WithGenerateKey(2048), // ) // if err != nil { // t.Fatal(err.Error()) // } // tkn := New( // WithSubject("main-jwt-token"), // ) // str, err := tkn.Sign(alg) // if err != nil { // t.Fatal(err.Error()) // } // tkn, err = Parse(str) // if err != nil { // t.Fatal(err.Error()) // } // if err := tkn.Verify(alg); err != nil { // t.Fatal(err.Error()) // } // tkn.Payload.Range(func(key string, val any) bool { // t.Log(key, val) // return true // }) // }