如何在akka http服务中通过extractRequestContext为文件Uploading编写测试用例

时间:2018-02-13 08:21:45

标签: scala akka akka-http

请在这里建议我在Akka HTTP微服务中有一个上传服务,它工作正常。现在我需要为下面的代码编写测试用例

    path( "file-upload") {
extractClientIP { ip =>
      optionalHeaderValueByName(Constants.AUTH) { auth =>
        (post & extractRequestContext) {         request =>
               extractRequestContext {
      ctx => {
        implicit val materializer = ctx.materializer
        implicit val ec = ctx.executionContext
        val currentTime = TimeObject.getCurrentTime()
        fileUpload("fileUpload") {
          case (fileInfo, fileStream) =>
                    val localPath = Configuration.excelFilePath
            val uniqueidString = "12345"
            val filename = uniqueidString + fileInfo.fileName
            val sink = FileIO.toPath(Paths.get(localPath) resolve filename)
            val writeResult = fileStream.runWith(sink)
            onSuccess(writeResult) { result =>
              result.status match {
                case Success(_) =>
                  var excelPath = localPath + File.separator + uniqueidString + fileInfo.fileName 
                var doc_count = itemsExcelParse(excelPath, companyCode, subCompanyId, userId) 
                                   val currentTime2 = TimeObject.getCurrentTime()
                                  var upload_time = currentTime2 - currentTime
                  val resp: JsValue = Json.toJson(doc_count)
                  complete {
                    val json: JsValue = Json.obj("status" -> Constants.SUCCESS,
                      "status_details" -> "null", "upload_details" -> resp)
                    HttpResponse(status = StatusCodes.OK, entity = HttpEntity(ContentType(MediaTypes.`application/json`), json.toString))
                  }

                case Failure(e) =>
                  complete {
                                       val json: JsValue = Json.obj("status" -> Constants.ERROR, "status_details" -> Constants.ERROR_445)
                    HttpResponse(status = StatusCodes.BandwidthLimitExceeded, entity = HttpEntity(ContentType(MediaTypes.`application/json`), json.toString))
                  }
              }
            }
        }
      }
    }
        }
      }
    }
  }

我已经尝试了测试用例,但它无法正常工作

          " File upload " should "be able to upload file" in {

    val p: Path = Paths.get("E:\\Excel\\Tables.xlsx")
    val formData = Multipart.FormData.fromPath("fileUpload", ContentTypes.NoContentType, p, 1000)
    Post(s"/file-upload", formData) -> route -> check {
      println(" File upload - file uploaded successfully")
      status shouldBe StatusCodes.OK
      responseAs[String] contains "File successfully uploaded"
    }
  }

我已将内容类型更改为application/octet-stream。文件未上传到服务器请在此处建议如何编写用于文件上传的测试用例。

0 个答案:

没有答案