use of org.candlepin.model.Rules in project candlepin by candlepin.
the class RulesResource method upload.
@ApiOperation(notes = "Uploads the Rules Returns a copy of the uploaded rules.", value = "upload")
@ApiResponses({ @ApiResponse(code = 400, message = "") })
@POST
@Consumes({ MediaType.APPLICATION_JSON, MediaType.TEXT_PLAIN })
@Produces({ MediaType.TEXT_PLAIN, MediaType.APPLICATION_JSON })
public String upload(String rulesBuffer) {
if (rulesBuffer == null || rulesBuffer.isEmpty()) {
throw new WebApplicationException(Response.Status.BAD_REQUEST);
}
Rules rules = null;
try {
String decoded = new String(Base64.decodeBase64(rulesBuffer));
rules = new Rules(decoded);
} catch (Throwable t) {
log.error("Exception in rules upload", t);
throw new BadRequestException(i18n.tr("Error decoding the rules. The text should be base 64 encoded"));
}
Rules oldRules = rulesCurator.getRules();
rulesCurator.update(rules);
sink.emitRulesModified(oldRules, rules);
// Trigger a recompile of the JS rules so version/source are set correctly:
jsProvider.compileRules(true);
return rulesBuffer;
}
use of org.candlepin.model.Rules in project candlepin by candlepin.
the class QuantityRulesTest method setUp.
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
// Load the default production rules:
InputStream is = this.getClass().getResourceAsStream(RulesCurator.DEFAULT_RULES_FILE);
Rules rules = new Rules(Util.readFile(is));
when(rulesCuratorMock.getUpdated()).thenReturn(new Date());
when(rulesCuratorMock.getRules()).thenReturn(rules);
when(cacheProvider.get()).thenReturn(cache);
provider = new JsRunnerProvider(rulesCuratorMock, cacheProvider);
translator = new StandardTranslator(consumerTypeCurator, environmentCurator, ownerCuratorMock);
quantityRules = new QuantityRules(provider.get(), new RulesObjectMapper(new ProductCachedSerializationModule(productCurator)), translator);
owner = new Owner("Test Owner " + TestUtil.randomInt());
product = TestUtil.createProduct();
pool = TestUtil.createPool(owner, product);
pool.setId("fakepoolid");
ctype = TestUtil.createConsumerType();
consumer = TestUtil.createConsumer(owner);
when(consumerTypeCurator.find(eq(ctype.getId()))).thenReturn(ctype);
when(consumerTypeCurator.getConsumerType(eq(consumer))).thenReturn(ctype);
Entitlement e = TestUtil.createEntitlement(owner, consumer, pool, new EntitlementCertificate());
Set<Entitlement> entSet = new HashSet<>();
entSet.add(e);
pool.setEntitlements(entSet);
pool.getProduct().setAttribute(Pool.Attributes.MULTI_ENTITLEMENT, "yes");
pool.getProduct().setAttribute(Product.Attributes.STACKING_ID, "1");
}
use of org.candlepin.model.Rules in project candlepin by candlepin.
the class RulesVersionMatchingTest method ensureWorking.
@Test
public void ensureWorking() {
Rules rules = null;
try {
rules = new Rules(version);
if (!expectedToBeValid) {
throw new RuntimeException("Expected rule parsing to have failed.");
}
assertEquals(expectedVersion, rules.getVersion());
} catch (RuleParseException e) {
if (expectedToBeValid) {
throw e;
}
}
}
use of org.candlepin.model.Rules in project candlepin by candlepin.
the class EnforcerTest method createEnforcer.
@Before
public void createEnforcer() throws Exception {
MockitoAnnotations.initMocks(this);
when(config.getInt(eq(ConfigProperties.PRODUCT_CACHE_MAX))).thenReturn(100);
owner = createOwner();
ownerCurator.create(owner);
consumer = this.createConsumer(owner);
BufferedReader reader = new BufferedReader(new InputStreamReader(getClass().getResourceAsStream("/rules/test-rules.js")));
StringBuilder builder = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
builder.append(line + "\n");
}
reader.close();
Rules rules = mock(Rules.class);
when(rules.getRules()).thenReturn(builder.toString());
when(rulesCurator.getRules()).thenReturn(rules);
when(rulesCurator.getUpdated()).thenReturn(TestDateUtil.date(2010, 1, 1));
when(cacheProvider.get()).thenReturn(cache);
JsRunner jsRules = new JsRunnerProvider(rulesCurator, cacheProvider).get();
translator = new StandardTranslator(consumerTypeCurator, mockEnvironmentCurator, mockOwnerCurator);
enforcer = new EntitlementRules(new DateSourceForTesting(2010, 1, 1), jsRules, i18n, config, consumerCurator, consumerTypeCurator, mockProductCurator, new RulesObjectMapper(new ProductCachedSerializationModule(mockProductCurator)), mockOwnerCurator, mockOwnerProductCurator, mockProductShareCurator, mockProductManager, mockEventSink, mockEventFactory, translator);
}
use of org.candlepin.model.Rules in project candlepin by candlepin.
the class PoolRulesInstanceTest method setUp.
@Before
public void setUp() {
InputStream is = this.getClass().getResourceAsStream(RulesCurator.DEFAULT_RULES_FILE);
Rules rules = new Rules(Util.readFile(is));
when(rulesCuratorMock.getUpdated()).thenReturn(new Date());
when(rulesCuratorMock.getRules()).thenReturn(rules);
when(configMock.getInt(eq(ConfigProperties.PRODUCT_CACHE_MAX))).thenReturn(100);
poolRules = new PoolRules(poolManagerMock, configMock, entCurMock, ownerProdCuratorMock, productCurator);
}
Aggregations