869a36e2649ae064c98063cf1e55198488d78d12Allan Foster/**
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster *
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster * Copyright (c) 2009 Sun Microsystems Inc. All Rights Reserved
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster *
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster * The contents of this file are subject to the terms
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster * of the Common Development and Distribution License
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster * (the License). You may not use this file except in
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster * compliance with the License.
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster *
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster * You can obtain a copy of the License at
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster * https://opensso.dev.java.net/public/CDDLv1.0.html or
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster * opensso/legal/CDDLv1.0.txt
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster * See the License for the specific language governing
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster * permission and limitations under the License.
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster *
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster * When distributing Covered Code, include this CDDL
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster * Header Notice in each file and include the License file
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster * at opensso/legal/CDDLv1.0.txt.
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster * If applicable, add the following below the CDDL Header,
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster * with the fields enclosed by brackets [] replaced by
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster * your own identifying information:
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster * "Portions Copyrighted [year] [name of copyright owner]"
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster *
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster * $Id: NotSubjectTest.java,v 1.1 2009/08/19 05:41:00 veiming Exp $
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster */
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster
6218d964022db7baebcb9a25e736b1a8066e58f4David Luna/**
6218d964022db7baebcb9a25e736b1a8066e58f4David Luna * Portions copyright 2014 ForgeRock AS.
6218d964022db7baebcb9a25e736b1a8066e58f4David Luna */
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster
6218d964022db7baebcb9a25e736b1a8066e58f4David Lunapackage com.sun.identity.entitlement;
6218d964022db7baebcb9a25e736b1a8066e58f4David Luna
6218d964022db7baebcb9a25e736b1a8066e58f4David Lunaimport java.util.HashSet;
6218d964022db7baebcb9a25e736b1a8066e58f4David Lunaimport java.util.Set;
6218d964022db7baebcb9a25e736b1a8066e58f4David Lunaimport static org.testng.Assert.assertTrue;
869a36e2649ae064c98063cf1e55198488d78d12Allan Fosterimport org.testng.annotations.Test;
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster
869a36e2649ae064c98063cf1e55198488d78d12Allan Fosterpublic class NotSubjectTest {
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster
6218d964022db7baebcb9a25e736b1a8066e58f4David Luna @Test (expectedExceptions = IllegalArgumentException.class)
6218d964022db7baebcb9a25e736b1a8066e58f4David Luna public void testSingleSubject() {
6218d964022db7baebcb9a25e736b1a8066e58f4David Luna //given
6218d964022db7baebcb9a25e736b1a8066e58f4David Luna Set<EntitlementSubject> subjects = new HashSet<EntitlementSubject>();
6218d964022db7baebcb9a25e736b1a8066e58f4David Luna
6218d964022db7baebcb9a25e736b1a8066e58f4David Luna AnyUserSubject aus = new AnyUserSubject();
6218d964022db7baebcb9a25e736b1a8066e58f4David Luna AnyUserSubject aus2 = new AnyUserSubject();
6218d964022db7baebcb9a25e736b1a8066e58f4David Luna
6218d964022db7baebcb9a25e736b1a8066e58f4David Luna subjects.add(aus);
6218d964022db7baebcb9a25e736b1a8066e58f4David Luna subjects.add(aus2);
6218d964022db7baebcb9a25e736b1a8066e58f4David Luna
6218d964022db7baebcb9a25e736b1a8066e58f4David Luna NotSubject myNotSubject = new NotSubject();
6218d964022db7baebcb9a25e736b1a8066e58f4David Luna
6218d964022db7baebcb9a25e736b1a8066e58f4David Luna //when
6218d964022db7baebcb9a25e736b1a8066e58f4David Luna myNotSubject.setESubjects(subjects);
6218d964022db7baebcb9a25e736b1a8066e58f4David Luna
6218d964022db7baebcb9a25e736b1a8066e58f4David Luna //then -- expect error
6218d964022db7baebcb9a25e736b1a8066e58f4David Luna
6218d964022db7baebcb9a25e736b1a8066e58f4David Luna }
6218d964022db7baebcb9a25e736b1a8066e58f4David Luna
6218d964022db7baebcb9a25e736b1a8066e58f4David Luna @Test
6218d964022db7baebcb9a25e736b1a8066e58f4David Luna public void testSingleSubjectEnforced() {
6218d964022db7baebcb9a25e736b1a8066e58f4David Luna //given
6218d964022db7baebcb9a25e736b1a8066e58f4David Luna Set<EntitlementSubject> subjects = new HashSet<EntitlementSubject>();
6218d964022db7baebcb9a25e736b1a8066e58f4David Luna
6218d964022db7baebcb9a25e736b1a8066e58f4David Luna AnyUserSubject aus = new AnyUserSubject();
6218d964022db7baebcb9a25e736b1a8066e58f4David Luna
6218d964022db7baebcb9a25e736b1a8066e58f4David Luna subjects.add(aus);
6218d964022db7baebcb9a25e736b1a8066e58f4David Luna
6218d964022db7baebcb9a25e736b1a8066e58f4David Luna NotSubject myNotSubject = new NotSubject();
6218d964022db7baebcb9a25e736b1a8066e58f4David Luna
6218d964022db7baebcb9a25e736b1a8066e58f4David Luna //when
6218d964022db7baebcb9a25e736b1a8066e58f4David Luna myNotSubject.setESubjects(subjects);
6218d964022db7baebcb9a25e736b1a8066e58f4David Luna
6218d964022db7baebcb9a25e736b1a8066e58f4David Luna //then
6218d964022db7baebcb9a25e736b1a8066e58f4David Luna assertTrue(myNotSubject.getESubject().equals(aus));
6218d964022db7baebcb9a25e736b1a8066e58f4David Luna
6218d964022db7baebcb9a25e736b1a8066e58f4David Luna }
6218d964022db7baebcb9a25e736b1a8066e58f4David Luna
6218d964022db7baebcb9a25e736b1a8066e58f4David Luna @Test
6218d964022db7baebcb9a25e736b1a8066e58f4David Luna public void testSingleSubjectEnforcedRetrieval() {
6218d964022db7baebcb9a25e736b1a8066e58f4David Luna //given
6218d964022db7baebcb9a25e736b1a8066e58f4David Luna AnyUserSubject aus = new AnyUserSubject();
6218d964022db7baebcb9a25e736b1a8066e58f4David Luna NotSubject myNotSubject = new NotSubject();
6218d964022db7baebcb9a25e736b1a8066e58f4David Luna
6218d964022db7baebcb9a25e736b1a8066e58f4David Luna //when
6218d964022db7baebcb9a25e736b1a8066e58f4David Luna myNotSubject.setESubject(aus);
6218d964022db7baebcb9a25e736b1a8066e58f4David Luna
6218d964022db7baebcb9a25e736b1a8066e58f4David Luna //then
6218d964022db7baebcb9a25e736b1a8066e58f4David Luna assertTrue(myNotSubject.getESubjects().iterator().next().equals(aus));
6218d964022db7baebcb9a25e736b1a8066e58f4David Luna }
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster}