예제 #1
0
 /**
  * Copy Constructor
  */
 public ResolverFlags(ResolverFlags other)
 {
 	https = other.https;
 	saml  = other.saml;
 	refs  = other.refs;
 	noDefaultT = other.noDefaultT;
 	noDefaultP = other.noDefaultP;
 	noDefaultM = other.noDefaultM;
 	uric  = other.uric;
 	cid   = other.cid;
 }
예제 #2
0
파일: Resolver.cs 프로젝트: tt/dotnetxri
	/**
	 * This is the recommended API to use for performing authority resolution an an XRI
	 * @param qxri
	 * @param flags - ResolverFlag
	 * @param state - ResolverState
	 * @return
	 * @throws PartialResolutionException
	 */
	public XRDS resolveAuthToXRDS(XRI qxri, ResolverFlags flags,
			ResolverState state) throws PartialResolutionException {
예제 #3
0
            //throws XRIResolutionException
            /*
            ************************************************************************
            * getDataFromURI()
            ************************************************************************
            */
            /**
            *
            */
            protected InputStream getDataFromURI(URI uri, String query, ResolverFlags flags, ResolverState state)
            {
                // if we got the nonexistent "command" return a not found
                if (uri.getPath().indexOf("!nonexistent") >= 0)
                {
                XRD xrd = new XRD();
                xrd.setQuery("!nonexistent");
                xrd.setStatus(new Status(Status.AUTH_RES_NOT_FOUND));
                XRDS xrds = new XRDS();
                xrds.add(xrd);
                return new ByteArrayInputStream(xrds.toString().getBytes());
                }

                XRDS oDescs = new XRDS();

                // just the same response always
                XRD oFoo = new XRD();
                oFoo.setQuery("!foo");
                oFoo.setStatus(new Status(Status.SUCCESS));
                oDescs.add(oFoo);

                XRD oBar = new XRD();
                oBar.setQuery("!bar");
                oBar.setStatus(new Status(Status.SUCCESS));
                oDescs.add(oBar);

                if (uri.getPath().indexOf("!baz") > 0) {
                XRD baz = new XRD();
                baz.setQuery("!baz");
                baz.setStatus(new Status(Status.AUTH_RES_NOT_FOUND, "Not found"));
                oDescs.add(baz);
                }
                return new ByteArrayInputStream(oDescs.toString().getBytes());
            }
예제 #4
0
            //    throws XRIResolutionException
            protected InputStream getDataFromURI(URI oURI, string query, ResolverFlags flags, ResolverState state)
            {
                // the path better be empty
                if ((oURI.getPath() != null) && (oURI.getPath().Length > 0))
                return null;

                XRD oDesc = new XRD();
                XRI oExternal = new XRI("xri://@foo");
                oDesc.addRef(new Ref(oExternal.toString()));
                XRDS oDescs = new XRDS();
                oDescs.add(oDesc);

                state.pushResolved(oURI.toString(), flags.toString(), oDesc.toString(), oURI);

                return new ByteArrayInputStream(oDescs.toString().getBytes());
            }
예제 #5
0
        public void testCID()
        {
            string qxri;

            try {
            Resolver resolver = setupResolver();
            qxri = "@xrid*test*live.unit.tests*0003-badcid*kid";
            XRI xri = XRI.fromIRINormalForm(qxri);

            ResolverFlags flags = new ResolverFlags();
            XRDS xrds = resolver.resolveAuthToXRDS(xri, flags, new ResolverState());
            // Logger.Info(xrds);

            assertTrue("Expected 5 XRDs", xrds.getNumChildren() == 5);
            assertTrue("subseg[3] should be *0003-badcid", xrds.getDescriptorAt(3).getQuery().Equals("*0003-badcid"));

            Status s3 = xrds.getDescriptorAt(3).getStatus();
            assertTrue("subseg[3].status.cid should be 'failed'", s3.getCID().Equals("failed"));

            Status s4 = xrds.getDescriptorAt(4).getStatus();
            assertTrue("subseg[4].status.cid should be 'failed'", s4.getCID().Equals("failed"));

            qxri = "@xrid*test*live.unit.tests*0001-simple";
            xri = XRI.fromIRINormalForm(qxri);
            xrds = resolver.resolveAuthToXRDS(xri, flags, new ResolverState());
            assertTrue("Expected 4 XRDs", xrds.getNumChildren() == 4);
            XRD xrd3 = xrds.getDescriptorAt(3);
            assertTrue("subseg[3] should be *0001-simple", xrd3.getQuery().Equals("*0001-simple"));
            assertTrue("subseg[3] should be CID verified", xrd3.getStatus().getCID().Equals(Status.CID_VERIFIED));
            assertTrue("subseg[3] should be CEID verified", xrd3.getStatus().getCEID().Equals(Status.CID_VERIFIED));
            }
            catch (Exception e) {
            fail("Not expecting an exception here: " + e);
            e.printStackTrace();
            }
        }
예제 #6
0
        public void testResolve()
        {
            string qxri;

            try {
            Resolver resolver = setupResolver();
            qxri = "@xrid*test*freeid*null-provider";
            qxri = "=les.chasen";
            qxri = "=kermit*\u65e5\u672c\u7248";
            XRI xri = XRI.fromIRINormalForm(qxri);

            ResolverFlags flags = new ResolverFlags();
            flags.setUric(true);
            flags.setHttps(false);
            resolver.resolveSEPToXRD(xri, null, null, flags, new ResolverState());

            ArrayList uris = resolver.resolveSEPToURIList(qxri, new TrustType(), null, "text/xml", true);

            }
            catch (Exception e) {
            e.printStackTrace();
            fail("Not expecting an exception here: " + e);
            }
        }
예제 #7
0
        public void testLiveRef()
        {
            string qxri;
            try {
            Resolver resolver = setupResolver();
            qxri = "@xrid*test*live.unit.tests*0002-ref";
            XRI xri = XRI.fromIRINormalForm(qxri);

            ResolverFlags flags = new ResolverFlags();
            XRDS xrds = resolver.resolveAuthToXRDS(xri, flags, new ResolverState());
            assertTrue("There should be 5 child elements", xrds.getNumChildren() == 5);
            assertTrue("The last child should be an XRDS element because it followed a Ref", xrds.isXRDSAt(4));
            }
            catch (PartialResolutionException e) {
            fail("Not expecting PRE. PartialXRDS=" + e.getPartialXRDS());
            }
            catch (Exception e) {
            fail("Not expecting an exception here: " + e);
            }
        }
예제 #8
0
        public void testLiveRedirect()
        {
            string qxri = "@xrid*test*live.unit.tests*0004-redirect/(+blog)";
            try {
            Resolver resolver = setupResolver();
            XRI xri = XRI.fromIRINormalForm(qxri);

            ResolverFlags flags = new ResolverFlags();
            XRDS xrds = resolver.resolveSEPToXRDS(xri, null, null, flags, new ResolverState());
            Logger.Info(xrds);
            assertTrue("There should be 8 child elements", xrds.getNumChildren() == 8);
            assertTrue("The first child should be an XRD element", xrds.isXRDAt(0));
            assertTrue("The second child should be an XRD element", xrds.isXRDAt(1));
            assertTrue("The third child should be an XRD element", xrds.isXRDAt(2));
            assertTrue("The fourth child should be an XRD element", xrds.isXRDAt(3));

            assertTrue("The fifth child should be an XRDS element because it followed a Redirect", xrds.isXRDSAt(4));
            XRDS redirXRDS = xrds.getXRDSAt(4);
            assertTrue("Wrong redirect followed in the fifth child", redirXRDS.getRedirect().Equals("http://auth.xrid.net/!330/"));

            assertTrue("The fifth child should have 2 children", redirXRDS.getNumChildren() == 2);
            assertTrue("The fifth child's first child should be an XRD", redirXRDS.isXRDAt(0));
            assertTrue("The fifth child's second child should be an XRDS", redirXRDS.isXRDSAt(1));
            redirXRDS = redirXRDS.getXRDSAt(1);
            assertTrue("Wrong redirect followed in the fifth child's second child", redirXRDS.getRedirect().Equals("http://does.not.exist/"));
            assertFalse("Fifth child should have failed", redirXRDS.getFinalXRD().getStatusCode().Equals(Status.SUCCESS));

            assertTrue("The sixth child should be an XRDS element because it followed a Redirect", xrds.isXRDSAt(5));
            redirXRDS = xrds.getXRDSAt(5);
            assertTrue("Wrong redirect followed in the sixth child", redirXRDS.getRedirect().Equals("http://auth.xrid.net/!333/"));

            assertTrue("The seventh child should be an XRDS element because it followed a Redirect", xrds.isXRDSAt(6));
            redirXRDS = xrds.getXRDSAt(6);
            assertTrue("Wrong redirect followed on the seventh child", redirXRDS.getRedirect().Equals("http://auth.xrid.net/!331/"));
            assertTrue("Seventh child should have succeeded", redirXRDS.getFinalXRD().getStatusCode().Equals(Status.SUCCESS));

            assertTrue("The eighth child should be an XRDS element because it followed a Service-level Redirect", xrds.isXRDSAt(7));
            redirXRDS = xrds.getXRDSAt(7);
            assertTrue("Wrong redirect followed on the eighth child", redirXRDS.getRedirect().Equals("http://auth.xrid.net/!332/"));
            assertTrue("Eighth child should have succeeded", redirXRDS.getFinalXRD().getStatusCode().Equals(Status.SUCCESS));
            assertTrue("Should be one selected Service on eighth child", redirXRDS.getFinalXRD().getSelectedServices().getList().Count == 1);
            Service srv = (Service)redirXRDS.getFinalXRD().getSelectedServices().getList().get(0);
            assertTrue("In correct URI in selected service on eighth child", srv.getURIAt(0).getUriString().Equals("http://my.blog.com"));
            }
            catch (Exception e) {
            e.printStackTrace();
            fail("Not expecting exception: " + e);
            }
        }