Class: Synthra::Types::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/synthra/types/base.rb

Direct Known Subclasses

AddressLocation::Address, AddressLocation::AddressLine2, AddressLocation::AirportContinent, AddressLocation::AirportCountryCode, AddressLocation::AirportElevation, AddressLocation::AirportGpsCode, AddressLocation::AirportLatitude, AddressLocation::AirportLongitude, AddressLocation::AirportMunicipality, AddressLocation::AirportName, AddressLocation::AirportRegionCode, AddressLocation::BankCity, AddressLocation::BankCountryCode, AddressLocation::BankState, AddressLocation::BankStreetAddress, AddressLocation::City, AddressLocation::Country, AddressLocation::CountryCode, AddressLocation::HospitalCity, AddressLocation::HospitalPostalCode, AddressLocation::HospitalState, AddressLocation::HospitalStreetAddress, AddressLocation::Latitude, AddressLocation::Longitude, AddressLocation::PostalCode, AddressLocation::State, AddressLocation::StreetName, AddressLocation::StreetNumber, AddressLocation::StreetSuffix, AddressLocation::Timezone, CommerceProducts::CompanyName, CommerceProducts::ConstructionHeavyEquipment, CommerceProducts::ConstructionMaterial, CommerceProducts::ConstructionRole, CommerceProducts::ConstructionStandardCostCode, CommerceProducts::ConstructionSubcontractCategory, CommerceProducts::ConstructionTrade, CommerceProducts::Discount, CommerceProducts::JobTitle, CommerceProducts::ProductCategory, CommerceProducts::ProductDescription, CommerceProducts::ProductGrocery, CommerceProducts::ProductName, CommerceProducts::ProductPrice, CommerceProducts::ProductSubcategory, CommerceProducts::ShirtSize, CommerceProducts::Sku, CommerceProducts::TaxRate, Core::AlphanumericId, Core::ArrayType, Core::BelongsTo, Core::Boolean, Core::CharacterSequence, Core::Const, Core::Copy, Core::Custom, Core::DefaultValue, Core::DeterministicId, Core::DeterministicUuid, Core::DigitSequence, Core::Enum, Core::HasMany, Core::HasOne, Core::IdSequence, Core::Locale, Core::MapByField, Core::Number, Core::NumericStringId, Core::ObjectType, Core::OneOf, Core::Reference, Core::SchemaRef, Core::Sequence, Core::Shared, Core::ShortId, Core::SnowflakeId, Core::Text, Core::Token, Core::Ulid, Core::UnixTimestampMs, Core::Uuid, Crypto::BitcoinAddress, Crypto::EthereumAddress, Crypto::HashType, Crypto::PrivateKey, DateTime::DateBetween, DateTime::DateType, DateTime::DatetimeType, DateTime::FutureDate, DateTime::Now, DateTime::PastDate, DateTime::TimeType, DateTime::Timestamp, FinanceBanking::AccountNumber, FinanceBanking::BankLei, FinanceBanking::BankName, FinanceBanking::BankRiadCode, FinanceBanking::BankRoutingNumber, FinanceBanking::BankSwiftBic, FinanceBanking::CreditCard, FinanceBanking::CreditCardType, FinanceBanking::Currency, FinanceBanking::DunsNumber, FinanceBanking::Ein, FinanceBanking::Iban, FinanceBanking::MedicareBeneficiaryId, FinanceBanking::Money, FinanceBanking::NhsNumber, FinanceBanking::Ssn, FinanceBanking::TransactionAmount, Formula, HealthMedical::BloodType, HealthMedical::Bmi, HealthMedical::HeartRate, HealthMedical::MedicalCode, JsonArray, MediaEntertainment::MovieGenres, MediaEntertainment::MovieTitle, NaughtyString, PersonalNames::Age, PersonalNames::FamilyNameChinese, PersonalNames::FirstName, PersonalNames::FirstNameEuropean, PersonalNames::FirstNameFemale, PersonalNames::FirstNameMale, PersonalNames::FullName, PersonalNames::Gender, PersonalNames::GenderAbbrev, PersonalNames::GenderBinary, PersonalNames::GenderFacebook, PersonalNames::GivenNameChinese, PersonalNames::LastName, PersonalNames::Name, PersonalNames::NationalId, PersonalNames::Suffix, PersonalNames::Title, PersonalNames::Username, Regex, RepeatingElement, Scenario, TechnologyInternet::AppBundleId, TechnologyInternet::AppName, TechnologyInternet::AppVersion, TechnologyInternet::Base64ImageUrl, TechnologyInternet::Domain, TechnologyInternet::DummyImageUrl, TechnologyInternet::Email, TechnologyInternet::Ip, TechnologyInternet::IpV4Cidr, TechnologyInternet::IpV6Cidr, TechnologyInternet::Ipv6, TechnologyInternet::Language, TechnologyInternet::LanguageCode, TechnologyInternet::MacAddress, TechnologyInternet::MimeType, TechnologyInternet::MobileDeviceBrand, TechnologyInternet::MobileDeviceModel, TechnologyInternet::MobileDeviceOs, TechnologyInternet::MobileDeviceReleaseDate, TechnologyInternet::MongodbObjectId, TechnologyInternet::Phone, TechnologyInternet::TopLevelDomain, TechnologyInternet::Url, TechnologyInternet::UserAgent, Template, TextContent::Avatar, TextContent::Blank, TextContent::Buzzword, TextContent::CatchPhrase, TextContent::Color, TextContent::DepartmentCorporate, TextContent::DepartmentRetail, TextContent::EmptyArray, TextContent::Encrypt, TextContent::FakeCompanyName, TextContent::FileName, TextContent::Frequency, TextContent::HashtagText, TextContent::HexColor, TextContent::IndicesPair, TextContent::LinkedInSkill, TextContent::Md5, TextContent::MessageText, TextContent::NatoPhonetic, TextContent::Paragraphs, TextContent::Password, TextContent::PasswordHash, TextContent::Race, TextContent::RowNumber, TextContent::Sentences, TextContent::Sha1, TextContent::Sha256, TextContent::ShortHexColor, TextContent::Slogan, TextContent::Slug, TextContent::SocialHandle, TextContent::SqlExpression, TextContent::University, TextContent::Words, Travel::Airline, Travel::AirportCode, Travel::FlightNumber, Travel::SeatNumber

