1   /*
2    * SPDX-FileCopyrightText: none
3    * SPDX-License-Identifier: CC0-1.0
4    */
5   
6   package gov.nist.secauto.metaschema.databind;
7   
8   import static org.junit.jupiter.api.Assertions.assertFalse;
9   import static org.junit.jupiter.api.Assertions.assertNotNull;
10  
11  import gov.nist.secauto.metaschema.core.model.IAssemblyDefinition;
12  import gov.nist.secauto.metaschema.core.model.IConstraintLoader;
13  import gov.nist.secauto.metaschema.core.model.MetaschemaException;
14  import gov.nist.secauto.metaschema.core.model.constraint.IConstraint;
15  import gov.nist.secauto.metaschema.core.model.constraint.IConstraintSet;
16  import gov.nist.secauto.metaschema.databind.model.metaschema.BindingConstraintLoader;
17  import gov.nist.secauto.metaschema.core.qname.IEnhancedQName;
18  import gov.nist.secauto.metaschema.core.util.ObjectUtils;
19  import gov.nist.secauto.metaschema.databind.model.IBoundModule;
20  import gov.nist.secauto.metaschema.databind.model.test.TestMetaschema;
21  
22  import org.junit.jupiter.api.Test;
23  
24  import java.io.IOException;
25  import java.nio.file.Paths;
26  import java.util.List;
27  
28  class IBindingContextTest {
29  
30    @Test
31    void testConstraints() throws MetaschemaException, IOException {
32      IConstraintLoader constraintLoader = new BindingConstraintLoader(DefaultBindingContext.instance());
33      List<IConstraintSet> constraintSet = constraintLoader.load(
34          ObjectUtils.notNull(Paths.get("src/test/resources/content/constraints.xml")));
35  
36      IBindingContext bindingContext = IBindingContext.builder()
37          .constraintSet(constraintSet)
38          .build();
39  
40      IBoundModule module = bindingContext.registerModule(TestMetaschema.class);
41  
42      IAssemblyDefinition root
43          = module.getExportedAssemblyDefinitionByName(
44              IEnhancedQName.of("https://csrc.nist.gov/ns/test/xml", "root").getIndexPosition());
45  
46      assertNotNull(root, "root not found");
47      List<? extends IConstraint> constraints = root.getConstraints();
48      assertFalse(constraints.isEmpty(), "a constraint was expected");
49    }
50  }