/** * Make the license key. * * @since 1.0 * * @return string */ public function make() { $type = $this->get_product()->get_feature('licensing', array('field' => 'key-type')); $options = $this->get_product()->get_feature('licensing', array('field' => "type.{$type}")); $generator = itelic_get_key_type_generator($type); if ($generator) { $key = $generator->generate($options, $this->get_product(), $this->get_customer(), $this->get_transaction()); return substr(trim($key), 0, 128); } else { throw new \UnexpectedValueException("Invalid key type '{$type}''"); } }
/** * @depends test_get_key_type_generator */ public function test_get_key_type_class_must_be_overridden_with_a_sub_class() { $unique = md5(uniqid()); $g1 = $this->getMock('\\ITELIC\\Key\\Generator'); $g2 = $this->getMock('\\ITELIC\\Key\\Generator'); $this->assertTrue(itelic_register_key_type($unique, 'Name', $g1)); add_filter('itelic_get_key_type_generator', function ($generator, $slug) use($unique, $g2) { if ($slug === $unique) { $generator = $g2; } return $generator; }, 10, 2); $this->assertSame($g1, itelic_get_key_type_generator($unique)); }