ops4j / org.ops4j.pax.exam2

Pax Exam is a testing framework for OSGi
https://ops4j1.jira.com/wiki/spaces/PAXEXAM4/
Apache License 2.0
84 stars 100 forks source link

PAXEXAM not picking up credentials when using Maven Mirror [PAXEXAM-672] #777

Open ops4j-issues opened 9 years ago

ops4j-issues commented 9 years ago

Stefan Strobel created PAXEXAM-672

Hello,

I am experiencing an issue when running tests with PAXEXAM. Dependencies are dynamically loaded when running the test, which is fine.

This mechanism does NOT work any more when using a Maven mirror definition like so:

<mirrors>
<mirror>
<id>my-server-id</id>
<mirrorOf>*</mirrorOf>
<url>$

{some-dynamic-URL}

</url>
</mirror>
</mirrors>

When calling Maven the dynamic URL is correctly replaced and PAXEXAM tries to download its dependencies from this source. But the required authentication information is lost. This results in Unauthorized errors.

Can you please have a look into this and make sure that the credentials defined in the <server> section get correctly picked up when using a mirror?

Thanks a lot!


Affects: 3.5.0 Votes: 0, Watches: 4

ops4j-issues commented 9 years ago

Harald Wellmann commented

Sounds like an issue in Pax URL, there has been some work in that area recently.

Can you reproduce the issue with Pax Exam 4.3.0 + Pax URL 2.2.0?

ops4j-issues commented 9 years ago

Stefan Strobel commented

Hi Harald, thanks for the quick feedback. No, unfortunately I am not the owner of the code base but rather the executor. I will ask if the dependency can be set to a higher Pax Exam version. I'll try to keep on track of this. Thanks!

ops4j-issues commented 9 years ago

Konrad Windszus commented

I have the same problem with version 4.4.0.
The exact error is

1598 [main] WARN org.ops4j.pax.url.mvn.internal.AetherBasedResolver - Error resolving artifactorg.ops4j.pax.exam:pax-exam-inject:jar:4.4.0:Could not transfer artifact org.ops4j.pax.exam:pax-exam-inject:jar:4.4.0 from/to  (https://repo.int.netcentric.biz/nexus/content/groups/public/): Not authorized , ReasonPhrase:Unauthorized.
shaded.org.eclipse.aether.resolution.ArtifactResolutionException: Could not transfer artifact org.ops4j.pax.exam:pax-exam-inject:jar:4.4.0 from/to  (https://repo.int.netcentric.biz/nexus/content/groups/public/): Not authorized , ReasonPhrase:Unauthorized.
    at shaded.org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolve(DefaultArtifactResolver.java:444)
    at shaded.org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifacts(DefaultArtifactResolver.java:246)
    at shaded.org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifact(DefaultArtifactResolver.java:223)
    at shaded.org.eclipse.aether.internal.impl.DefaultRepositorySystem.resolveArtifact(DefaultRepositorySystem.java:294)
    at org.ops4j.pax.url.mvn.internal.AetherBasedResolver.resolve(AetherBasedResolver.java:476)
    at org.ops4j.pax.url.mvn.internal.AetherBasedResolver.resolve(AetherBasedResolver.java:433)
    at org.ops4j.pax.url.mvn.internal.AetherBasedResolver.resolve(AetherBasedResolver.java:411)
    at org.ops4j.pax.url.mvn.internal.AetherBasedResolver.resolve(AetherBasedResolver.java:386)
    at org.ops4j.pax.url.mvn.internal.Connection.getInputStream(Connection.java:124)
    at java.net.URL.openStream(URL.java:1037)
    at org.ops4j.pax.exam.forked.provision.StreamUtils.streamCopy(StreamUtils.java:103)
    at org.ops4j.pax.exam.forked.provision.PlatformImpl.download(PlatformImpl.java:133)
    at org.ops4j.pax.exam.forked.ForkedTestContainer.downloadBundle(ForkedTestContainer.java:352)
    at org.ops4j.pax.exam.forked.ForkedTestContainer.installAndStartBundles(ForkedTestContainer.java:281)
    at org.ops4j.pax.exam.forked.ForkedTestContainer.start(ForkedTestContainer.java:165)
    at org.ops4j.pax.exam.spi.reactors.AllConfinedStagedReactor.invoke(AllConfinedStagedReactor.java:79)
    at org.ops4j.pax.exam.junit.impl.ProbeRunner$2.evaluate(ProbeRunner.java:267)
    at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
    at org.ops4j.pax.exam.junit.impl.ProbeRunner.run(ProbeRunner.java:98)
    at org.ops4j.pax.exam.junit.PaxExam.run(PaxExam.java:93)
    at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:236)
    at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:134)
    at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:113)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:189)
    at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:165)
    at org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:85)
    at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:103)
    at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:74)
