findify / s3mock

Embedded S3 server for easy mocking
MIT License
388 stars 107 forks source link

missing uploadPartCopy? #182

Open AlJohri opened 2 years ago

AlJohri commented 2 years ago

looks like when doing a client.createMultipartUpload if I am uploading the parts using a copy via client.uploadPartCopy I get an exception. seems like only multipart upload is implemented. i think this is the offending line:

https://github.com/findify/s3mock/blob/068a585c0aef6a5af5c9057db295e9644cfb085b/src/main/scala/io/findify/s3mock/route/CopyObjectMultipart.scala#L44

Traceback:

[ERROR] [12/29/2021 19:22:26.051] [s3mock-akka.actor.default-dispatcher-15] [akka.actor.ActorSystemImpl(s3mock)] Error during processing of request: 'No value present'. Completing with 500 Internal Server Error response. To change default exception handling behavior, provide a custom ExceptionHandler.
java.util.NoSuchElementException: No value present
    at java.base/java.util.Optional.get(Optional.java:148)
Optional.java:148
    at io.findify.s3mock.route.CopyObjectMultipart.$anonfun$route$5(CopyObjectMultipart.scala:44)
    at akka.http.scaladsl.server.directives.RouteDirectives.$anonfun$complete$1(RouteDirectives.scala:47)
    at akka.http.scaladsl.server.StandardRoute$$anon$1.apply(StandardRoute.scala:19)
    at akka.http.scaladsl.server.directives.BasicDirectives.$anonfun$textract$2(BasicDirectives.scala:161)
    at akka.http.scaladsl.server.Directive.$anonfun$recover$4(Directive.scala:110)
    at akka.http.scaladsl.server.directives.BasicDirectives.$anonfun$textract$2(BasicDirectives.scala:161)
    at akka.http.scaladsl.server.Directive.$anonfun$recover$2(Directive.scala:110)
    at akka.http.scaladsl.server.directives.BasicDirectives.$anonfun$mapRouteResult$2(BasicDirectives.scala:68)
    at akka.http.scaladsl.server.directives.BasicDirectives.$anonfun$textract$2(BasicDirectives.scala:161)
    at akka.http.scaladsl.server.directives.FutureDirectives.$anonfun$onComplete$3(FutureDirectives.scala:37)
    at akka.http.scaladsl.util.FastFuture$.$anonfun$transformWith$1(FastFuture.scala:37)
    at akka.http.scaladsl.util.FastFuture$.strictTransform$1(FastFuture.scala:41)
    at akka.http.scaladsl.util.FastFuture$.transformWith$extension(FastFuture.scala:45)
    at akka.http.scaladsl.util.FastFuture$.transformWith$extension(FastFuture.scala:37)
    at akka.http.scaladsl.server.directives.FutureDirectives.$anonfun$onComplete$2(FutureDirectives.scala:37)
    at akka.http.scaladsl.server.directives.BasicDirectives.$anonfun$textract$2(BasicDirectives.scala:161)
    at akka.http.scaladsl.server.directives.FutureDirectives.$anonfun$onComplete$3(FutureDirectives.scala:37)
    at akka.http.scaladsl.util.FastFuture$.$anonfun$transformWith$1(FastFuture.scala:37)
    at akka.http.scaladsl.util.FastFuture$.strictTransform$1(FastFuture.scala:41)
    at akka.http.scaladsl.util.FastFuture$.transformWith$extension(FastFuture.scala:45)
    at akka.http.scaladsl.util.FastFuture$.transformWith$extension(FastFuture.scala:37)
    at akka.http.scaladsl.server.directives.FutureDirectives.$anonfun$onComplete$2(FutureDirectives.scala:37)
    at akka.http.scaladsl.server.directives.BasicDirectives.$anonfun$textract$2(BasicDirectives.scala:161)
    at akka.http.scaladsl.server.RouteConcatenation$RouteWithConcatenation.$anonfun$$tilde$2(RouteConcatenation.scala:47)
    at akka.http.scaladsl.util.FastFuture$.strictTransform$1(FastFuture.scala:41)
    at akka.http.scaladsl.util.FastFuture$.transformWith$extension(FastFuture.scala:45)
    at akka.http.scaladsl.util.FastFuture$.flatMap$extension(FastFuture.scala:26)
    at akka.http.scaladsl.server.RouteConcatenation$RouteWithConcatenation.$anonfun$$tilde$1(RouteConcatenation.scala:44)
    at akka.http.scaladsl.server.directives.BasicDirectives.$anonfun$mapRequestContext$2(BasicDirectives.scala:45)
    at akka.http.scaladsl.server.directives.BasicDirectives.$anonfun$textract$2(BasicDirectives.scala:161)
    at akka.http.scaladsl.server.directives.BasicDirectives.$anonfun$textract$2(BasicDirectives.scala:161)