Added documentation of the OpenID Connect and version endpoints to /api/. Added some tests.

- Legacy-Id: 18487
This commit is contained in:
Henrik Levkowetz 2020-09-11 14:13:45 +00:00
parent ac31ea1f5d
commit 724e982a1c
4 changed files with 53 additions and 1 deletions

View file

@ -21,6 +21,7 @@ from tastypie.test import ResourceTestCaseMixin
import debug # pyflakes:ignore
import ietf
from ietf.group.factories import RoleFactory
from ietf.meeting.factories import MeetingFactory, SessionFactory
from ietf.meeting.test_data import make_meeting_test_data
@ -65,6 +66,11 @@ class CustomApiTests(TestCase):
r = self.client.get(url)
self.assertContains(r, 'The datatracker API', status_code=200)
def test_api_openid_issuer(self):
url = urlreverse('ietf.api.urls.oidc_issuer')
r = self.client.get(url)
self.assertContains(r, 'OpenID Connect Issuer', status_code=200)
def test_api_set_session_video_url(self):
url = urlreverse('ietf.meeting.views.api_set_session_video_url')
recmanrole = RoleFactory(group__type_id='ietf', name_id='recman')
@ -355,6 +361,15 @@ class CustomApiTests(TestCase):
missing_fields = [ f.strip() for f in fields.split(',') ]
self.assertEqual(set(missing_fields), set(drop_fields))
def test_api_version(self):
url = urlreverse('ietf.api.views.version')
r = self.client.get(url)
data = r.json()
self.assertEqual(data['version'], ietf.__version__+ietf.__patch__)
self.assertIn(data['date'], ietf.__date__)
class TastypieApiTestCase(ResourceTestCaseMixin, TestCase):
def __init__(self, *args, **kwargs):
self.apps = {}

View file

@ -261,6 +261,24 @@
</pre>
</div>
<h3 id="openid-connect" class="anchor-target">OpenID Connect</h3>
<div>
<p>
The datatracker supports <a href="https://openid.net/connect/">OpenID Connect</a>, but
not dynamic registration. The OpenID Connect Issuer is
<code> {{ settings.IDTRACKER_BASE_URL }}{% url 'ietf.api.urls.oidc_issuer' %} </code>
</p>
</div>
<h3 id="datatracker-version" class="anchor-target">Datatracker Version</h3>
<div>
<p>
The datatracker version and release/patch date is available as a JSON blob at
<code><a href="{% url 'ietf.api.views.version' %}">{% url 'ietf.api.views.version' %}</a></code>.
</p>
</div>
<h3 id="personal-api-keys" class="anchor-target">Personal API Keys</h3>
<div>
<p>
@ -346,15 +364,17 @@ payload = jwstoken.payload
<div class="col-md-1 hidden-print bs-docs-sidebar" id="affix">
<ul class="nav nav-pills nav-stacked small fixed" data-spy="affix">
<li><a href="#framework">Framework API</a></li>
<li><a href="#framework-documents">&nbsp; Framework API: Documents</a></li>
<li><a href="#simplified-documents">Simplified documents API</a></li>
<li><a href="#iesg-position-api">IESG ballot position API</a></li>
<li><a href="#session-video-url-api">Set session video URL API</a></li>
<li><a href="#openid-connect">OpenID Connect</a></li>
<li><a href="#datatracker-version">Datatracker Version</a></li>
<li><a href="#personal-api-keys">Personal API keys</a></li>
<li><a href="#signing-keys">Signing keys</a></li>
</ul>
</div>

View file

@ -0,0 +1,17 @@
{# Copyright The IETF Trust 2007, All Rights Reserved #}
{% extends "base.html" %}
{% block title %}OpenID Connect Issuer{% endblock %}
{% block content %}
<h2>OpenID Connect Issuer</h2>
<p>
This is the IETF Datatracker's OpenID Connect Issuer endpoint.
The OpenID Connect provider info is at
<code>
<a href="{% url 'oidc_provider:provider-info' %}">{% url 'oidc_provider:provider-info' %}"</a>
</code>
</p>
{% endblock %}

Binary file not shown.