Caused by: shaded.org.eclipse.aether.transfer.ArtifactTransferException: Could not transfer artifact org.ops4j.pax.exam:pax-exam-inject:jar:4.4.0 from/to  (https://repo.int.netcentric.biz/nexus/content/groups/public/): Not authorized , ReasonPhrase:Unauthorized.
    at shaded.org.eclipse.aether.connector.basic.ArtifactTransportListener.transferFailed(ArtifactTransportListener.java:43)
    at shaded.org.eclipse.aether.connector.basic.BasicRepositoryConnector$TaskRunner.run(BasicRepositoryConnector.java:355)
    at shaded.org.eclipse.aether.util.concurrency.RunnableErrorForwarder$1.run(RunnableErrorForwarder.java:67)
    at shaded.org.eclipse.aether.connector.basic.BasicRepositoryConnector$DirectExecutor.execute(BasicRepositoryConnector.java:581)
    at shaded.org.eclipse.aether.connector.basic.BasicRepositoryConnector.get(BasicRepositoryConnector.java:249)
    at shaded.org.eclipse.aether.internal.impl.DefaultArtifactResolver.performDownloads(DefaultArtifactResolver.java:520)
    at shaded.org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolve(DefaultArtifactResolver.java:421)
    ... 39 more
Caused by: shaded.org.apache.maven.wagon.authorization.AuthorizationException: Not authorized , ReasonPhrase:Unauthorized.
    at shaded.org.apache.maven.wagon.providers.http.AbstractHttpClientWagon.fillInputData(AbstractHttpClientWagon.java:1022)
    at shaded.org.apache.maven.wagon.providers.http.AbstractHttpClientWagon.fillInputData(AbstractHttpClientWagon.java:977)
    at shaded.org.apache.maven.wagon.StreamWagon.getInputStream(StreamWagon.java:116)
    at shaded.org.apache.maven.wagon.StreamWagon.getIfNewer(StreamWagon.java:88)
    at shaded.org.apache.maven.wagon.StreamWagon.get(StreamWagon.java:61)
    at shaded.org.eclipse.aether.transport.wagon.WagonTransporter$GetTaskRunner.run(WagonTransporter.java:560)
    at shaded.org.eclipse.aether.transport.wagon.WagonTransporter.execute(WagonTransporter.java:427)
    at shaded.org.eclipse.aether.transport.wagon.WagonTransporter.get(WagonTransporter.java:404)
    at shaded.org.eclipse.aether.connector.basic.BasicRepositoryConnector$GetTaskRunner.runTask(BasicRepositoryConnector.java:447)
    at shaded.org.eclipse.aether.connector.basic.BasicRepositoryConnector$TaskRunner.run(BasicRepositoryConnector.java:350)
    ... 44 more
ops4j-issues commented 8 years ago

Jeroen Bastijns commented

@Stefan

We had the same issue with something similar. I debugged PAXURL and found that the mirror must have a name declared for authentication to work. The authentication for a mirror is stored by the mirror's name instead of the mirror's id. I will file a bug for this.

ops4j-issues commented 8 years ago

Jeroen Bastijns commented

The Bug-report:
https://ops4j1.jira.com/browse/PAXURL-320