1/* NO_AUTOMATED_TESTING */
2
3#include <stdio.h>
4#include <stdlib.h>     /* getenv(3) */
5#include <Security/AuthSession.h>
6#include "testmore.h"
7
8#define SSID_ENV_STR  "SECURITYSESSIONID"   /* hard-coded in Authorization.cpp */
9
10/*
11 * Not automated because SessionCreate() implicitly invokes task_for_pid(),
12 * which in turn can trigger an Authorization call (and thus UI) via
13 * taskgated.
14 */
15int main(__unused int ac, __unused const char *av[])
16{
17    char *ssid = NULL;
18
19    plan_tests(1);
20
21    if ((ssid = getenv(SSID_ENV_STR)) != NULL)
22        printf("Current SecuritySessionID: %s\n", ssid);
23    /*
24     * @@@  SessionCreate() is documented to return "noErr" on success, but
25     *      errSessionSuccess is part of the SessionStatus enum
26     */
27    is(SessionCreate(0/*SessionCreationFlags*/,
28                     sessionHasGraphicAccess|sessionHasTTY/*SessionAttributeFlags*/),
29       errSessionSuccess, "SessionCreate()");
30    if ((ssid = getenv(SSID_ENV_STR)) == NULL)
31        fprintf(stderr, "Missing %s in environment!\n", SSID_ENV_STR);
32    printf("New SecuritySessionID: %s\n", ssid);
33    return 0;
34}
35