1+ /*
2+ * This program and the accompanying materials are made available under the terms of the
3+ * Eclipse Public License v2.0 which accompanies this distribution, and is available at
4+ * https://www.eclipse.org/legal/epl-v20.html
5+ *
6+ * SPDX-License-Identifier: EPL-2.0
7+ *
8+ * Copyright Contributors to the Zowe Project.
9+ */
10+
11+ package org .zowe .apiml .zaas .controllers ;
12+
13+ import org .junit .jupiter .api .BeforeEach ;
14+ import org .junit .jupiter .api .Test ;
15+ import org .mockito .*;
16+ import org .springframework .http .ResponseEntity ;
17+ import org .zowe .apiml .passticket .PassTicketService ;
18+ import org .zowe .apiml .zaas .security .mapping .NativeMapperWrapper ;
19+ import org .zowe .commons .usermap .MapperResponse ;
20+
21+ import static org .junit .jupiter .api .Assertions .*;
22+ import static org .mockito .Mockito .*;
23+
24+ class StsControllerTest {
25+
26+ @ Mock
27+ private PassTicketService passTicketService ;
28+
29+ @ Mock
30+ private NativeMapperWrapper nativeMapper ;
31+
32+ @ InjectMocks
33+ private StsController stsController ;
34+
35+ @ BeforeEach
36+ void setUp () {
37+ MockitoAnnotations .openMocks (this );
38+ stsController .registry = "testRegistry" ;
39+ }
40+
41+ @ Test
42+ void testGetPassTicket_Success () throws Exception {
43+ StsController .PassTicketRequest request = new StsController .PassTicketRequest ();
44+ request .setApplId ("TESTAPP" );
45+ request .
setEmailId (
"[email protected] " );
46+
47+ MapperResponse mapperResponse = new MapperResponse ("ZOSUSER" , 0 , 0 , 0 , 0 );
48+
49+ when (
nativeMapper .
getUserIDForDN (
"[email protected] " ,
"testRegistry" )).
thenReturn (
mapperResponse );
50+ when (passTicketService .generate ("ZOSUSER" , "TESTAPP" )).thenReturn ("TICKET123" );
51+
52+ ResponseEntity <StsController .PassTicketResponse > response = stsController .getPassTicket (request );
53+ assertEquals (200 , response .getStatusCode ().value ());
54+ assertNotNull (response .getBody ());
55+ assertEquals ("TICKET123" , response .getBody ().getPassticket ());
56+ assertEquals ("ZOSUSER" , response .getBody ().getTsoUserid ());
57+
58+ verify (
nativeMapper ).
getUserIDForDN (
"[email protected] " ,
"testRegistry" );
59+ verify (passTicketService ).generate ("ZOSUSER" , "TESTAPP" );
60+ }
61+
62+ @ Test
63+ void testGetPassTicket_BadRequest_BlankEmail () throws Exception {
64+ StsController .PassTicketRequest request = new StsController .PassTicketRequest ();
65+ request .setApplId ("APPID" );
66+ request .setEmailId ("" );
67+
68+ ResponseEntity <StsController .PassTicketResponse > response = stsController .getPassTicket (request );
69+
70+ assertEquals (400 , response .getStatusCode ().value ());
71+ verifyNoInteractions (passTicketService , nativeMapper );
72+ }
73+
74+ @ Test
75+ void testGetPassTicket_BadRequest_BlankApplId () throws Exception {
76+ StsController .PassTicketRequest request = new StsController .PassTicketRequest ();
77+ request .
setEmailId (
"[email protected] " );
78+ request .setApplId ("" );
79+
80+ ResponseEntity <StsController .PassTicketResponse > response = stsController .getPassTicket (request );
81+
82+ assertEquals (400 , response .getStatusCode ().value ());
83+ verifyNoInteractions (passTicketService , nativeMapper );
84+ }
85+
86+ @ Test
87+ void testGetPassTicket_NativeMapperFailure () throws Exception {
88+ StsController .PassTicketRequest request = new StsController .PassTicketRequest ();
89+ request .setApplId ("APPID" );
90+ request .
setEmailId (
"[email protected] " );
91+
92+ when (nativeMapper .getUserIDForDN (anyString (), anyString ())).thenThrow (new RuntimeException ("Mapper failed" ));
93+
94+ Exception exception = assertThrows (RuntimeException .class , () -> stsController .getPassTicket (request ));
95+ assertEquals ("Mapper failed" , exception .getMessage ());
96+ }
97+
98+ @ Test
99+ void testGetPassTicket_MapperReturnsNoUser () throws Exception {
100+ StsController .PassTicketRequest request = new StsController .PassTicketRequest ();
101+ request .setApplId ("APPID" );
102+ request .
setEmailId (
"[email protected] " );
103+
104+ MapperResponse mapperResponse = new MapperResponse ("" , 0 , 0 , 0 , 0 );
105+
106+ when (nativeMapper .getUserIDForDN (anyString (), anyString ())).thenReturn (mapperResponse );
107+ when (passTicketService .generate ("" , "APPID" )).thenReturn ("TICKET123" );
108+
109+ ResponseEntity <StsController .PassTicketResponse > response = stsController .getPassTicket (request );
110+
111+ assertEquals (200 , response .getStatusCode ().value ());
112+ assertEquals ("TICKET123" , response .getBody ().getPassticket ());
113+ assertEquals ("" , response .getBody ().getTsoUserid ());
114+ }
115+ }
0 commit comments