Add copyright to browser plug-in file, finish code reorg and cleanup.
[gssweb.git] / browsers / test / test.html
1 <html>
2   <head>
3     <title>GSSApi Tester Application</title>
4
5     <!-- Latest compiled and minified CSS -->
6     <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
7
8     <!-- Optional theme -->
9     <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap-theme.min.css">
10
11   </head>
12   <body>
13   <div class="container-fluid">
14     <div class="row">
15       <div class="col-xs-4">
16         <!-- left column -->
17         <h2>GSS Import Name</h2>
18         <div class="form-group">
19           <label for="import_name_name">Name:</label>
20           <input name="import_name_name"
21                  id="import_name_name"
22                  value="HTTP@localhost.localdomain" />
23         </div>
24         <div class="form-group">
25           <label for="import_name_mech">Mechanism:</label>
26           <input name="import_name_mech"
27                  id="import_name_mech"
28                  value="{1 2 840 113554 1 2 1 4 }" />
29         </div>
30         <button id="import_name">gss_import_name</button>
31         <div id='import_response' style="overflow: auto;"></div>
32       </div>
33
34
35       <div class="col-xs-4">
36         <!-- middle column -->
37         <h2>GSS Acquire Cred</h2>
38         <div class="form-group">
39           <label for="acquire_cred_desired_name">Desired name:</label>
40           <select name="acquire_cred_desired_name" class="gss_name">
41           </select>
42         </div>
43
44         <div class="form-group">
45           <label for="acquire_cred_cred_usage">Cred Usage:</label>
46           <select name="acquire_cred_cred_usage">
47             <option value="GSS_C_INITIATE">GSS_C_INITIATE</option>
48             <option value="GSS_C_ACCEPT">GSS_C_ACCEPT</option>
49             <option value="GSS_C_BOTH">GSS_C_BOTH</option>
50           </select>
51         </div>
52
53         <div class="form-group">
54           <label for="acquire_cred_time_req">
55             Requested lifetime in seconds (0 for default 2 hours):
56           </label>
57           <input name="acquire_cred_time_req"
58                  id="acquire_cred_time_req"
59                  value="0"/>
60         </div>
61
62         <div class="form-group">
63           <label for="acquire_cred_desired_mechs">
64             Desired mechanisms (comma separated, blank for default):
65           </label>
66           <input name="acquire_cred_desired_mechs"
67                  id="acquire_cred_desired_mechs"
68                  value=""/>
69         </div>
70
71         <button id="acquire_cred">gss_acquire_cred</button>
72         <div id="acquire_response" style="overflow: auto;"></div>
73
74       </div>
75
76
77       <div class="col-xs-4">
78         <!-- right column -->
79         <h2>GSS Init Sec Context</h2>
80         <div class="form-group">
81           <label for="init_sec_context_target_name">Target name:</label>
82           <select name="init_sec_context_target_name"
83                   id="init_sec_context_target_name"
84                   class="gss_name">
85           </select>
86         </div>
87
88         <div class="form-group">
89           <label for="init_sec_context_context_handle">Context handle:</label>
90           <input name="init_sec_context_context_handle"
91                  id="init_sec_context_context_handle"/>
92         </div>
93
94         <div class="form-group">
95           <label for="init_sec_context_input_token">Input token:</label>
96           <input name="init_sec_context_input_token"
97                  id="init_sec_context_input_token"/>
98         </div>
99
100         <div class="form-group">
101           <label for="init_sec_context_mech_type">
102             Mechanism type (blank for default):
103           </label>
104           <input name="init_sec_context_mech_type"
105                  id="init_sec_context_mech_type"/>
106         </div>
107
108         <div class="form-group">
109           <label for="init_sec_context_time_req">
110             Requested lifetime in seconds (0 for default 2 hours):
111           </label>
112           <input name="init_sec_context_time_req"
113                  id="init_sec_context_time_req" value="0" />
114         </div>
115
116         <div class="form-group">
117           <label for="init_sec_context_req_flags">
118             Request flags (0 unless you know what you're doing):
119           </label>
120           <input name="init_sec_context_req_flags" 
121                  id="init_sec_context_req_flags" value="0" />
122         </div>
123
124         <button id="init_sec_context">gss_init_sec_context</button>
125         <div id="init_sec_context_response" style="overflow: auto;"></div>
126
127       </div> 
128    </div>
129
130    <div class="row">
131       <div class="col-xs-4">
132         <!-- middle column -->
133         <h2>GSS Display Name</h2>
134         <div class="form-group">
135           <label for="display_name_name">Name:</label>
136           <select name="display_name_name" id="display_name_name" class="gss_name">
137           </select>
138         </div>
139
140         <button id="display_name">gss_display_name</button>
141         <div id="display_name_response" style="overflow: auto;"></div>
142
143       </div>
144    </div>
145
146     <div class="row">
147       <div class="col-xs-12">
148         <div class="form-group">
149           <label for="authenticate_server_path">Server Path:</label>
150           <input name="authenticate_server_path" 
151                  id="authenticate_server_path" 
152                  value="/gss/" />
153         </div>
154
155         <button id="authenticate">authenticate</button>
156         <div id='authenticate_response' style="overflow: auto;"></div>
157       </div>
158     </div>
159
160   </div>
161   
162    <!-- Scripts! ------------------------------------------------------------------------------>
163    <!-- Required JQuery -->
164    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
165
166    <!-- Latest compiled and minified JavaScript -->
167    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
168
169    <!-- GSS Web script -->
170    <script src="navigator.gssweb.js"></script>
171
172     <script language="javascript">
173       var gss;
174       var gssweb;
175
176       function report(msg, elemId) {
177         var element = $(elemId);
178         element.prepend('<p>' + msg + '</p>');
179       }
180
181       function doImportName() {
182         gss = gss || new navigator.gssEap({
183           appTag: "TestApp"
184         });
185         gss.error = function(major, minor, errMsg, appTag) 
186         {
187           report("Error", '#import_response');
188           report("Major: " + major + "; Minor: " + minor, '#import_response');
189           report("<blockquote>" + errMsg + "</blockquote>", '#import_response');
190           report("appTag: " + appTag, '#import_response');
191         };
192         gss.import_name({
193           name:      document.getElementById('import_name_name').value,
194           name_type: document.getElementById('import_name_mech').value,
195           success:   function(data, appTag) {
196                        report("GSS imported name: " + data.gss_name, '#import_response');
197                        report("appTag: " + appTag, '#import_response');
198                        newOption = $('<option></option>');
199                        newOption.attr('value', data.gss_name);
200                        newOption.append(document.getElementById('import_name_name').value);
201                        $('.gss_name').append(newOption);
202                      }
203         });
204       } // doImportName
205
206       function doDisplayName() {
207         gss = gss || new navigator.gssEap({
208           appTag: "TestApp"
209         });
210         gss.error = function(major, minor, errMsg, appTag) 
211         {
212           report("Error", '#display_response');
213           report("Major: " + major + "; Minor: " + minor, '#display_response');
214           report("<blockquote>" + errMsg + "</blockquote>", '#display_response');
215           report("appTag: " + appTag, '#display_response');
216         };
217         gss.display_name({
218           input_name:      document.getElementById('display_name_name').value,
219           success:   function(data, appTag) {
220                        report("GSS displayed name: " + data.gss_name, '#display_response');
221                        report("appTag: " + appTag, '#display_response');
222                        newOption = $('<option></option>');
223                        newOption.attr('value', data.gss_name);
224                        newOption.append(document.getElementById('display_name_name').value);
225                        $('.gss_name').append(newOption);
226                      },
227           error: function(major, minor, errMsg, appTag) 
228         {
229           report("Error", '#display_response');
230           report("Major: " + major + "; Minor: " + minor, '#display_response');
231           report("<blockquote>" + errMsg + "</blockquote>", '#display_response');
232           report("appTag: " + appTag, '#display_response');
233         }
234         });
235       } // doDisplayName
236
237
238       function doAcquireCred() {
239         gss = gss || new navigator.gssEap({
240           appTag: "TestApp"
241         });
242         gss.error = function(major, minor, errMsg, appTag) 
243         {
244           report("Error", '#acquire_response');
245           report("Major: " + major + "; Minor: " + minor, '#acquire_response');
246           report("<blockquote>" + errMsg + "</blockquote>", '#acquire_response');
247           report("appTag: " + appTag, '#acquire_response');
248         };        
249
250         var params = {
251           desired_name: document.getElementById('import_name_name').value,
252           cred_usage: document.getElementById('import_name_name').value
253         };
254         if (document.getElementById("acquire_cred_time_req").value > 0)
255         {
256           params.time_req = document.getElementById("acquire_cred_time_req").value;
257         }
258         if ("" != document.getElementById("acquire_cred_desired_mechs").value)
259         {
260           params.desired_mechs = 
261             document.getElementById("acquire_cred_desired_mechs").value;
262         }
263         
264         gss.acquire_cred(params);
265       }
266
267       /********************************************************
268        *  Call the init_sec_context routine
269        ********************************************************/
270       function doInitSecContext() {
271         gss = gss || new navigator.gssEap({
272           appTag: "TestApp",
273         });
274         gss.error = function(major, minor, errMsg, appTag) 
275         {
276           report("Error",
277                  '#init_sec_context_response');
278           report("Major: " + major + "; Minor: " + minor, 
279                  '#init_sec_context_response');
280           report("<blockquote>" + errMsg + "</blockquote>",
281                  '#init_sec_context_response');
282           report("appTag: " + appTag,
283                  '#init_sec_context_response');
284         };        
285
286 /* context_handle, mech_type, req_flags, time_req, input_token */
287
288         var params = {
289           context_handle: document.getElementById('init_sec_context_context_handle').value,
290           target_name: document.getElementById('init_sec_context_target_name').value,
291           mech_type: document.getElementById('init_sec_context_mech_type').value,
292           req_flags: document.getElementById('init_sec_context_req_flags').value,
293           time_req: document.getElementById('init_sec_context_time_req').value,
294           input_token: document.getElementById('init_sec_context_input_token').value,
295           success: function(data, appTag) {
296             $('#init_sec_context_context_handle').attr("value",
297                                                        data.context_handle);
298             report("Output token: " + data.output_token,
299                    '#init_sec_context_response');
300           }
301         };
302         gss.init_sec_context(params);
303       }
304
305       function doAuthenticate() {
306         gssweb = gssweb || new navigator.gssweb({
307           serverPath: document.getElementById('authenticate_server_path').value,
308           appTag:     "Authentication Test",
309           error:      function(errMsg) {
310                         report(errMsg, '#authenticate_response');
311                       },
312           success:    function(appData, contentType, appTag) {
313                         report(contentType, '#authenticate_response');
314                         report("Content-Type:", '#authenticate_response');
315                         report(appData, '#authenticate_response');
316                         report("Found app data:", '#authenticate_response');
317                         report("Success!", '#authenticate_response');
318                       }
319         });
320         gssweb.authenticate();
321       } // doAuthenticate
322       
323       document.addEventListener('DOMContentLoaded', function () {
324         <!-- Listen for the import name button click -->
325         document.getElementById('import_name').addEventListener(
326           'click', doImportName
327         );
328
329         <!-- Listen for the import name button click -->
330         document.getElementById('display_name').addEventListener(
331           'click', doDisplayName
332         );
333
334         <!-- Listen for the acquire cred button click -->
335         document.getElementById('acquire_cred').addEventListener(
336           'click', doAcquireCred
337         );
338
339         <!-- Listen for the import name button click -->
340         document.getElementById('init_sec_context').addEventListener(
341           'click', doInitSecContext
342         );
343
344
345         <!-- Listen for the authenticate button click -->
346         document.getElementById('authenticate').addEventListener(
347           'click', doAuthenticate
348         );
349
350       });
351
352     </script>
353
354   </body>
355 </html>