Skip to content

Latest commit

 

History

History
289 lines (190 loc) · 10.3 KB

CHANGELOG.md

File metadata and controls

289 lines (190 loc) · 10.3 KB

Changelog

All notable changes to apollo-smith will be documented in this file.

This project adheres to Semantic Versioning.

0.14.0 - 2024-09-24

  • Update apollo-compiler dependency to =1.0.0-beta.24

0.13.0 - 2024-09-17

  • Update apollo-compiler dependency to =1.0.0-beta.23

0.12.0 - 2024-09-09

  • Update apollo-compiler dependency to =1.0.0-beta.22

0.11.0 - 2024-09-03

  • Update apollo-compiler dependency to =1.0.0-beta.21

0.10.0 - 2024-07-31

  • Update apollo-parser dependency to 0.8.0
  • Update apollo-compiler dependency to =1.0.0-beta.20

0.9.0 - 2024-07-19

  • Update apollo-compiler dependency to =1.0.0-beta.19

0.8.0 - 2024-06-27

  • Update apollo-compiler dependency to =1.0.0-beta.18

0.7.0 - 2024-06-20

Features

  • Improve field variability in Selection Set generation - geal, pull/866. This changes the field generation algorithm in apollo-smith to allow more variety, because the previous implementation was the previous implementation was too biased towards the first field specified in a type. This also adds an example to generate a random query from a schema.

0.6.0-beta.1 - 2023-11-30

BREAKING

  • Remove the parser-impl feature flag - SimonSapin, pull/754. This functionality is now always enabled.
  • Use apollo-compiler instead of apollo-encoder for serialization - SimonSapin, pull/754. The exact string output may change.

Fixes

  • Make serialization ordering deterministic - SimonSapin, pull/754. Internally use IndexMap and IndexSet instead of IndexMap and IndexSet

0.5.0 - 2023-10-19

BREAKING

  • [email protected] - SimonSapin, pull/694

    This updates the version of apollo-parser required by the TryFrom implementations in this crate.

  • removes tryfrom from apollo-compiler - SimonSapin

    [email protected] can be directly serialised to sdl without requiring apollo-encoder. the tryfrom implementation is therefore no longer necessary.

0.4.0 - 2023-08-21

BREAKING

0.3.2 - 2023-01-18

Features

Fixes

  • TryFrom for enums to use std::Result, continuation of [390], bnjjj in 428
  • Break infinite loop in input string generation, SimonSapin in 427

0.3.1 - 2022-11-29

This is a re-publish of 0.3.0 with fixed dependency versions.

0.3.0 - 2022-11-29 (YANKED)

BREAKING

  • make conversions from apollo-parser types fallible - goto-bus-stop, pull/371

    The parser-impl feature flag contains conversion code from apollo-parser AST node types to apollo-smith types. With this change, those conversions now use the TryFrom trait instead of the From trait, and return errors instead of panicking.

    You now have to use the try_from() and try_into() methods instead of from() and into().

0.2.0 - 2022-11-08

BREAKING

  • update [email protected] - lrlna, pull/340, pull/348

    This change was first released in the [email protected] patch release. It should have been a breaking change, as the update to the new version requires users to also update apollo-parser to 0.3.0 at the same time.

    This version is identical to 0.1.5 except for the version number. apollo-smith versions 0.1.4 and 0.1.5 have been yanked.

0.1.5 - 2022-11-04 (YANKED)

Maintenance

0.1.4 - 2022-11-04 (YANKED)

Maintenance

0.1.3 - 2022-05-12

Fixes

  • add interface definition to internal stack - bnjjj, pull/213

    Added support of interface definition in the stack to fill an operation with correct fields.

0.1.2 - 2022-04-28

Maintenance

  • Update apollo-encoder to 0.3.0 - lrlna, pull/207 pull/208 apollo-encoder's 0.3.0 changes desciption and default-value setters to accept String as a parameter. This changes the internals of apollo-smith accordingly.

0.1.1 - 2022-04-01

Features

  • Add parser-impl feature flag - bnjjj, pull/197 parser-impl feature in apollo-smith is used to convert apollo-parser types to apollo-smith types. This is useful when you require the test-case generator to generate documents based on a given schema.

    ## Cargo.toml
    
    [dependencies]
    apollo-smith = { version = "0.1.1", features = ["parser-impl"] }
    use std::fs;
    
    use apollo_parser::Parser;
    use apollo_smith::{Document, DocumentBuilder};
    
    use libfuzzer_sys::arbitrary::{Result, Unstructured};
    
    /// This generate an arbitrary valid GraphQL operation
    pub fn generate_valid_operation(input: &[u8]) {
    
        let parser = Parser::new(&fs::read_to_string("supergraph.graphql").expect("cannot read file"));
    
        let tree = parser.parse();
        if !tree.errors().is_empty() {
            panic!("cannot parse the graphql file");
        }
    
        let mut u = Unstructured::new(input);
    
        // Convert `apollo_parser::Document` into `apollo_smith::Document`.
        let apollo_smith_doc = Document::from(tree.document());
    
        // Create a `DocumentBuilder` given an existing document to match a schema.
        let mut gql_doc = DocumentBuilder::with_document(&mut u, apollo_smith_doc)?;
        let operation_def = gql_doc.operation_definition()?.unwrap();
    
        Ok(operation_def.into())
    }
  • Introduces semantic validations to the test-case generation - bnjjj, pull/197

    Semantic validations currently include:

    • Directives used in the document must already be defined
    • Directives must be unique in a given Directive Location
    • Default values must be of correct type
    • Input values must be of correct type
    • All type extensions are applied to an existing type
    • Field arguments in fragments and operation definitions must be defined on original type and must be of correct type

0.1.0 - 2021-02-18

Introducing apollo-smith!

The goal of apollo-smith is to generate valid GraphQL documents by sampling from all available possibilities of GraphQL grammar.

We've written apollo-smith to use in fuzzing, but you may wish to use it for anything that requires GraphQL document generation.

apollo-smith is inspired by bytecodealliance's wasm-smith crate, and the article written by Nick Fitzgerald on writing test case generators in Rust.

This is still a work in progress, for outstanding issues, checkout out the apollo-smith label in our issue tracker.