func TestCreateGetFindDelete(t *testing.T) { require.Nil(t, store.Create(connection)) c, err := store.Get(connection.ID) require.Nil(t, err) require.Equal(t, connection, c) c, err = store.FindByRemoteSubject("google", "peterson") require.Nil(t, err) require.Equal(t, connection, c) cs, err := store.FindAllByLocalSubject("peter") require.Nil(t, err) require.Equal(t, connection, cs[0]) require.Nil(t, store.Delete(connection.ID)) _, err = store.Get(connection.ID) require.NotNil(t, err) }
func TestCreateDuplicatesFails(t *testing.T) { require.Nil(t, store.Create(connection)) require.NotNil(t, store.Create(connection)) require.Nil(t, store.Delete(connection.ID)) }
func TestSignAndVerify(t *testing.T) { for i, c := range []struct { private []byte public []byte header map[string]interface{} claims map[string]interface{} valid bool signOk bool }{ { []byte(""), []byte(TestCertificates[1][1]), map[string]interface{}{"foo": "bar"}, map[string]interface{}{"nbf": time.Now().Add(time.Hour)}, false, false, }, { []byte(TestCertificates[0][1]), []byte(""), map[string]interface{}{"foo": "bar"}, map[string]interface{}{"nbf": time.Now().Add(time.Hour)}, false, true, }, { []byte(TestCertificates[0][1]), []byte(TestCertificates[1][1]), map[string]interface{}{"foo": "bar"}, map[string]interface{}{"nbf": time.Now().Add(-time.Hour)}, false, true, }, { []byte(TestCertificates[0][1]), []byte(TestCertificates[1][1]), map[string]interface{}{"foo": "bar"}, map[string]interface{}{"nbf": time.Now().Add(time.Hour)}, false, true, }, { []byte(TestCertificates[0][1]), []byte(TestCertificates[1][1]), map[string]interface{}{"foo": "bar"}, map[string]interface{}{"exp": time.Now().Add(-time.Hour)}, false, true, }, { []byte(TestCertificates[0][1]), []byte(TestCertificates[1][1]), map[string]interface{}{"foo": "bar"}, map[string]interface{}{ "nbf": time.Now().Add(-time.Hour), "iat": time.Now().Add(-time.Hour), "exp": time.Now().Add(time.Hour), }, true, true, }, { []byte(TestCertificates[0][1]), []byte(TestCertificates[1][1]), map[string]interface{}{"foo": "bar"}, map[string]interface{}{ "nbf": time.Now().Add(-time.Hour), }, false, true, }, { []byte(TestCertificates[0][1]), []byte(TestCertificates[1][1]), map[string]interface{}{"foo": "bar"}, map[string]interface{}{ "exp": time.Now().Add(time.Hour), }, true, true, }, { []byte(TestCertificates[0][1]), []byte(TestCertificates[1][1]), map[string]interface{}{"foo": "bar"}, map[string]interface{}{}, false, true, }, } { j := New(c.private, c.public) data, err := j.SignToken(c.claims, c.header) if c.signOk { require.Nil(t, err, "Case %d", i) } else { require.NotNil(t, err, "Case %d", i) } tok, err := j.VerifyToken([]byte(data)) if c.valid { require.Nil(t, err, "Case %d", i) require.Equal(t, c.valid, tok.Valid, "Case %d", i) } else { require.NotNil(t, err, "Case %d", i) } } }