func newTestRequestWithParams(hndl *handler, idp, subIdp idpdb.Element, params, subParams map[string]interface{}) (*http.Request, error) { r, err := http.NewRequest("GET", "http://localhost/coop", nil) if err != nil { return nil, erro.Wrap(err) } codTok := jwt.New() codTok.SetHeader("alg", test_idpSigAlg) codTok.SetClaim("iss", idp.Id()) codTok.SetClaim("sub", test_cod) codTok.SetClaim("aud", audience.New(hndl.selfId)) codTok.SetClaim("from_client", test_frTa.Id()) codTok.SetClaim("user_tag", test_acntTag) codTok.SetClaim("user_tags", []string{test_subAcnt1Tag}) codTok.SetClaim("ref_hash", test_refHash) for k, v := range params { codTok.SetClaim(k, v) } if err := codTok.Sign(idp.Keys()); err != nil { return nil, erro.Wrap(err) } data, err := codTok.Encode() if err != nil { return nil, erro.Wrap(err) } r.Header.Set("X-Edo-Code-Tokens", string(data)) subCodTok := jwt.New() subCodTok.SetHeader("alg", test_subIdpSigAlg) subCodTok.SetClaim("iss", subIdp.Id()) subCodTok.SetClaim("sub", test_subCod) subCodTok.SetClaim("aud", audience.New(hndl.selfId)) subCodTok.SetClaim("user_tags", []string{test_subAcnt2Tag}) subCodTok.SetClaim("ref_hash", test_refHash) for k, v := range subParams { subCodTok.SetClaim(k, v) } if err := subCodTok.Sign(subIdp.Keys()); err != nil { return nil, erro.Wrap(err) } subData, err := subCodTok.Encode() if err != nil { return nil, erro.Wrap(err) } r.Header.Add("X-Edo-Code-Tokens", string(subData)) return r, nil }
func newTestMainIdpResponseWithParams(hndl *handler, idp idpdb.Element, params, idsTokParams map[string]interface{}) (status int, header http.Header, body []byte, err error) { now := time.Now() idsTok := jwt.New() idsTok.SetHeader("alg", test_idpSigAlg) idsTok.SetClaim("iss", idp.Id()) idsTok.SetClaim("sub", test_frTa.Id()) idsTok.SetClaim("aud", audience.New(hndl.selfId)) idsTok.SetClaim("exp", now.Add(time.Minute).Unix()) idsTok.SetClaim("iat", now.Unix()) idsTok.SetClaim("ids", map[string]map[string]interface{}{ test_acntTag: { "sub": test_acntId, "email": test_acntEmail, }, test_subAcnt1Tag: { "sub": test_subAcnt1Id, "email": test_subAcnt1Email, }, }) for k, v := range idsTokParams { idsTok.SetClaim(k, v) } if err := idsTok.Sign(idp.Keys()); err != nil { return 0, nil, nil, erro.Wrap(err) } data, err := idsTok.Encode() if err != nil { return 0, nil, nil, erro.Wrap(err) } m := map[string]interface{}{ "access_token": test_tok, "token_type": "Bearer", "expires_in": 1234, "scope": "openid email", "ids_token": string(data), } for k, v := range params { if v == nil { delete(m, k) } else { m[k] = v } } body, err = json.Marshal(m) if err != nil { return 0, nil, nil, erro.Wrap(err) } return http.StatusOK, http.Header{"Content-Type": {"application/json"}}, body, nil }