Skip to content

Commit 6ddd413

Browse files
committed
chore(tests/cas): add fixtures
1 parent 1228830 commit 6ddd413

File tree

5 files changed

+556
-0
lines changed

5 files changed

+556
-0
lines changed

tests/cas/2fchoice.html

Lines changed: 172 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,172 @@
1+
<!DOCTYPE html>
2+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
3+
<head>
4+
<title trspan="authPortal">Authentication portal</title>
5+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
6+
<meta http-equiv="Content-Script-Type" content="text/javascript" />
7+
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
8+
<meta http-equiv="Pragma" content="no-cache" />
9+
<meta http-equiv="Expires" content="0" />
10+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
11+
<meta http-equiv="X-UA-Compatible" content="IE=edge">
12+
<link rel="stylesheet" type="text/css" href="/static/bwr/bootstrap/dist/css/bootstrap.min.css" />
13+
<link rel="stylesheet" type="text/css" href="/static/bwr/font-awesome/css/font-awesome.min.css" />
14+
<link rel="stylesheet" type="text/css" href="/static/unilim/css/styles.css" />
15+
<link rel="stylesheet" type="text/css" href="/portal.css" />
16+
17+
<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
18+
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
19+
<!--[if lt IE 9]>
20+
<script type="text/javascript" src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
21+
<script type="text/javascript" src="https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js"></script>
22+
<![endif]-->
23+
<link href="/static/unilim/favicon.png" rel="icon" type="image/vnd.microsoft.icon" sizes="16x16 32x32 48x48 64x64 128x128" />
24+
<link href="/static/unilim/favicon.png" rel="shortcut icon" type="image/vnd.microsoft.icon" sizes="16x16 32x32 48x48 64x64 128x128" />
25+
26+
<!-- Load javascript common to all skins -->
27+
<script type="text/javascript" src="/static/bwr/jquery/dist/jquery.min.js?v=xiahbXUP"></script>
28+
<script type="text/javascript" src="/static/bwr/jquery-ui/jquery-ui.min.js?v=xiahbXUP"></script>
29+
<script type="text/javascript" src="/static/bwr/jquery.cookie/jquery.cookie.min.js?v=xiahbXUP"></script>
30+
31+
32+
33+
<script type="application/init">
34+
{
35+
"choicetab":"",
36+
"language": "en",
37+
"newwindow":0,
38+
"appslistorder":"",
39+
"activeTimer":0,
40+
"pingInterval":0,
41+
"trOver":{"en":{"PE0":"Login or password issue","PE4":"Get Unilim account","anotherInformation":"Need help ?"},"fr":{"PE0":"Identifiant ou mot de passe perdu ?","PE4":"Activer mon compte Unilim","anotherInformation":"Besoin d'aide ?"},"all":{}},
42+
"enablePasswordDisplay":0,
43+
"dontStorePassword":0,
44+
"scrollTop":400,
45+
"floatingCategory":"",
46+
"sameSite":"Lax",
47+
"cookieSecure":1
48+
}
49+
</script>
50+
51+
52+
<script type="text/javascript" src="/static/unilim/js/skin.min.js"></script>
53+
<script type="text/javascript" src="/static/common/js/portal.min.js"></script>
54+
<script type="text/javascript" src="/static/bwr/bootstrap/dist/js/bootstrap.min.js"></script>
55+
56+
<!-- Custom <head> markups, like CSS, js, etc. -->
57+
<!-- <link rel="stylesheet" href="/static/unilim/css/bootstrap.min.css" rel="stylesheet"> -->
58+
<!-- <link rel="stylesheet" href="/static/unilim/css/font-awesome.min.css"> -->
59+
<link rel="stylesheet" type="text/css" href="/static/unilim/icons/style.css" />
60+
<link rel="stylesheet" type="text/css" href="/static/unilim/css/material-dashboard.css" />
61+
<link rel="stylesheet" type="text/css" href="/static/unilim/css/custom.css" />
62+
63+
</head>
64+
<body>
65+
<div id="wrap">
66+
<div id="header"> <!-- Custom HTML header -->
67+
<!--
68+
<img src="/static/logo-universite-1.png" class="img-fluid rounded mx-auto d-block" />
69+
-->
70+
<nav class="navbar navbar-expand-lg navbar-transparent navbar-absolute fixed-top ">
71+
<div class="container-fluid">
72+
<div class="collapse navbar-collapse justify-content-end">
73+
<ul class="navbar-nav ul-top-menu">
74+
<!-- <li class="nav-item dropdown">
75+
<a class="nav-link" href="#" id="message">
76+
<i class="material-icons">notifications</i>
77+
</a>
78+
</li> -->
79+
<li>
80+
<div class="custom-control custom-switch">
81+
<input type="checkbox" class="custom-control-input" id="darkSwitch" />
82+
<label class="custom-control-label" for="darkSwitch"> <i class="fa fa-adjust"></i></label>
83+
</div>
84+
</li>
85+
</ul>
86+
</div>
87+
</div>
88+
</nav>
89+
90+
</div>
91+
92+
93+
94+
<div class="container">
95+
<div class="message message-positive alert" trspan="choose2f"></div>
96+
<div class="buttons">
97+
<form action="/2fchoice" method="POST">
98+
<input type="hidden" id="token" name="token" value="1763811549_33839" />
99+
<input type="hidden" id="checkLogins" name="checkLogins" value="">
100+
<input type="hidden" id="stayconnected" name="stayconnected" value="on" />
101+
<input type="hidden" name="skin" value="unilim" />
102+
103+
<button type="submit" name="sf" value="totp" class="mx-3 btn btn-light" role="button">
104+
<div>
105+
106+
<h4>Application mobile</h4>
107+
108+
</div>
109+
<img src="/static/unilim/totp.png" alt="totp2F" title="totp2F" />
110+
</button>
111+
112+
<button type="submit" name="sf" value="mail" class="mx-3 btn btn-light" role="button">
113+
<div>
114+
115+
<h4>Mail personnel</h4>
116+
117+
</div>
118+
<img src="/static/unilim/selfregisteredmail.png" alt="mail2F" title="mail2F" />
119+
</button>
120+
121+
</form>
122+
</div>
123+
</div>
124+
<div class="buttons mt-3">
125+
<a href="https://cas.unilim.fr/?cancel=1&skin=unilim" class="btn btn-primary" role="button">
126+
<span class="fa fa-home"></span>
127+
<span trspan="cancel">Cancel</span>
128+
</a>
129+
</div>
130+
131+
</div> <!--wrap-->
132+
133+
<div id="footer">
134+
<div class="row">
135+
<div class="col-md-2"></div>
136+
<div class="col-md-8 col-10">
137+
<!-- Custom HTML footer -->
138+
<ul class="nav justify-content-center">
139+
<li class="nav-item">
140+
<a class="nav-link active" href="https://www.unilim.fr" target="_blank">Université de Limoges</a>
141+
</li>
142+
<li class="nav-item">
143+
<a class="nav-link" href="https://support.unilim.fr" target="_blank"><span trspan="anotherInformation"></a>
144+
</li>
145+
</ul>
146+
147+
148+
<script type="text/javascript" src="/index.psgi/psgi.js"></script>
149+
<!-- <script type="text/javascript" src="/static/unilim/assets/js/core/jquery.min.js"></script> -->
150+
<script type="text/javascript" src="/static/unilim/assets/js/core/popper.min.js"></script>
151+
<script type="text/javascript" src="/static/unilim/assets/js/core/bootstrap-material-design.min.js"></script>
152+
<script type="text/javascript" src="/static/unilim/assets/js/plugins/bootstrap-notify.js"></script>
153+
<script type="text/javascript" src="/static/unilim/assets/js/material-dashboard.js"></script>
154+
<script type="text/javascript" src="/static/unilim/icons/liga.js"></script>
155+
<script type="text/javascript" src="/static/unilim/js/custom.js"></script>
156+
157+
158+
159+
160+
</div>
161+
162+
<div class="col-md-2 col-2 text-right">
163+
<span id="languages"></span>
164+
</div>
165+
166+
</div>
167+
</div>
168+
169+
<!-- Constants -->
170+
<script type="text/JavaScript" src="/index.psgi/psgi.js"></script>
171+
</body>
172+
</html>

