(t *testing.T)
| 45 | var ignoreDefault = []string{"id", "schema_url", "state_changed_at", "created_at", "updated_at"} |
| 46 | |
| 47 | func TestHandler(t *testing.T) { |
| 48 | t.Parallel() |
| 49 | |
| 50 | _, reg := pkg.NewFastRegistryWithMocks(t, |
| 51 | configx.WithValues(testhelpers.IdentitySchemasConfig(map[string]string{ |
| 52 | "default": "file://./stub/identity.schema.json", |
| 53 | "customer": "file://./stub/handler/customer.schema.json", |
| 54 | "multiple_emails": "file://./stub/handler/multiple_emails.schema.json", |
| 55 | "employee": "file://./stub/handler/employee.schema.json", |
| 56 | })), |
| 57 | ) |
| 58 | |
| 59 | // Start kratos server |
| 60 | publicTS, adminTS := testhelpers.NewKratosServerWithCSRF(t, reg) |
| 61 | |
| 62 | mockServerURL := urlx.ParseOrPanic(publicTS.URL) |
| 63 | defaultSchemaExternalURL := (&schema.Schema{ID: "default"}).SchemaURL(mockServerURL).String() |
| 64 | |
| 65 | getFull := func(t *testing.T, base *httptest.Server, href string, expectCode int) (gjson.Result, *http.Response) { |
| 66 | t.Helper() |
| 67 | res, err := base.Client().Get(base.URL + href) |
| 68 | require.NoError(t, err) |
| 69 | body, err := io.ReadAll(res.Body) |
| 70 | require.NoError(t, err) |
| 71 | require.NoError(t, res.Body.Close()) |
| 72 | |
| 73 | require.EqualValuesf(t, expectCode, res.StatusCode, "%s", body) |
| 74 | return gjson.ParseBytes(body), res |
| 75 | } |
| 76 | |
| 77 | get := func(t *testing.T, base *httptest.Server, href string, expectCode int) gjson.Result { |
| 78 | t.Helper() |
| 79 | res, _ := getFull(t, base, href, expectCode) |
| 80 | return res |
| 81 | } |
| 82 | |
| 83 | remove := func(t *testing.T, base *httptest.Server, href string, expectCode int) { |
| 84 | t.Helper() |
| 85 | req, err := http.NewRequest("DELETE", base.URL+href, nil) |
| 86 | require.NoError(t, err) |
| 87 | |
| 88 | res, err := base.Client().Do(req) |
| 89 | require.NoError(t, err) |
| 90 | defer func() { _ = res.Body.Close() }() |
| 91 | |
| 92 | require.EqualValues(t, expectCode, res.StatusCode, "%s", ioutilx.MustReadAll(res.Body)) |
| 93 | } |
| 94 | |
| 95 | send := func(t *testing.T, base *httptest.Server, method, href string, expectCode int, send interface{}) gjson.Result { |
| 96 | t.Helper() |
| 97 | var b bytes.Buffer |
| 98 | switch raw := send.(type) { |
| 99 | case json.RawMessage: |
| 100 | b = *bytes.NewBuffer(raw) |
| 101 | default: |
| 102 | if send != nil { |
| 103 | require.NoError(t, json.NewEncoder(&b).Encode(send)) |
| 104 | } |
nothing calls this directly
no test coverage detected