Instance Method Summary collapse

Instance Method Details

#faker_adapter(context) ⇒ Object (protected)



41
42
43
44
45
# File 'lib/synthra/types/base.rb', line 41

def faker_adapter(context)
  return nil unless context

  context.faker_adapter if context.respond_to?(:faker_adapter)
end

#generate(rng, context, args, mode) ⇒ Object



6
7
8
9
10
11
12
13
14
# File 'lib/synthra/types/base.rb', line 6

def generate(rng, context, args, mode)
  case mode
  when :random then generate_random(rng, context, args)
  when :edge then generate_edge(rng, context, args)
  when :invalid then generate_invalid(rng, context, args)
  when :hostile then generate_hostile(rng, context, args)
  else generate_random(rng, context, args)
  end
end

#generate_edge(rng, context, args) ⇒ Object



20
21
22
# File 'lib/synthra/types/base.rb', line 20

def generate_edge(rng, context, args)
  generate_random(rng, context, args)
end

#generate_hostile(rng, context, args) ⇒ Object

Generate hostile/malicious data for security testing Override this method in type classes to provide specific attack vectors

Parameters:

Returns:

  • (Object)

    hostile data payload



34
35
36
37
# File 'lib/synthra/types/base.rb', line 34

def generate_hostile(rng, context, args)
  # Default: return edge case value (fallback)
  generate_edge(rng, context, args)
end

#generate_invalid(rng, context, args) ⇒ Object



24
25
26
# File 'lib/synthra/types/base.rb', line 24

def generate_invalid(rng, context, args)
  nil
end

#generate_random(rng, context, args) ⇒ Object

Raises:

  • (NotImplementedError)


16
17
18
# File 'lib/synthra/types/base.rb', line 16

def generate_random(rng, context, args)
  raise NotImplementedError, "#{self.class} must implement #generate_random"
end