Port tests to oauth module and fix errors
							parent
							
								
									b6c0d58438
								
							
						
					
					
						commit
						fd5ba0fab9
					
				@ -1,19 +1,101 @@
 | 
			
		||||
import { serve } from "bun";
 | 
			
		||||
import { describe } from "bun:test";
 | 
			
		||||
import { describe, expect, it } from "bun:test";
 | 
			
		||||
import {
 | 
			
		||||
  createJSONResponse,
 | 
			
		||||
  findResourceInstance,
 | 
			
		||||
  runTerraformInit,
 | 
			
		||||
  runTerraformApply,
 | 
			
		||||
  testRequiredVariables,
 | 
			
		||||
} from "../test";
 | 
			
		||||
 | 
			
		||||
describe("jfrog-oauth", async () => {
 | 
			
		||||
  await runTerraformInit(import.meta.dir);
 | 
			
		||||
 | 
			
		||||
  const fakeFrogHostAndPort = "localhost:8081";
 | 
			
		||||
  const fakeFrogUrl = `http://${fakeFrogHostAndPort}`;
 | 
			
		||||
 | 
			
		||||
  it("can run apply with required variables", async () => {
 | 
			
		||||
    testRequiredVariables(import.meta.dir, {
 | 
			
		||||
      agent_id: "some-agent-id",
 | 
			
		||||
    jfrog_url: "http://localhost:8081",
 | 
			
		||||
      jfrog_url: fakeFrogUrl,
 | 
			
		||||
      package_managers: "{}",
 | 
			
		||||
    });
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
//TODO add more tests
 | 
			
		||||
  it("generates an npmrc with scoped repos", async () => {
 | 
			
		||||
    const state = await runTerraformApply(import.meta.dir, {
 | 
			
		||||
      agent_id: "some-agent-id",
 | 
			
		||||
      jfrog_url: fakeFrogUrl,
 | 
			
		||||
      package_managers: JSON.stringify({
 | 
			
		||||
        npm: ["global", "@foo:foo", "@bar:bar"],
 | 
			
		||||
      }),
 | 
			
		||||
    });
 | 
			
		||||
    const coderScript = findResourceInstance(state, "coder_script");
 | 
			
		||||
    const npmrcStanza = `cat << EOF > ~/.npmrc
 | 
			
		||||
email=default@example.com
 | 
			
		||||
registry=${fakeFrogUrl}/artifactory/api/npm/global
 | 
			
		||||
//${fakeFrogHostAndPort}/artifactory/api/npm/global/:_authToken=
 | 
			
		||||
@foo:registry=${fakeFrogUrl}/artifactory/api/npm/foo
 | 
			
		||||
//${fakeFrogHostAndPort}/artifactory/api/npm/foo/:_authToken=
 | 
			
		||||
@bar:registry=${fakeFrogUrl}/artifactory/api/npm/bar
 | 
			
		||||
//${fakeFrogHostAndPort}/artifactory/api/npm/bar/:_authToken=
 | 
			
		||||
 | 
			
		||||
EOF`;
 | 
			
		||||
    expect(coderScript.script).toContain(npmrcStanza);
 | 
			
		||||
    expect(coderScript.script).toContain('jf npmc --global --repo-resolve "global"');
 | 
			
		||||
    expect(coderScript.script).toContain('if [ -z "YES" ]; then\n  not_configured npm');
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  it("generates a pip config with extra-indexes", async () => {
 | 
			
		||||
    const state = await runTerraformApply(import.meta.dir, {
 | 
			
		||||
      agent_id: "some-agent-id",
 | 
			
		||||
      jfrog_url: fakeFrogUrl,
 | 
			
		||||
      package_managers: JSON.stringify({
 | 
			
		||||
        pypi: ["global", "foo", "bar"],
 | 
			
		||||
      }),
 | 
			
		||||
    });
 | 
			
		||||
    const coderScript = findResourceInstance(state, "coder_script");
 | 
			
		||||
    const pipStanza = `cat << EOF > ~/.pip/pip.conf
 | 
			
		||||
[global]
 | 
			
		||||
index-url = https://default:@${fakeFrogHostAndPort}/artifactory/api/pypi/global/simple
 | 
			
		||||
extra-index-url =
 | 
			
		||||
    https://default:@${fakeFrogHostAndPort}/artifactory/api/pypi/foo/simple
 | 
			
		||||
    https://default:@${fakeFrogHostAndPort}/artifactory/api/pypi/bar/simple
 | 
			
		||||
 | 
			
		||||
EOF`;
 | 
			
		||||
    expect(coderScript.script).toContain(pipStanza);
 | 
			
		||||
    expect(coderScript.script).toContain('jf pipc --global --repo-resolve "global"');
 | 
			
		||||
    expect(coderScript.script).toContain('if [ -z "YES" ]; then\n  not_configured pypi');
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  it("registers multiple docker repos", async () => {
 | 
			
		||||
    const state = await runTerraformApply(import.meta.dir, {
 | 
			
		||||
      agent_id: "some-agent-id",
 | 
			
		||||
      jfrog_url: fakeFrogUrl,
 | 
			
		||||
      package_managers: JSON.stringify({
 | 
			
		||||
        docker: ["foo.jfrog.io", "bar.jfrog.io", "baz.jfrog.io"],
 | 
			
		||||
      }),
 | 
			
		||||
    });
 | 
			
		||||
    const coderScript = findResourceInstance(state, "coder_script");
 | 
			
		||||
    const dockerStanza = `register_docker "foo.jfrog.io"
 | 
			
		||||
register_docker "bar.jfrog.io"
 | 
			
		||||
register_docker "baz.jfrog.io"`;
 | 
			
		||||
    expect(coderScript.script).toContain(dockerStanza);
 | 
			
		||||
    expect(coderScript.script).toContain('if [ -z "YES" ]; then\n  not_configured docker');
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  it("sets goproxy with multiple repos", async () => {
 | 
			
		||||
    const state = await runTerraformApply(import.meta.dir, {
 | 
			
		||||
      agent_id: "some-agent-id",
 | 
			
		||||
      jfrog_url: fakeFrogUrl,
 | 
			
		||||
      package_managers: JSON.stringify({
 | 
			
		||||
        go: ["foo", "bar", "baz"],
 | 
			
		||||
      }),
 | 
			
		||||
    });
 | 
			
		||||
    const proxyEnv = findResourceInstance(state, "coder_env", "goproxy");
 | 
			
		||||
    const proxies = `https://default:@${fakeFrogHostAndPort}/artifactory/api/go/foo,https://default:@${fakeFrogHostAndPort}/artifactory/api/go/bar,https://default:@${fakeFrogHostAndPort}/artifactory/api/go/baz`;
 | 
			
		||||
    expect(proxyEnv["value"]).toEqual(proxies);
 | 
			
		||||
    
 | 
			
		||||
    const coderScript = findResourceInstance(state, "coder_script");
 | 
			
		||||
    expect(coderScript.script).toContain('jf goc --global --repo-resolve "foo"');
 | 
			
		||||
    expect(coderScript.script).toContain('if [ -z "YES" ]; then\n  not_configured go');
 | 
			
		||||
  });
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
					Loading…
					
					
				
		Reference in New Issue