blob: fa31849bc254662496e477226517fbebf15489c8 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.nlpcraft.server.rest
import org.junit.jupiter.api.Assertions._
import org.junit.jupiter.api.Test
class NCRestCompanySpec extends NCRestSpec {
@Test
def testCurrentCompany(): Unit = {
var compName: String = null
post("company/get")(("$.name", (name: String) ⇒ compName = name))
assertNotNull(compName)
post("company/update", "name""newName")()
post("company/get")(("$.name", (name: String) ⇒ assertEquals("newName", name)))
post("company/update", "name" → compName)()
post("company/get")(("$.name", (name: String) ⇒ assertEquals(compName, name)))
}
@Test
def testNewCompany(): Unit = {
val compName = rnd()
val adminEmail = s"$compName@test.com"
val adminPswd = "test"
// Adds company.
post(
"company/add",
"name" → compName,
"website""website",
"country""country",
"region""region",
"city""city",
"address""address",
"postalCode""postalCode",
"adminEmail" → adminEmail,
"adminPasswd" → adminPswd,
"adminFirstName""firstName",
"adminLastName""lastName",
"adminAvatarUrl""avatarUrl"
)(
("$.token", (tkn: String) ⇒ assertNotNull(tkn)),
("$.adminId", (id: Number) ⇒ assertNotNull(id))
)
val adminTkn = signin(adminEmail, adminPswd)
try {
// Checks company fields.
post("company/get", adminTkn)(
("$.name", (name: String) ⇒ assertEquals(compName, name)),
("$.website", (website: String) ⇒ assertEquals("website", website)),
("$.country", (country: String) ⇒ assertEquals("country", country)),
("$.region", (region: String) ⇒ assertEquals("region", region)),
("$.city", (city: String) ⇒ assertEquals("city", city)),
("$.address", (address: String) ⇒ assertEquals("address", address)),
("$.postalCode", (postalCode: String) ⇒ assertEquals("postalCode", postalCode))
)
// Checks company's admin fields.
post("user/get", adminTkn)(
("$.isAdmin", (isAdmin: Boolean) ⇒ assertTrue(isAdmin)),
("$.email", (email: String) ⇒ assertEquals(adminEmail, email)),
("$.firstName", (firstName: String) ⇒ assertEquals("firstName", firstName)),
("$.lastName", (lastName: String) ⇒ assertEquals("lastName", lastName)),
("$.avatarUrl", (avatarUrl: String) ⇒ assertEquals("avatarUrl", avatarUrl))
)
// Updates company.
post("company/update", adminTkn,
"name" → compName,
"website""website2",
"country""country2",
"region""region2",
"city""city2",
"address""address2",
"postalCode""postalCode2"
)()
// Checks company fields.
post("company/get", adminTkn)(
("$.name", (name: String) ⇒ assertEquals(compName, name)),
("$.website", (website: String) ⇒ assertEquals("website2", website)),
("$.country", (country: String) ⇒ assertEquals("country2", country)),
("$.region", (region: String) ⇒ assertEquals("region2", region)),
("$.city", (city: String) ⇒ assertEquals("city2", city)),
("$.address", (address: String) ⇒ assertEquals("address2", address)),
("$.postalCode", (postalCode: String) ⇒ assertEquals("postalCode2", postalCode))
)
// Updates company.
post("company/update", adminTkn, "name" → compName)()
// Checks company fields.
post("company/get", adminTkn)(
("$.name", (name: String) ⇒ assertEquals(compName, name)),
("$.website", (website: String) ⇒ assertEquals(null, website)),
("$.country", (country: String) ⇒ assertEquals(null, country)),
("$.region", (region: String) ⇒ assertEquals(null, region)),
("$.city", (city: String) ⇒ assertEquals(null, city)),
("$.address", (address: String) ⇒ assertEquals(null, address)),
("$.postalCode", (postalCode: String) ⇒ assertEquals(null, postalCode))
)
// Resets token.
post("company/token/reset", adminTkn)()
}
finally
post("company/delete", adminTkn)()
}
@Test
def testParameters(): Unit = {
testCompany()
testCompany(website = Some("website"))
testCompany(
website = Some("website"),
country = Some("country")
)
testCompany(
website = Some("website"),
country = Some("country"),
region = Some("region")
)
testCompany(
website = Some("website"),
country = Some("country"),
region = Some("region"),
city = Some("city")
)
testCompany(
website = Some("website"),
country = Some("country"),
region = Some("region"),
city = Some("city"),
address = Some("address")
)
testCompany(
website = Some("website"),
country = Some("country"),
region = Some("region"),
city = Some("city"),
address = Some("address"),
postalCode = Some("postalCode")
)
testCompany(
website = Some("website"),
country = Some("country"),
region = Some("region"),
city = Some("city"),
address = Some("address"),
postalCode = Some("postalCode"),
adminAvatarUrl = Some("adminAvatarUrl")
)
}
/**
*
* @param website
* @param country
* @param region
* @param city
* @param address
* @param postalCode
* @param adminAvatarUrl
*/
private def testCompany(
website: Option[String] = None,
country: Option[String] = None,
region: Option[String] = None,
city: Option[String] = None,
address: Option[String] = None,
postalCode: Option[String] = None,
adminAvatarUrl: Option[String] = None
): Unit = {
val compName = rnd()
val adminEmail = s"$compName@test.com"
val adminPswd = "test"
post(
"company/add",
"name" → compName,
"website" → website.orNull,
"country" → country.orNull,
"region" → region.orNull,
"city" → city.orNull,
"address" → address.orNull,
"postalCode" → postalCode.orNull,
"adminEmail" → adminEmail,
"adminPasswd" → adminPswd,
"adminFirstName""firstName",
"adminLastName""lastName",
"adminAvatarUrl" → adminAvatarUrl.orNull
)(
("$.adminId", (id: Number) ⇒ assertNotNull(id))
)
post("company/delete", signin(adminEmail, adminPswd))()
}
}