Solid Test Suite Update December 2019
	  
        
	
	
	  Goal
	  Overarching goal
	    
	  
	  Produce test suites that can be used to verify the
	  compliance of any server implementation to the Solid
	  specifications
	  
	  
	
	
	  
	    What it is not
	  
	  
	    - Finished
 
	    - Unit or integration tests for internal use
 
	    - Tests to verify that apps work correctly, or has
	    certain values 
 
	    - A reimplementation of existing test suites
 
	    - A complete verification of certain workflows, like
	    Data Portability
 
	  
	
	
	  Project up to now
	  
	    - I have tightened the framework
	    code
 
	    - Incorporated the feedback from Oxford
	    meeting
 
	    - Made many experiments to see how
	    
	      - the RDF can be made most human-readable
 
	      - have a high degree of test reuse
 
	    
 
	    - Created an EARL formatter for test
	    results
 
	    - Started writing tests to verify Solid
	    as of now
 
	    - I've been working mostly with Sarven
	    on the specification
 
	  
	  
	  
	
  The test suite
  
  
    
  
  
  
  Anatomy of tests, updated
  
    
:test_bob_r_nr a test:AutomatedTest ;
    test:purpose "Check that Bob can only read Non-RDF resource when he is authorized read only."@en ;
    test:test_script <http://example.org/httplist#http_req_res_list> ;
    test:params [
        <http://example.org/httplist/param#bearer> <https://idp.test.solidproject.org/tokens/BOB_ID_GOOD> ;
        test:steps (
            [
                test:request :test_bob_nr_read_req ;
                test:response_assertion :ok_res ;
            ]
            [
                test:request :test_bob_nr_head_req ;
                test:response_assertion :ok_res ;
	    ]
	    [ ... ]	
        )
    ] .
    
  
  TAP::Formatter::EARL
  
  
    - TAP = Test Anything Protocol
 
    - EARL = Evaluation and Report Language
 
    - Can be used on any TAP output
 
    - 
      All testers should output EARL for reports
  
 
  - Current formatter creates only basic output
 
  - I wasn't impressed with available parser classes
 
  
  At crossroads
  
    - Complete focus on specification writing
 
    - Write tests for current state of Solid
 
    - Pursue Beautiful Linked Data
 
  
  
  State of the Art Tests
  
  
    To put firmly down how Solid works now.
  
  Invalid authentication tokens
 
  
    
    Test status codes returned by using all HTTP methods with varying
    permissions for
    
    
      - 
	RDF sources
      
 
      - Non-RDF sources
 
      - Containers
 
    
    Without using LDP
   
    
  
  
    Findings
    
      - NSS5 has a problematic relationship towards invalid tokens
 
      - Solid does not require client to supply LDP interaction models in NSS5
 
      - With the hierarchy decision, LDP
      client-supplied interaction models are technically
      redundant
 
      - Suggests that the important part of LDP are the LDP-server-managed triples
 
    
    
    
  
    
  Test reuse within the framework
  
    - Dimensions can be added: E.g. LDP
    interaction model
 
    - Imaginebly many dimensions. Likely to
    see a combinatorial explosion.
    
 
    - Simpler: Merging files to add relevant
    tests  or generate RDF using SPARQL
    CONSTRUCT
 
  
 
  
    Lament of the lonesome developer
    Largely been a one-man show
    Difficult to incorporate feedback when it occurs on a quarterly
    basis
     
  
    
  Now, lets write specs