You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
49 lines
2.1 KiB
49 lines
2.1 KiB
package com.mydreamjob.phaseb;
|
|
|
|
import com.mydreamjob.company.Company;
|
|
import com.mydreamjob.company.VerifiedCompanyGuard;
|
|
import com.mydreamjob.common.exception.BusinessException;
|
|
import com.mydreamjob.common.exception.ErrorCode;
|
|
import com.mydreamjob.common.exception.ErrorHttpStatusRegistry;
|
|
import org.junit.jupiter.api.Test;
|
|
import org.springframework.http.HttpStatus;
|
|
|
|
import static org.assertj.core.api.Assertions.assertThat;
|
|
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
|
|
|
class VerifiedCompanyGuardTest {
|
|
|
|
private final ErrorHttpStatusRegistry statuses = new ErrorHttpStatusRegistry();
|
|
|
|
@Test
|
|
void verifiedCompanyPassesWithoutMutatingTheCompany() {
|
|
Company company = Company.builder().id(41L).ownerUserId(72L).verified(true).build();
|
|
|
|
assertThat(VerifiedCompanyGuard.requireVerified(company)).isSameAs(company);
|
|
assertThat(company.getVerified()).isTrue();
|
|
}
|
|
|
|
@Test
|
|
void unverifiedCompanyGetsOneStableForbiddenBusinessError() {
|
|
for (Company company : new Company[]{
|
|
Company.builder().verified(false).build(),
|
|
Company.builder().verified(null).build()}) {
|
|
assertThatThrownBy(() -> VerifiedCompanyGuard.requireVerified(company))
|
|
.isInstanceOf(BusinessException.class)
|
|
.satisfies(error -> {
|
|
BusinessException business = (BusinessException) error;
|
|
assertThat(business.getErrorCodeInt()).isEqualTo(ErrorCode.COMPANY_NOT_VERIFIED.getCode());
|
|
assertThat(business.getErrorMessage()).isEqualTo(ErrorCode.COMPANY_NOT_VERIFIED.getMessage());
|
|
assertThat(statuses.resolve(business.getErrorCodeInt())).isEqualTo(HttpStatus.FORBIDDEN);
|
|
});
|
|
}
|
|
}
|
|
|
|
@Test
|
|
void missingCompanyDoesNotBecomeVerified() {
|
|
assertThatThrownBy(() -> VerifiedCompanyGuard.requireVerified(null))
|
|
.isInstanceOf(BusinessException.class)
|
|
.satisfies(error -> assertThat(((BusinessException) error).getErrorCodeInt())
|
|
.isEqualTo(ErrorCode.COMPANY_NOT_FOUND.getCode()));
|
|
}
|
|
}
|
|
|