tests/cas/2fchoice.test.ts

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import { describe, expect, it } from "bun:test";
2+
import { load } from "cheerio";
3+
4+
import { PendingAuth } from "src/cas";
5+
import html from "./2fchoice.html" with { type: "text" };
6+
7+
const document = load(html as unknown as string);
8+
9+
describe("cas::2fchoice", () => {
10+
it("is not solved", () => {
11+
const auth = new PendingAuth(document);
12+
expect(auth.solved).toBe(false);
13+
});
14+
15+
it("has email option", () => {
16+
const auth = new PendingAuth(document);
17+
expect(auth.isEmailAvailable).toBe(true);
18+
});
19+
20+
it("has totp option", () => {
21+
const auth = new PendingAuth(document);
22+
expect(auth.isTotpAvailable).toBe(true);
23+
});
24+
});

tests/cas/mail2fcheck.html

Lines changed: 169 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,169 @@
1+
<!DOCTYPE html>
2+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
3+
<head>
4+
<title trspan="authPortal">Authentication portal</title>
5+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
6+
<meta http-equiv="Content-Script-Type" content="text/javascript" />
7+
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
8+
<meta http-equiv="Pragma" content="no-cache" />
9+
<meta http-equiv="Expires" content="0" />
10+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
11+
<meta http-equiv="X-UA-Compatible" content="IE=edge">
12+
<link rel="stylesheet" type="text/css" href="/static/bwr/bootstrap/dist/css/bootstrap.min.css" />
13+
<link rel="stylesheet" type="text/css" href="/static/bwr/font-awesome/css/font-awesome.min.css" />
14+
<link rel="stylesheet" type="text/css" href="/static/unilim/css/styles.css" />
15+
<link rel="stylesheet" type="text/css" href="/portal.css" />
16+
17+
<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
18+
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
19+
<!--[if lt IE 9]>
20+
<script type="text/javascript" src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
21+
<script type="text/javascript" src="https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js"></script>
22+
<![endif]-->
23+
<link href="/static/unilim/favicon.png" rel="icon" type="image/vnd.microsoft.icon" sizes="16x16 32x32 48x48 64x64 128x128" />
24+
<link href="/static/unilim/favicon.png" rel="shortcut icon" type="image/vnd.microsoft.icon" sizes="16x16 32x32 48x48 64x64 128x128" />
25+
26+
<!-- Load javascript common to all skins -->
27+
<script type="text/javascript" src="/static/bwr/jquery/dist/jquery.min.js?v=xiahbXUP"></script>
28+
<script type="text/javascript" src="/static/bwr/jquery-ui/jquery-ui.min.js?v=xiahbXUP"></script>
29+
<script type="text/javascript" src="/static/bwr/jquery.cookie/jquery.cookie.min.js?v=xiahbXUP"></script>
30+
31+
32+
33+
<script type="application/init">
34+
{
35+
"choicetab":"",
36+
"language": "en",
37+
"newwindow":0,
38+
"appslistorder":"",
39+
"activeTimer":0,
40+
"pingInterval":0,
41+
"trOver":{"en":{"PE0":"Login or password issue","PE4":"Get Unilim account","anotherInformation":"Need help ?"},"fr":{"PE4":"Activer mon compte Unilim","PE0":"Identifiant ou mot de passe perdu ?","anotherInformation":"Besoin d'aide ?"},"all":{}},
42+
"enablePasswordDisplay":0,
43+
"dontStorePassword":0,
44+
"scrollTop":400,
45+
"floatingCategory":"",
46+
"sameSite":"Lax",
47+
"cookieSecure":1
48+
}
49+
</script>
50+
51+
52+
<script type="text/javascript" src="/static/unilim/js/skin.min.js"></script>
53+
<script type="text/javascript" src="/static/common/js/portal.min.js"></script>
54+
<script type="text/javascript" src="/static/bwr/bootstrap/dist/js/bootstrap.min.js"></script>
55+
56+
<!-- Custom <head> markups, like CSS, js, etc. -->
57+
<!-- <link rel="stylesheet" href="/static/unilim/css/bootstrap.min.css" rel="stylesheet"> -->
58+
<!-- <link rel="stylesheet" href="/static/unilim/css/font-awesome.min.css"> -->
59+
<link rel="stylesheet" type="text/css" href="/static/unilim/icons/style.css" />
60+
<link rel="stylesheet" type="text/css" href="/static/unilim/css/material-dashboard.css" />
61+
<link rel="stylesheet" type="text/css" href="/static/unilim/css/custom.css" />
62+
63+
</head>
64+
<body>
65+
<div id="wrap">
66+
<div id="header"> <!-- Custom HTML header -->
67+
<!--
68+
<img src="/static/logo-universite-1.png" class="img-fluid rounded mx-auto d-block" />
69+
-->
70+
<nav class="navbar navbar-expand-lg navbar-transparent navbar-absolute fixed-top ">
71+
<div class="container-fluid">
72+
<div class="collapse navbar-collapse justify-content-end">
73+
<ul class="navbar-nav ul-top-menu">
74+
<!-- <li class="nav-item dropdown">
75+
<a class="nav-link" href="#" id="message">
76+
<i class="material-icons">notifications</i>
77+
</a>
78+
</li> -->
79+
<li>
80+
<div class="custom-control custom-switch">
81+
<input type="checkbox" class="custom-control-input" id="darkSwitch" />
82+
<label class="custom-control-label" for="darkSwitch"> <i class="fa fa-adjust"></i></label>
83+
</div>
84+
</li>
85+
</ul>
86+
</div>
87+
</div>
88+
</nav>
89+
90+
</div>
91+
92+
93+
94+
<main id="logincontent" class="container">
95+
96+
<div class="message message-positive alert"><span trspan="enterMail2fCode"></span></div>
97+
98+
<div class="card">
99+
100+
<form action="/mail2fcheck?skin=unilim" method="post" class="password" role="form">
101+
<div class="form">
102+
<input type="hidden" id="token" name="token" value="1763814448_36634" />
103+
<input type="hidden" id="checkLogins" name="checkLogins" value="" />
104+
<input type="hidden" name="skin" value="unilim" />
105+
<div class="input-group mb-3">
106+
<div class="input-group-prepend">
107+
<span class="input-group-text"><label for="extcode" class="mb-0"><i class="fa fa-lock"></i></label></span>
108+
</div>
109+
<input id="ul-focus" name="code" value="" type="text" class="form-control" id="extcode" trplaceholder="code" autocomplete="off" autofocus />
110+
</div>
111+
</div>
112+
<div class="buttons">
113+
<button type="submit" class="btn btn-success">
114+
<span class="fa fa-sign-in"></span>
115+
<span trspan="connect">Connect</span>
116+
</button>
117+
</div>
118+
<div class="buttons">
119+
<a href="https://cas.unilim.fr/?cancel=1&skin=unilim" class="btn btn-primary" role="button">
120+
<span class="fa fa-home"></span>
121+
<span trspan="cancel">Cancel</span>
122+
</a>
123+
</div>
124+
</form>
125+
</div>
126+
</main>
127+
128+
</div> <!--wrap-->
129+
130+
<div id="footer">
131+
<div class="row">
132+
<div class="col-md-2"></div>
133+
<div class="col-md-8 col-10">
134+
<!-- Custom HTML footer -->
135+
<ul class="nav justify-content-center">
136+
<li class="nav-item">
137+
<a class="nav-link active" href="https://www.unilim.fr" target="_blank">Université de Limoges</a>
138+
</li>
139+
<li class="nav-item">
140+
<a class="nav-link" href="https://support.unilim.fr" target="_blank"><span trspan="anotherInformation"></a>
141+
</li>
142+
</ul>
143+
144+
145+
<script type="text/javascript" src="/index.psgi/psgi.js"></script>
146+
<!-- <script type="text/javascript" src="/static/unilim/assets/js/core/jquery.min.js"></script> -->
147+
<script type="text/javascript" src="/static/unilim/assets/js/core/popper.min.js"></script>
148+
<script type="text/javascript" src="/static/unilim/assets/js/core/bootstrap-material-design.min.js"></script>
149+
<script type="text/javascript" src="/static/unilim/assets/js/plugins/bootstrap-notify.js"></script>
150+
<script type="text/javascript" src="/static/unilim/assets/js/material-dashboard.js"></script>
151+
<script type="text/javascript" src="/static/unilim/icons/liga.js"></script>
152+
<script type="text/javascript" src="/static/unilim/js/custom.js"></script>
153+
154+
155+
156+
157+
</div>
158+
159+
<div class="col-md-2 col-2 text-right">
160+
<span id="languages"></span>
161+
</div>
162+
163+
</div>
164+
</div>
165+
166+
<!-- Constants -->
167+
<script type="text/JavaScript" src="/index.psgi/psgi.js"></script>
168+
</body>
169+
</html>

0 commit comments

Comments
 (0)