Skip to content

Commit

Permalink
test: DefaultYapiApiHelperTest (#824)
Browse files Browse the repository at this point in the history
  • Loading branch information
tangcent authored Aug 28, 2022
1 parent 352a23a commit c96d19b
Show file tree
Hide file tree
Showing 2 changed files with 683 additions and 75 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -37,53 +37,32 @@ open class DefaultYapiApiHelper : AbstractYapiApiHelper(), YapiApiHelper {
@Inject
internal lateinit var actionContext: ActionContext

override fun findCartWeb(module: String, cartName: String): String? {
val token = yapiSettingsHelper.getPrivateToken(module)
val projectId = getProjectIdByToken(token!!) ?: return null
val catId = findCart(token, cartName) ?: return null
return getCartWeb(projectId, catId)
}

override fun getCartWeb(projectId: String, catId: String): String? {
return "${yapiSettingsHelper.getServer()}/project/$projectId/interface/api/cat_$catId"
override fun findApi(token: String, catId: String, apiName: String): String? {
return listApis(token, catId)
?.firstOrNull { api ->
api.sub("title")
?.asString == apiName
}?.sub("_id")?.asString
}

override fun getApiWeb(module: String, cartName: String, apiName: String): String? {
val token = yapiSettingsHelper.getPrivateToken(module)
val projectId = getProjectIdByToken(token!!) ?: return null
val catId = findCart(token, cartName) ?: return null
val apiId = findApi(token, catId, apiName)
return "${yapiSettingsHelper.getServer()}/project/$projectId/interface/api/$apiId"
override fun findApis(token: String, catId: String): ArrayList<Any?>? {
return listApis(token, catId)
?.asList()
}

override fun findCart(token: String, name: String): String? {
val projectId: String = getProjectIdByToken(token) ?: return null
val key = "$projectId$name"
var cachedCartId = cacheLock.readLock().withLock { cartIdCache[key] }
if (cachedCartId != null) return cachedCartId
var projectInfo: JsonElement? = null
try {
projectInfo = getProjectInfo(token, projectId)
val cats = projectInfo
?.sub("data")
?.sub("cat")
?.asJsonArray
cats?.forEach { cat ->
if (cat.sub("name")?.asString == name) {
cachedCartId = cat.sub("_id")!!
.asString
if (cachedCartId != null) {
cacheLock.writeLock().withLock {
cartIdCache[key] = cachedCartId!!
}
}
return cachedCartId
}
}
} catch (e: Exception) {
logger.traceError("error to find cat. projectId:$projectId, info: ${projectInfo?.toString()}", e)
override fun listApis(token: String, catId: String, limit: Int?): JsonArray? {
var apiLimit = limit ?: localStorage.get("__internal__", "yapi.api.limit").asInt() ?: 1000
val url = "${yapiSettingsHelper.getServer()}$GET_CAT?token=$token&catid=$catId&limit=$apiLimit"
val jsonArray = GsonUtils.parseToJsonTree(getByApi(url))
?.sub("data")
?.sub("list")
?.asJsonArray
if (jsonArray?.size() == apiLimit && apiLimit < 5000) {
apiLimit = (apiLimit * 1.4).toInt()
localStorage.set("__internal__", "yapi.api.limit", apiLimit)
return listApis(token, catId, apiLimit)
}
return null
return jsonArray
}

private val saveInterceptor: YapiSaveInterceptor by lazy {
Expand Down Expand Up @@ -120,6 +99,55 @@ open class DefaultYapiApiHelper : AbstractYapiApiHelper(), YapiApiHelper {
}
}

override fun getApiWeb(module: String, cartName: String, apiName: String): String? {
val token = yapiSettingsHelper.getPrivateToken(module)
val projectId = getProjectIdByToken(token!!) ?: return null
val catId = findCart(token, cartName) ?: return null
val apiId = findApi(token, catId, apiName) ?: return null
return "${yapiSettingsHelper.getServer()}/project/$projectId/interface/api/$apiId"
}

override fun findCartWeb(module: String, cartName: String): String? {
val token = yapiSettingsHelper.getPrivateToken(module)
val projectId = getProjectIdByToken(token!!) ?: return null
val catId = findCart(token, cartName) ?: return null
return getCartWeb(projectId, catId)
}

override fun getCartWeb(projectId: String, catId: String): String? {
return "${yapiSettingsHelper.getServer()}/project/$projectId/interface/api/cat_$catId"
}

override fun findCart(token: String, name: String): String? {
val projectId: String = getProjectIdByToken(token) ?: return null
val key = "$projectId$name"
var cachedCartId = cacheLock.readLock().withLock { cartIdCache[key] }
if (cachedCartId != null) return cachedCartId
var projectInfo: JsonElement? = null
try {
projectInfo = getProjectInfo(token, projectId)
val cats = projectInfo
?.sub("data")
?.sub("cat")
?.asJsonArray
cats?.forEach { cat ->
if (cat.sub("name")?.asString == name) {
cachedCartId = cat.sub("_id")!!
.asString
if (cachedCartId != null) {
cacheLock.writeLock().withLock {
cartIdCache[key] = cachedCartId!!
}
}
return cachedCartId
}
}
} catch (e: Exception) {
logger.traceError("error to find cat. projectId:$projectId, info: ${projectInfo?.toString()}", e)
}
return null
}

override fun addCart(privateToken: String, name: String, desc: String): Boolean {
val projectId = getProjectIdByToken(privateToken) ?: return false
return addCart(projectId, privateToken, name, desc)
Expand All @@ -130,11 +158,13 @@ open class DefaultYapiApiHelper : AbstractYapiApiHelper(), YapiApiHelper {
val returnValue = httpClientProvide!!.getHttpClient()
.post(yapiSettingsHelper.getServer(false) + ADD_CART)
.contentType(ContentType.APPLICATION_JSON)
.body(KV.create<Any?, Any?>()
.set("desc", desc)
.set("project_id", projectId)
.set("name", name)
.set("token", yapiSettingsHelper.rawToken(token)))
.body(
KV.create<Any?, Any?>()
.set("desc", desc)
.set("project_id", projectId)
.set("name", name)
.set("token", yapiSettingsHelper.rawToken(token))
)
.call()
.use { it.string() }

Expand Down Expand Up @@ -163,34 +193,6 @@ open class DefaultYapiApiHelper : AbstractYapiApiHelper(), YapiApiHelper {
}
}

override fun findApi(token: String, catId: String, apiName: String): String? {
return listApis(token, catId)
?.firstOrNull { api ->
api.sub("title")
?.asString == apiName
}?.sub("_id")?.asString
}

override fun findApis(token: String, catId: String): ArrayList<Any?>? {
return listApis(token, catId)
?.asList()
}

override fun listApis(token: String, catId: String, limit: Int?): JsonArray? {
var apiLimit = limit ?: localStorage.get("__internal__", "yapi.api.limit").asInt() ?: 1000
val url = "${yapiSettingsHelper.getServer()}$GET_CAT?token=$token&catid=$catId&limit=$apiLimit"
val jsonArray = GsonUtils.parseToJsonTree(getByApi(url))
?.sub("data")
?.sub("list")
?.asJsonArray
if (jsonArray?.size() == apiLimit && apiLimit < 5000) {
apiLimit = (apiLimit * 1.4).toInt()
localStorage.set("__internal__", "yapi.api.limit", apiLimit)
return listApis(token, catId, apiLimit)
}
return jsonArray
}

override fun findCarts(project_id: String, token: String): ArrayList<Any?>? {
val url = "${yapiSettingsHelper.getServer()}$GET_CAT_MENU?project_id=$project_id&token=$token"
return GsonUtils.parseToJsonTree(getByApi(url))
Expand Down
Loading

0 comments on commit c96d19b

Please sign in to comment.